[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n  \"changelog\": \"@changesets/cli/changelog\",\n  \"commit\": false,\n  \"fixed\": [],\n  \"linked\": [],\n  \"access\": \"restricted\",\n  \"baseBranch\": \"main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": []\n}\n"
  },
  {
    "path": ".dockerignore",
    "content": ".git\napps/angular-example\napps/docs\nnode_modules/\n**/node_modules/"
  },
  {
    "path": ".github/workflows/publish.yaml",
    "content": "name: Changesets\non:\n  push:\n    branches:\n      - main\nenv:\n  CI: true\n  PNPM_CACHE_FOLDER: .pnpm-store\njobs:\n  version:\n    timeout-minutes: 15\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout code repository\n        uses: actions/checkout@v3\n        with:\n          fetch-depth: 0\n      - name: setup node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: \"22.8.0\"\n      - uses: pnpm/action-setup@v2\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.9.0\n          run_install: false\n      - name: Setup npmrc\n        run: echo \"//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}\" > .npmrc\n      - name: setup pnpm config\n        run: pnpm config set store-dir $PNPM_CACHE_FOLDER\n      - name: install dependencies\n        run: pnpm install --frozen-lockfile\n      - name: build\n        run: pnpm run build:packages\n      - name: create and publish versions\n        uses: changesets/action@v1\n        with:\n          commit: \"chore: update versions\"\n          title: \"chore: update versions\"\n          publish: pnpm ci:publish --no-git-checks\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/pull_request.yaml",
    "content": "name: Lint and Format\n\non:\n  push:\n  pull_request:\n\njobs:\n  quality:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Setup Biome\n        uses: biomejs/setup-biome@v2\n        with:\n          version: latest\n      - name: Run Biome\n        run: biome ci .\n"
  },
  {
    "path": ".github/workflows/tests.yaml",
    "content": "name: Package Tests\n\non:\n  push:\n    paths:\n      - \"packages/**\"\n  pull_request:\n    paths:\n      - \"packages/**\"\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v3\n      - name: Use Node.js\n        uses: actions/setup-node@v3\n        with:\n          node-version: \"22.8.0\"\n\n      - uses: pnpm/action-setup@v2\n        name: Install pnpm\n        id: pnpm-install\n        with:\n          version: 9.9.0\n          run_install: false\n\n      - name: Get pnpm store directory\n        id: pnpm-cache\n        shell: bash\n        run: |\n          echo \"STORE_PATH=$(pnpm store path)\" >> $GITHUB_OUTPUT\n\n      - uses: actions/cache@v3\n        name: Setup pnpm cache\n        with:\n          path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}\n          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}\n          restore-keys: |\n            ${{ runner.os }}-pnpm-store-\n\n      - name: Install dependencies\n        run: pnpm install\n      - run: pnpm i\n      - run: pnpm build:packages\n      - run: pnpm test:packages\n"
  },
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\nnode_modules\n.pnp\n.pnp.js\n\n# testing\ncoverage\n\n# next.js\n.next/\nout/\nbuild\n\n# misc\n.env\n.idea\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# turbo\n.turbo\n"
  },
  {
    "path": ".nvmrc",
    "content": "22.8.0"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\"svelte.svelte-vscode\"]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"editor.formatOnSave\": true,\n  \"[svelte]\": {\n    \"editor.defaultFormatter\": \"svelte.svelte-vscode\"\n  },\n  \"[typescript][typescriptreact][typescriptangular][json]\": {\n    \"editor.defaultFormatter\": \"biomejs.biome\"\n  },\n  \"editor.codeActionsOnSave\": {\n    \"quickfix.biome\": \"explicit\"\n  }\n}\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM node:20-alpine AS base\nENV PNPM_HOME=\"/pnpm\"\nENV PATH=\"$PNPM_HOME:$PATH\"\nRUN corepack enable\n\nFROM base AS builder\nRUN apk update && apk add --no-cache libc6-compat\n# Set working directory\nWORKDIR /app\nCOPY . .\nRUN pnpm add -g turbo\nRUN turbo prune web --docker\n \n# Add lockfile and package.json's of isolated subworkspace\nFROM base AS installer\nRUN apk add --no-cache libc6-compat\nRUN apk update\nWORKDIR /app\n \n# First install the dependencies (as they change less often)\nCOPY .gitignore .gitignore\nCOPY --from=builder /app/out/json/ .\nCOPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml\n# COPY --from=builder /app/tsconfig.json ./tsconfig.json\nRUN pnpm install\n \n# Build the project\nCOPY --from=builder /app/out/full/ .\nRUN pnpm turbo run build --filter=web...\n \nFROM base AS runner\nWORKDIR /app\n\n# Don't run production as root\nRUN addgroup --system --gid 1001 nodejs\nRUN adduser --system --uid 1001 nextjs\nUSER nextjs\n \nCOPY --from=installer /app/apps/web/next.config.mjs .\nCOPY --from=installer /app/apps/web/package.json .\n \n# Automatically leverage output traces to reduce image size\n# https://nextjs.org/docs/advanced-features/output-file-tracing\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/standalone ./\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/prisma ./apps/web/prisma\n\n\n\n# Set your entrypoint script as the entrypoint\nWORKDIR /app/apps/web\nCMD [\"npm\", \"run\", \"start:docker\"]"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU Affero General Public License is a free, copyleft license for\nsoftware and other kinds of works, specifically designed to ensure\ncooperation with the community in the case of network server software.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nour General Public Licenses are intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  Developers that use our General Public Licenses protect your rights\nwith two steps: (1) assert copyright on the software, and (2) offer\nyou this License which gives you legal permission to copy, distribute\nand/or modify the software.\n\n  A secondary benefit of defending all users' freedom is that\nimprovements made in alternate versions of the program, if they\nreceive widespread use, become available for other developers to\nincorporate.  Many developers of free software are heartened and\nencouraged by the resulting cooperation.  However, in the case of\nsoftware used on network servers, this result may fail to come about.\nThe GNU General Public License permits making a modified version and\nletting the public access it on a server without ever releasing its\nsource code to the public.\n\n  The GNU Affero General Public License is designed specifically to\nensure that, in such cases, the modified source code becomes available\nto the community.  It requires the operator of a network server to\nprovide the source code of the modified version running there to the\nusers of that server.  Therefore, public use of a modified version, on\na publicly accessible server, gives the public access to the source\ncode of the modified version.\n\n  An older license, called the Affero General Public License and\npublished by Affero, was designed to accomplish similar goals.  This is\na different license, not a version of the Affero GPL, but Affero has\nreleased a new version of the Affero GPL which permits relicensing under\nthis license.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU Affero General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Remote Network Interaction; Use with the GNU General Public License.\n\n  Notwithstanding any other provision of this License, if you modify the\nProgram, your modified version must prominently offer all users\ninteracting with it remotely through a computer network (if your version\nsupports such interaction) an opportunity to receive the Corresponding\nSource of your version by providing access to the Corresponding Source\nfrom a network server at no charge, through some standard or customary\nmeans of facilitating copying of software.  This Corresponding Source\nshall include the Corresponding Source for any work covered by version 3\nof the GNU General Public License that is incorporated pursuant to the\nfollowing paragraph.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the work with which it is combined will remain governed by version\n3 of the GNU General Public License.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU Affero General Public License from time to time.  Such new versions\nwill be similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU Affero General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU Affero General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU Affero General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU Affero General Public License as published\n    by the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU Affero General Public License for more details.\n\n    You should have received a copy of the GNU Affero General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If your software can interact with users remotely through a computer\nnetwork, you should also make sure that it provides a way for users to\nget its source.  For example, if your program is a web application, its\ninterface could display a \"Source\" link that leads users to an archive\nof the code.  There are many ways you could offer source, and different\nsolutions will be better for different programs; see section 13 for the\nspecific requirements.\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU AGPL, see\n<https://www.gnu.org/licenses/>.\n"
  },
  {
    "path": "README.md",
    "content": "![Abby Banner](./apps/web/public/og.png)\n\n# About Abby\n\nAbby is a open source feature management and A/B testing platform. It is designed to be easy to use and easy to integrate into your existing applications. It aims to improve the developer experience by providing a simple and statically typed API for feature management and A/B testing.\n\nBesides its official SDKS it also offers a friendly and easy to understand Dashboard for the non-developers in your team.\n\nAbby focuses on privacy. This means it won't track any personalized user data and uses no marketing cookies.\nYou can self host it or use the hosted version available at [tryabby.com](https://www.tryabby.com).\n\n## Getting Started\n\n_TL;DR:_\n\n```\ngit clone git@github.com:tryabby/abby.git\npnpm i\npnpm build:packages\npnpm db:start\ncp apps/web/.env.example apps/web/.env\npnpm db:migrate\npnpm dev\n```\n\n1. **Open the Application**:\n   - Go to `http://localhost:3000` in your browser.\n\n2. **Sign Up**:\n   - Select \"Continue with Email\" and enter your email.\n\n3. **Email Verification**:\n   - Open `http://localhost:8025` in a new tab for MailHog.\n   - Find and open the email from your application.\n\n4. **Complete Registration**:\n   - Click the one-time link in the email to verify and finish account setup.\n\nTo create an account, you should choose the \"Continue with Email\" option. The docker-compose.yml includes a [MailHog](https://github.com/mailhog/MailHog) instance at `localhost:8025`, which intercepts the email, so you can get the one-time link from there.\n\n## What's inside?\n\nThis turborepo uses [pnpm](https://pnpm.io) as a package manager. It includes the following packages/apps:\n\n### Apps and Packages\n\n- `docs`: a [Next.js](https://nextjs.org/) with [Nextra](https://nextra.site/)\n- `web`: another [Next.js](https://nextjs.org/) app using the [T3 Stack](https://create.t3.gg/)\n- `core`: The Abby core JavaScript SDK which all other JS SDKs are based on\n- `react`: The Abby React SDK\n- `next`: The Abby Next.js SDK\n- `angular`: The Abby Angular SDK\n- `svelte`: The Abby Svelte SDK\n\nEach package/app is 100% [TypeScript](https://www.typescriptlang.org/).\n\n### Utilities\n\nThis turborepo has some additional tools already setup for you:\n\n- [TypeScript](https://www.typescriptlang.org/) for static type checking\n- [ESLint](https://eslint.org/) for code linting\n- [Prettier](https://prettier.io) for code formatting\n\n## Useful Links\n\nLearn more about the power of Turborepo:\n\n- [Pipelines](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks)\n- [Caching](https://turbo.build/repo/docs/core-concepts/caching)\n- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching)\n- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering)\n- [Configuration Options](https://turbo.build/repo/docs/reference/configuration)\n- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference)\n"
  },
  {
    "path": "TRACKING.md",
    "content": "# Tracking\n\nThe following table shows what we are tracking on our landing page and through\nour API.\n\n| Event Name                 | Triggered when                                                                                                                           | Additional properties                                                               |\n| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |\n| Sign Up Clicked            | a user clicks the Signup Button on the landing page                                                                                      | None                                                                                |\n| Plan Selected              | a user tries to register for a plan on the landing page                                                                                  | Plan: The plan the user has chosen                                                  |\n| Plan Upgrade Clicked       | a user tries to upgrade their plan on the dashboard                                                                                      | Plan: The plan the user is trying to upgrade to                                     |\n| Project Created            | a user creates a new project on the dashboard                                                                                            | None                                                                                |\n| AB-Test Created            | a user creates a new AB-Test on the dashboard                                                                                            | Amount Of Variants: The amount of variants associated with the new AB-Test          |\n| Environment Created        | a user creates a new environment on the dashboard                                                                                        | None                                                                                |\n| Feature Flag Created       | a user creates a new feature flag on the dashboard                                                                                       | Feature Flag Type: The type of feature flag created (Boolean, String, Number, Json) |\n| Devtools Opened            | a user tries the devtools for the first time                                                                                             | None                                                                                |\n| API Project Data Retrieved | an API call to the endpoint for retrieving the Abby settings for a project, has been sent (We do not track the User-Agent, in this case) |                                                                                     |\n"
  },
  {
    "path": "apps/cdn/.gitignore",
    "content": "node_modules\ndist\n.wrangler\n.dev.vars\n\n# Change them to your taste:\nwrangler.toml\npackage-lock.json\nyarn.lock\npnpm-lock.yaml"
  },
  {
    "path": "apps/cdn/README.md",
    "content": "```\nnpm install\nnpm run dev\n```\n\n```\nnpm run deploy\n```\n"
  },
  {
    "path": "apps/cdn/package.json",
    "content": "{\n  \"name\": \"@tryabby/cdn\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"wrangler dev src/index.ts\",\n    \"deploy\": \"wrangler deploy --minify src/index.ts\"\n  },\n  \"dependencies\": {\n    \"hono\": \"^4.5.8\"\n  },\n  \"devDependencies\": {\n    \"@tryabby/core\": \"workspace:*\",\n    \"@cloudflare/workers-types\": \"^4.20231218.0\",\n    \"wrangler\": \"^3.22.0\"\n  }\n}\n"
  },
  {
    "path": "apps/cdn/src/index.ts",
    "content": "import { ABBY_WINDOW_KEY, type AbbyDataResponse } from \"@tryabby/core\";\nimport { Hono } from \"hono\";\nimport { ZoneCache } from \"./lib/cache\";\n\nimport { cors } from \"hono/cors\";\nimport { logger } from \"hono/logger\";\nimport { timing } from \"hono/timing\";\nimport { ConfigService } from \"./lib/config\";\n\nconst cache = new ZoneCache<{\n  config: AbbyDataResponse;\n}>({\n  cloudflareApiKey: \"\",\n  domain: \"cache.tryabby.com\",\n  fresh: 60 * 1000,\n  stale: 60 * 1000,\n  zoneId: \"\",\n});\n\nconst configCache = new ConfigService(cache);\n\nconst app = new Hono()\n  .use(\n    \"*\",\n    cors({\n      origin: \"*\",\n      maxAge: 60 * 60 * 24 * 30,\n    })\n  )\n  .use(\"*\", timing())\n  .use(\"*\", logger())\n  .get(\"/:projectId/:environment\", async (c) => {\n    const environment = c.req.param(\"environment\");\n    const projectId = c.req.param(\"projectId\");\n\n    const [data, , reason] = await configCache.retrieveConfig({\n      c,\n      environment,\n      projectId,\n    });\n\n    c.header(\"x-abby-cache\", reason);\n    return c.json(data);\n  })\n  .get(\"/:projectId/:environment/script.js\", async (c) => {\n    const environment = c.req.param(\"environment\");\n    const projectId = c.req.param(\"projectId\");\n\n    const [data, , reason] = await configCache.retrieveConfig({\n      c,\n      environment,\n      projectId,\n    });\n\n    c.header(\"x-abby-cache\", reason);\n\n    const script = `window.${ABBY_WINDOW_KEY} = ${JSON.stringify(data)};`;\n\n    return c.text(script, {\n      headers: {\n        \"Content-Type\": \"application/javascript\",\n      },\n    });\n  });\n\nexport default app;\n"
  },
  {
    "path": "apps/cdn/src/lib/cache.ts",
    "content": "import type { Context } from \"hono\";\n\nexport type CacheConfig = {\n  /**\n   * How long an entry should be fresh in milliseconds\n   */\n  fresh: number;\n\n  /**\n   * How long an entry should be stale in milliseconds\n   *\n   * Stale entries are still valid but should be refreshed in the background\n   */\n  stale: number;\n};\n\nexport type Entry<TValue> = {\n  value: TValue;\n};\n\nexport type ZoneCacheConfig = CacheConfig & {\n  domain: string;\n  zoneId: string;\n  /**\n   * This token must have at least\n   */\n  cloudflareApiKey: string;\n};\n\nexport class ZoneCache<TNamespaces extends Record<string, unknown>> {\n  private readonly config: ZoneCacheConfig;\n\n  constructor(config: ZoneCacheConfig) {\n    this.config = config;\n  }\n\n  private createCacheKey<TName extends keyof TNamespaces>(\n    namespace: TName,\n    key: string,\n    cacheBuster = \"v1\"\n  ): URL {\n    return new URL(\n      `https://${this.config.domain}/cache/${cacheBuster}/${String(namespace)}/${key}`\n    );\n  }\n\n  public async get<TName extends keyof TNamespaces>(\n    _c: Context,\n    namespace: TName,\n    key: string\n  ): Promise<\n    [TNamespaces[TName] | undefined, \"stale\" | \"hit\" | \"miss\" | \"error\"]\n  > {\n    try {\n      const res = await caches.default.match(\n        new Request(this.createCacheKey(namespace, key))\n      );\n      if (!res) {\n        return [undefined, \"miss\"];\n      }\n      const entry = (await res.json()) as Entry<TNamespaces[TName]>;\n\n      return [entry.value, \"hit\"];\n    } catch (e) {\n      console.error(\"zone cache error:\", e);\n      return [undefined, \"error\"];\n    }\n  }\n\n  public async set<TName extends keyof TNamespaces>(\n    _c: Context,\n    namespace: TName,\n    key: string,\n    value: TNamespaces[TName] | null\n  ): Promise<void> {\n    const entry: Entry<TNamespaces[TName] | null> = {\n      value: value,\n    };\n    const req = new Request(this.createCacheKey(namespace, key));\n    const res = new Response(JSON.stringify(entry), {\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"Cache-Control\": \"public, s-maxage=60\",\n      },\n    });\n\n    await caches.default.put(req, res);\n  }\n}\n"
  },
  {
    "path": "apps/cdn/src/lib/config.ts",
    "content": "import { type AbbyDataResponse, HttpService } from \"@tryabby/core\";\n\nimport type { Context } from \"hono\";\nimport { endTime, startTime } from \"hono/timing\";\nimport type { ZoneCache } from \"./cache\";\n\nexport class ConfigService {\n  constructor(\n    private readonly cache: ZoneCache<{\n      config: AbbyDataResponse;\n    }>\n  ) {}\n\n  async retrieveConfig({\n    environment,\n    projectId,\n    c,\n  }: {\n    projectId: string;\n    environment: string;\n    c: Context;\n  }) {\n    const cacheKey = [projectId, environment].join(\",\");\n\n    startTime(c, \"cacheRead\");\n    const [cachedData, reason] = await this.cache.get(c, \"config\", cacheKey);\n\n    endTime(c, \"cacheRead\");\n\n    if (cachedData) {\n      return [cachedData, true, reason] as const;\n    }\n\n    startTime(c, \"remoteRead\");\n\n    const data = await HttpService.getProjectData({\n      projectId,\n      environment,\n    });\n\n    if (!data) {\n      throw new Error(\"Failed to fetch data\");\n    }\n\n    endTime(c, \"remoteRead\");\n    c.executionCtx.waitUntil(this.cache.set(c, \"config\", cacheKey, data));\n\n    return [data, false, reason] as const;\n  }\n}\n"
  },
  {
    "path": "apps/cdn/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"strict\": true,\n    \"lib\": [\n      \"esnext\"\n    ],\n    \"types\": [\n      \"@cloudflare/workers-types\"\n    ],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"hono/jsx\"\n  },\n}"
  },
  {
    "path": "apps/docs/.eslintrc.json",
    "content": "{\n  \"root\": true,\n  \"extends\": [\"custom\"]\n}\n"
  },
  {
    "path": "apps/docs/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "apps/docs/CHANGELOG.md",
    "content": "# docs\n\n## 0.2.0\n\n### Minor Changes\n\n- add edge/api function helpers and non-react a/b test function\n"
  },
  {
    "path": "apps/docs/README.md",
    "content": "This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.\n\n[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.\n\nThe `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.\n"
  },
  {
    "path": "apps/docs/next.config.js",
    "content": "const withNextra = require(\"nextra\")({\n  theme: \"nextra-theme-docs\",\n  themeConfig: \"./theme.config.jsx\",\n  defaultShowCopyCode: true,\n});\n\nconst { withPlausibleProxy } = require(\"next-plausible\");\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n  swcMinify: true,\n  // use this to add <html lang=\"en\"> to all pages\n  i18n: {\n    locales: [\"en\"],\n    defaultLocale: \"en\",\n  },\n};\n\nmodule.exports = withPlausibleProxy()(withNextra(nextConfig));\n"
  },
  {
    "path": "apps/docs/package.json",
    "content": "{\n  \"name\": \"docs\",\n  \"version\": \"0.2.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\"\n  },\n  \"dependencies\": {\n    \"@types/node\": \"^18.0.0\",\n    \"@types/react\": \"18.0.26\",\n    \"@types/react-dom\": \"^18.0.5\",\n    \"next\": \"14.1.1\",\n    \"next-plausible\": \"^3.11.3\",\n    \"nextra\": \"2.13.2\",\n    \"nextra-theme-docs\": \"2.13.2\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"typescript\": \"5.5.4\"\n  },\n  \"devDependencies\": {\n    \"tsconfig\": \"workspace:^0.0.0\"\n  }\n}\n"
  },
  {
    "path": "apps/docs/pages/_app.mdx",
    "content": "import PlausibleProvider from \"next-plausible\";\n\nexport default function MyApp({ Component, pageProps }) {\n  return (\n    <PlausibleProvider domain=\"docs.tryabby.com\">\n      <Component {...pageProps} />\n    </PlausibleProvider>\n  );\n}\n"
  },
  {
    "path": "apps/docs/pages/_meta.json",
    "content": "{\n  \"index\": \"Getting Started\",\n  \"integrations\": \"Integrations\",\n  \"reference\": \"Reference\",\n  \"-- Guides --\": {\n    \"type\": \"separator\",\n    \"title\": \"Guides\"\n  },\n  \"nextjs\": \"Next.js\",\n  \"devtools\": \"Devtools\",\n  \"-- Concepts --\": {\n    \"type\": \"separator\",\n    \"title\": \"Concepts\"\n  },\n  \"feature-flags\": \"Feature Flags\",\n  \"remote-config\": \"Remote Configuration\",\n  \"environments\": \"Environments\",\n  \"config\": \"Configuration as Code\",\n  \"user-segments\": \"User Segments\",\n  \"a-b-testing\": \"A/B Tests\",\n  \"-- More --\": {\n    \"type\": \"separator\",\n    \"title\": \"More\"\n  },\n  \"abby_link\": {\n    \"title\": \"Abby ↗\",\n    \"href\": \"https://www.tryabby.com\",\n    \"newWindow\": true\n  }\n}\n"
  },
  {
    "path": "apps/docs/pages/a-b-testing.mdx",
    "content": "# A/B Tests\n\nAbby allows you to define different tests for your application.\nA test is uniquely identified by a name. After creating a test you can define weights for each variant of the test.\nBy default all variants have the same chance.\n\nWhen implementing a test in you application you can show different things depending on the selected variant.\nThe variants will be assigned to users randomly, but the same user will always get the same variant.\nThe assignment of variants uses the defined weights.\n"
  },
  {
    "path": "apps/docs/pages/config.mdx",
    "content": "import { Callout } from \"nextra-theme-docs\";\n\n# Configuration as Code\n\n## Introduction\n\nAbby aims to have the best Developer Experience possible.\nThis is why Abby is fully configurable via Code. No need to click some buttons in a GUI.\nYou `abby.config.ts` (or `abby.config.js`) file is the **single source of truth** for your Abby project.\n\nYour configuration should be written in a file called `abby.config.ts` (or `abby.config.js`) which should be located in the root of your project.\nEvery integration offers a `defineConfig` helper function which offers a typesafe way to define your configuration.\n\n```ts\nimport { defineConfig } from \"@tryabby/core\";\n// or import { defineConfig } from \"@tryabby/<integration>\";\n```\n\nThe config needs to be the default export of the file so that the CLI can find it.\n\n```ts\nimport { defineConfig } from \"@tryabby/core\";\n// or import { defineConfig } from \"@tryabby/<integration>\";\n\nexport default defineConfig(\n  {\n    // your projectId and other sensitive data here\n  },\n  {\n    // your flags, tests, etc. here\n  }\n);\n```\n\n<Callout type=\"info\" emoji=\"💡\">\n  The first parameter includes all data that might be configured via environment variables. You\n  should not use environment variables in the second parameter, because the type inference might\n  suffer and the CLI could potentially resolve those environment variables!\n</Callout>\n\n## Philosophy\n\nThis configuration has two purposes:\n\n#### 1. Integrations\n\nAbby has many integrations to other tools and frameworks. Those can import the config and use it to configure themselves.\nFor example the `@tryabby/nextjs` integration uses the config to configure the Next.js framework. Reading the config makes the integrations fully typesafe\n\n#### 2. CLI\n\nThe [Abby CLI](/reference/cli) uses the config to know what to do. It reads from the config and can then be used to create tests or feature flags on the Abby platform without\nany further configuration.\n\n## Example\n\n```ts\n// abby.config.ts\n\nimport { defineConfig } from \"@tryabby/core\";\n// or import { defineConfig } from \"@tryabby/<integration>\";\n\nexport default defineConfig(\n  {\n    projectId: \"my-project-id\",\n    currentEnvironment: \"development\",\n  },\n  {\n    environments: [\"development\", \"production\"],\n    tests: {\n      SignupButton: {\n        variants: [\"A\", \"B\"],\n      },\n    },\n    flags: [\"showFooter\"],\n    remoteConfig: {\n      customButtonText: \"String\",\n      maxUserCount: \"Number\",\n      AdvancedTestStats: \"JSON\",\n    },\n    settings: {\n      flags: {\n        defaultValue: false,\n        devOverrides: {\n          showFooter: true,\n        },\n      },\n      remoteConfig: {\n        defaultValues: {\n          JSON: {},\n          Number: 0,\n          String: \"\",\n        },\n        devOverrides: {\n          maxUserCount: 40,\n          AdvancedTestStats: {},\n          customButtonText: \"My cool button\",\n        },\n      },\n    },\n  }\n);\n```\n\n## Config Reference\n\nThe `defineConfig` function takes two objects as a parameter, that will be merged together when read.\nThe merged object can contain the following properties:\n\n| Name               | Type      | Required | Description                                                             | details               |\n| ------------------ | --------- | :------: | ----------------------------------------------------------------------- | --------------------- |\n| projectId          | `string`  |    ✅    | The ID of your project in Abby                                          | -                     |\n| apiUrl             | `string`  |          | The URL of the Abby API. Defaults to the hosted version                 | -                     |\n| currentEnvironment | `string`  |    ✅    | The current environment of your application                             | [link](/environments) |\n| tests              | `object`  |          | An object containing your defined A/B Tests                             | -                     |\n| flags              | `array`   |          | An array containing your defined Feature Flag names                     | -                     |\n| remoteConfig       | `object`  |          | An object containing your Remote Configuration variables                | -                     |\n| settings           | `object`  |          | An object with additional settings for Abby                             | -                     |\n| debug              | `boolean` |          | A boolean to show additional debug information                          | -                     |\n| fetch              | `fetch`   |          | You can pass in a custom fetch function. Defaults to `globalThis.fetch` | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: [\"test-flag\"],\n});\n```\n\n#### remoteConfig\n\nThe remoteConfig property is an object containing your Remote Configuration variables and their respective types.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  remoteConfig: {\n    myStringVariable: \"String\",\n    myNumberVariable: \"Number\",\n    myJSONVariable: \"JSON\",\n  },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a fallback boolean value for your Feature Flags, in case you forgot to add them\n  in your dashboard or when they could not be fetched correctly.\n\n  ```json\n  flags: {\n    defaultValue: true,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n  ```json\n  flags: {\n    devOverrides: {\n      showHeader: true,\n      showFooter: false,\n    },\n  },\n  ```\n\n- `remoteConfig.defaultValues`: An object containing default values for each Remote Configuration type.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"Default string value\",\n      Number: 100,\n      JSON: { default: true },\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the variable. The value must be of the same type as the variable.\n\n  ```json\n  remoteConfig: {\n    devOverrides: {\n      myStringVariable: \"dev mode string value\",\n      myNumberVariable: 100,\n      JSON: { devMode: true },\n    },\n  },\n  ```\n\n#### debug\n\nA boolean that you can toggle on to get debug information logged to the console. Mostly useful in development to see where something potentially goes wrong.\n\n#### fetch\n\nYou can pass a custom fetch function in here. This defaults to the global fetch function. This is mostly needed for older versions of Node.js which\ndon't have a global fetch function.\n"
  },
  {
    "path": "apps/docs/pages/devtools.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Devtools\n\nAbby comes with a Devtools that allows you to see the different variants of your A/B Tests and Feature Flags.\nTo use them simply add the `<AbbyDevTools />` component to your app.\n\n## Installation\n\nInstall the `@tryabby/devtools` package using your favorite package manager:\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/devtools\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/devtools\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/devtools \n    ```\n    </Tab>\n</Tabs>\n\n## Configuration\n\nIn order to use the Devtools you will need to wrap them for your specific integration.\n\n<Callout type=\"info\" emoji=\"💡\">\n  The Devtools will be omited in the production build!\n</Callout>\n\n<Tabs items={[\"Next.js\", \"React\"]}>\n  <Tab>\n  \n````tsx\n// lib/abby.ts\nimport { createAbby } from \"@tryabby/next\";\nimport abbyDevtools from \"@tryabby/devtools\";\n\nexport const { AbbyProvider, withAbby, withDevtools } = createAbby({\n  // ...your Config\n});\n\n// Wrap the Devtools for Next.js\nexport const AbbyDevtools = withDevtools(abbyDevtools, { defaultShow: true });\n\n`````\n\n</Tab>\n  <Tab>\n\n````tsx\n// lib/abby.ts\nimport { createAbby } from \"@tryabby/react\";\nimport abbyDevtools from \"@tryabby/devtools\";\n\nexport const { AbbyProvider, withDevtools } = createAbby({\n  // ...your Config\n});\n\n// Wrap the Devtools for React\nexport const AbbyDevtools = withDevtools(abbyDevtools, { defaultShow: true });\n\n\n`````\n\n  </Tab>\n</Tabs>\n\nYou then need to simply place the Devtools inside of your `AbbyProvider`\n\n```tsx\nimport { AbbyProvider, AbbyDevTools } from \"lib/abby\";\n\n// ... your application\nexport function App() {\n  return (\n    <AbbyProvider>\n      <AbbyDevtools />\n      <Component {...pageProps} />\n    </AbbyProvider>\n  );\n}\n```\n\n### Usage\n\nThe devtools will appear on every page if you set `defaultShow: true`.\nOtherwise you can toggle them with <kbd>CMD/CTRL + .</kbd> (or the shortcut you set in the config)\n\n<Callout type=\"warning\" emoji=\"💡\">\n  You will only be able to update feature flags that are consumed via hooks in the current page! If\n  you need to update a feature flag that is consumed via `getFeatureFlagValue` set in the\n  `createAbby` config.\n</Callout>\n"
  },
  {
    "path": "apps/docs/pages/environments.mdx",
    "content": "# Environments\n\nEnvironments in Abby allow you to reflect the different environments that your application may be deployed to.\nFor example, you may have a `development` environment, a `staging` environment, and a `production` environment.\n\nWhen using [Feature Flags](/feature-flags) it is often useful to have different values for the same flag in different environments.\n\n[Remote Configuration variables](/remote-config) can also be controlled per environment.\n\nWhen you create a new Environment all Flags will get a default value of `false` for that environment.\n"
  },
  {
    "path": "apps/docs/pages/feature-flags.mdx",
    "content": "# Feature Flags\n\nA feature flag in Abby is basically just a boolean that can be toggled via the Dashboard in Abby.\nThis is useful for testing new features, or for hiding features that are not yet ready for production.\n\nA feature flag is always toggled for a certain [Environment](/environments) which allows you to test features in different environments.\nFor example, you can have a feature flag that is enabled in the `development` environment, but disabled in the `production` environment.\n\n## Basic Usage\n\nWhen a feature flag is toggled for an environment, every user will see the same value for that feature flag.\nIf you want to test a feature for a specific user, you can use [A/B Tests](/a-b-testing).\n\n## User Segments & Conditional Rules\n\nFeature flags can be made more powerful with user segments and conditional rules. This allows you to dynamically control flag values based on user properties.\n\n### User Properties\n\nFirst, define the properties you want to use for targeting in your user segment schema. Common properties include:\n\n- User role/type (string)\n- Subscription status (boolean)\n- Usage metrics (number)\n- Location (string)\n- Custom attributes specific to your app\n\n### Conditional Rules\n\nOnce you have user properties defined, you can create conditional rules for your feature flags:\n\n- **Single Rules**: Simple conditions like \"role equals admin\" or \"subscriptionActive equals true\"\n- **Rule Groups**: Complex logic combining multiple conditions with AND/OR operators\n- **Operators**: Support for various comparisons:\n  - Strings: equals, not equals, contains, not contains, starts with, ends with, regex\n  - Numbers: equals, not equals, greater than, less than, greater/less than or equal\n  - Booleans: equals\n\n### Example Usage\n\nHere's how it works:\n\n1. Define your user properties in the Abby dashboard\n2. Create rules for your feature flags using these properties\n3. Update user properties in your application code:\n\n```typescript\n// Update user properties\nabby.updateUserProperties({\n  role: \"admin\",\n  subscriptionActive: true,\n  usageCount: 100,\n});\n```\n\nWhen evaluating feature flags, Abby will:\n\n1. Check the environment value first\n2. Evaluate any conditional rules based on user properties\n3. Return the appropriate flag value\n\nThis allows for powerful targeting scenarios like:\n\n- Enable features only for admin users\n- Show premium features to paid subscribers\n- Roll out features gradually based on usage metrics\n- Target specific user segments with custom rules\n"
  },
  {
    "path": "apps/docs/pages/index.mdx",
    "content": "# Introduction\n\nAbby is an open-source, fully-typed Feature Flagging & Remote Config service made for developers.\n\nIt aims to be the simpliest way to do Feature Flags and Remote Configuration variables on your website.\n\nWe tried to make Abby as simple as possible and create the **best** user experience. Therefore we decided to focus on `React` and `Next.js` for now.\n\n## Getting Started\n\nBefore you're able to use Abby, you need to create a free account first.\nAfter you created your account you're able to use Abby. Make sure to read the [React Docs](/integrations/react) to get started.\n\n## Philosophy\n\nHere are some of the things that we believe in:\n\n- **Simplicity** - We believe that A/B testing should be as simple as possible. That's why we created Abby.\n- **Security** - All data is hosted in Europe and the code is open source.\n- **Transparency** - We don't store any user related data, everything is saved anonymously.\n"
  },
  {
    "path": "apps/docs/pages/integrations/_meta.json",
    "content": "{\n  \"nextjs\": \"Next.js\",\n  \"react\": \"React\",\n  \"remix\": \"Remix\",\n  \"svelte\": \"Svelte\",\n  \"angular\": \"Angular\",\n  \"node\": \"Node\",\n  \"express\": \"Express\",\n  \"koa\": \"Koa\"\n}\n"
  },
  {
    "path": "apps/docs/pages/integrations/angular.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Angular\n\nOur Angular integration works with Angular 15 or later.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/core\n    npm i @tryabby/angular\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/core\n    yarn add @tryabby/angular\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/core\n    pnpm i @tryabby/angular \n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\n<Callout>Make sure, that you have set skipLibCheck to true in your tsconfig</Callout>\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your `root` folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/angular\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: environment.production ? \"production\" : \"development\",\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\n### Create your Module\n\nTo use Abby in your code you will need to import the AbbyModule in your app module first. You will need to call AbbyModule.forRoot() method with the configuration object. Please copy the id of your project from the dashboard to get started.\n\n```ts\nimport { AbbyModule } from \"@tryabby/angular\";\nimport abbyConfig from \"../abby.config\";\n\n@NgModule({\n  declarations: [AppComponent],\n  imports: [BrowserModule, AbbyModule.forRoot(abbyConfig)],\n  providers: [],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}\n```\n\n### Using Abby in your Component\n\nYou can now use Abby in your components. You will have access to the `AbbyService` which can be used to get one of your variants, a feature flag, a remote config variable or act on any test.\n\n```tsx\nimport { AbbyService } from '@tryabby/angular';\n\n@Component({...})\nexport class MyComponent {\n  footerVariant$ = this.abbyService.getVariant('footer');\n\n  constructor(private abbyService: AbbyService) { }\n\n  onAct() {\n    this.abbyService.onAct('footer');\n  }\n}\n```\n\n### Using Abby Directives\n\nYou can also use Abby's directives to conditionally render elements based on the variant or feature flag.\n\n```html\n<ng-container *abbyFlag=\"'newFeature'\">\n  <!-- This will only be shown if the newFeature flag is truthy. -->\n  <p>Here is the new feature</p>\n</ng-container>\n\n<ng-container *abbyTest=\"{testName: 'test', variant: 'A'}\">\n  <!-- This will only be shown if the test variant matches the variant. -->\n  <p>Here is Variant A</p>\n</ng-container>\n```\n\nFeature Flags can be inverted by putting a `!` in front of the flagname.\n\n```html\n<ng-container *abbyFlag=\"'!newFeature'\">\n  <!-- This will only be shown if the newFeature flag is falsy. -->\n</ng-container>\n```\n\nFor using variants inside an `ngStyle`-Directive, we advice you to move the logic into the component rather than the template:\n\n```ts\nimport { AbbyService } from '@tryabby/angular';\n\n@Component({...})\nexport class MyComponent {\n  footerVariant$ = this.abbyService.getVariant('footer');\n\n  footerColor$ = this.footerVariant$.pipe(\n    map((footerVariant) => {\n      switch(footerVariant) {\n        case 'dark':\n          return 'black';\n        case 'orange':\n          return 'orange';\n        case 'green':\n          return 'green';\n        default:\n          return 'transparent'\n      }\n    })\n  );\n\n  constructor(private abbyService: AbbyService) { }\n}\n```\n\nYou can then consume the footer color in your template using the `async`-Pipe:\n\n```html\n<div class=\"footer\" [ngStyle]=\"{ 'color': footerColor$ | async }\">Here is a Foooter</div>\n```\n\n### Using Abby Pipes\n\n#### getAbbyVariant\n\nYou can use the `getAbbyVariant` Pipe in your template to get the active variant of an AB Test.\n\n```html\n<p>{ \"MyTestName\" | getAbbyVariant | async }</p>\n```\n\nOptionally, you can pass in a lookup object, to map your variants to a custom type:\n\n```html\n<p>{ \"MyTestName\" | getAbbyVariant: { A: 123, B: 456, C: 789 } | async }</p>\n```\n\n#### getRemoteConfig\n\nYou can use the `getRemoteConfig` Pipe in your template to get the value for a Remote Configuration variable.\n\n```html\n<button>{{ \"customButtonText\" | getAbbyRemoteConfig | async }}</button>\n```\n"
  },
  {
    "path": "apps/docs/pages/integrations/express.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Express\n\nOur Express package allows you to use Abby within all server-side applications.\nIf you're using Node < 18 you will need to also install any fetch polyfill.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/express\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/express\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/express\n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your root folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/node\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: environment.production ? \"production\" : \"development\",\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n    maxSessionCount: \"Number\",\n  },\n});\n```\n\n### Create your Abby instance\n\nTo use Abby in your code you need to call the `createAbby` function\n\n```ts\nimport { createAbby } from \"@tryabby/express\";\nimport abbyConfig from \"../abby.config\";\n\nconst { abby, middleware } = createAbby(abbyConfig);\n```\n\n### Using Abby in your code\n\nYou can now use Abby in your code. Before you can use Abby inside of your route handlers you will need to add the middleware to your Express app.\n\n#### Middleware\n\n```ts\nimport express from \"express\";\nimport { createAbby } from \"@tryabby/express\";\nimport abbyConfig from \"../abby.config\";\n\nconst { abby, middleware } = createAbby(abbyConfig);\n\nconst app = express();\n\napp.use(middleware);\n\napp.get(\"/\", (req, res) => {\n  const testVariant = abby.getTestVariant(\"test\");\n\n  if (testVariant === \"A\") {\n    // show variant A\n  } else {\n    // show variant B\n  }\n});\n\napp.listen(3000, () => {\n  console.log(\"Server listening on port 3000\");\n});\n```\n\n#### Feature Flags\n\nYou can call the `getFeatureFlag` function to get the value of a feature flag.\nSince you loaded all the information from our API this is a synchronous function.\n\n```ts\nif (abby.getFeatureFlag(\"newFeature\")) {\n  // use new algorithm\n} else {\n  // use old algorithm\n}\n```\n\n#### Remote Configs\n\nYou can call the `getRemoteConfig` function to get the value of a remote config.\n\n```ts\nconst maxSessionCount = abby.getRemoteConfig(\"maxSessionCount\");\n\nif (sessionCount < maxSessionCount) {\n  // show session\n} else {\n  // show error\n}\n```\n\n#### A/B Tests\n\nYou can call the `getTestVariant` function to get the variant of a test.\n\n```ts\nconst testVariant = abby.getTestVariant(\"test\");\n\nif (testVariant === \"A\") {\n  // show variant A\n} else {\n  // show variant B\n}\n```\n"
  },
  {
    "path": "apps/docs/pages/integrations/koa.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Koa\n\nOur Koa package allows you to use Abby within all server-side applications.\nIf you're using Node < 18 you will need to also install any fetch polyfill.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/koa\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/koa\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/koa\n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your root folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/node\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: environment.production ? \"production\" : \"development\",\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n    maxSessionCount: \"Number\",\n  },\n});\n```\n\n### Create your Abby instance\n\nTo use Abby in your code you need to call the `createAbby` function\n\n```ts\nimport { createAbby } from \"@tryabby/koa\";\nimport abbyConfig from \"../abby.config\";\n\nconst { abby, middleware } = createAbby(abbyConfig);\n```\n\n### Using Abby in your code\n\nYou can now use Abby in your code. Before you can use Abby inside of your route handlers you will need to add the middleware to your Koa app.\n\n#### Middleware\n\n```ts\nimport Koa from \"Koa\";\nimport { createAbby } from \"@tryabby/koa\";\nimport abbyConfig from \"../abby.config\";\n\nconst { abby, middleware } = createAbby(abbyConfig);\n\nconst app = new Koa();\n\napp.use(middleware);\n\n// ... your routes\n\napp.listen(3000, () => {\n  console.log(\"Server listening on port 3000\");\n});\n```\n\n#### Feature Flags\n\nYou can call the `getFeatureFlag` function to get the value of a feature flag.\nSince you loaded all the information from our API this is a synchronous function.\n\n```ts\nif (abby.getFeatureFlag(\"newFeature\")) {\n  // use new algorithm\n} else {\n  // use old algorithm\n}\n```\n\n#### Remote Configs\n\nYou can call the `getRemoteConfig` function to get the value of a remote config.\n\n```ts\nconst maxSessionCount = abby.getRemoteConfig(\"maxSessionCount\");\n\nif (sessionCount < maxSessionCount) {\n  // show session\n} else {\n  // show error\n}\n```\n\n#### A/B Tests\n\nYou can call the `getTestVariant` function to get the variant of a test.\n\n```ts\nconst testVariant = abby.getTestVariant(\"test\");\n\nif (testVariant === \"A\") {\n  // show variant A\n} else {\n  // show variant B\n}\n```\n"
  },
  {
    "path": "apps/docs/pages/integrations/nextjs.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Next.js\n\nOur Next.js integration works with Next.js 12 or later. It uses the React SDK under the hood and just has some additional features for Next.js.\n\n## Installation\n\nTo get started make sure to install the package using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/next\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/next\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/next \n    ```\n    </Tab>\n</Tabs>\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your `root` folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/next\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: process.env.NODE_ENV,\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\n### Create your Instance\n\nTo use Abby in your code you will need to create a typed Hook and Provider first. You can do this by using the `createAbby` function.\nPlease copy the id of your project from the dashboard to get started.\n\n```tsx\nimport { createAbby } from \"@tryabby/next\";\nimport abbyConfig from \"../abby.config\";\n\nconst { AbbyProvider, useAbby, withAbby } = createAbby(abbyConfig);\n```\n\n### Wrap your Application\n\nYou will need to wrap your application with the `AbbyProvider` to make sure the hook works.\nThis is done in the `_app.tsx` / `_app.js` file in your Next.js project.\n\n```tsx\nimport { AbbyProvider } from \"../lib/abby\";\n\nfunction MyApp({ Component, pageProps }) {\n  return (\n    <AbbyProvider>\n      <Component {...pageProps} />\n    </AbbyProvider>\n  );\n}\n\nexport default MyApp;\n```\n\n<Callout type=\"info\" emoji=\"💡\">\n  If you want to improve the experience read the following section.\n</Callout>\n\nBy default the `AbbyProvider` will fetch the data from the server on the first render (client side). This can be improved by using the `initialData` prop. This will make sure the data is already available on the first render\nThis works really well with Static Site Generation (SSG) and Server Side Rendering (SSR).\n\n```tsx /withAbby(MyApp)/\nimport { AbbyProvider, withAbby } from \"../lib/abby\";\n\nfunction MyApp({ Component, pageProps: { __ABBY_PROJECT_DATA__, ...pageProps } }) {\n  return (\n    <AbbyProvider initialData={__ABBY_PROJECT_DATA__}>\n      <Component {...pageProps} />\n    </AbbyProvider>\n  );\n}\n\nexport default withAbby(MyApp);\n```\n\n## Usage\n\nFor the hook usage please read the [React SDK](/integrations/react#usage) documentation.\n"
  },
  {
    "path": "apps/docs/pages/integrations/node.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Node.js\n\nOur Node.js package allows you to use Abby within all server-side applications.\nIf you're using Node < 18 you will need to also install any fetch polyfill.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/node\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/node\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/node\n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your root folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/node\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: environment.production ? \"production\" : \"development\",\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n    maxSessionCount: \"Number\",\n  },\n});\n```\n\n### Create your Abby instance\n\nTo use Abby in your code you need to call the `createAbby` function\n\n```ts\nimport { createAbby } from \"@tryabby/node\";\nimport abbyConfig from \"../abby.config\";\n\nexport const abby = createAbby(abbyConfig);\n```\n\n### Using Abby in your code\n\nYou can now use Abby in your code.\n\n<Callout type=\"warning\" emoji=\"💡\">\n  Before you're trying to read Feature Flags, Remote Configs or A/B Test you should call the\n  `.loadProjectData()` function. This retrieves all the needed information from our API. If you\n  don't call it fallbacks will be used.\n</Callout>\n\n#### Feature Flags\n\nYou can call the `getFeatureFlag` function to get the value of a feature flag.\nSince you loaded all the information from our API this is a synchronous function.\n\n```ts\nif (abby.getFeatureFlag(\"newFeature\")) {\n  // use new algorithm\n} else {\n  // use old algorithm\n}\n```\n\n#### Remote Configs\n\nYou can call the `getRemoteConfig` function to get the value of a remote config.\n\n```ts\nconst maxSessionCount = abby.getRemoteConfig(\"maxSessionCount\");\n\nif (sessionCount < maxSessionCount) {\n  // show session\n} else {\n  // show error\n}\n```\n\n#### A/B Tests\n\nYou can call the `getTestVariant` function to get the variant of a test.\n\n```ts\nconst testVariant = abby.getTestVariant(\"test\");\n\nif (testVariant === \"A\") {\n  // show variant A\n} else {\n  // show variant B\n}\n```\n"
  },
  {
    "path": "apps/docs/pages/integrations/react.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# React\n\nOur React integration works with React 16.8.0 or later. It works with SPAs as well as server side rendered apps.\n\n<Callout>\n  If you're using Next.js please check out our [Next integration](/integrations/nextjs)\n</Callout>\n\n## Installation\n\nTo get started make sure to install the package using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/react\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/react\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/react \n    ```\n    </Tab>\n</Tabs>\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your `root` folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/react\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: process.env.NODE_ENV,\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\n### Create your Instance\n\nTo use Abby in your code you will need to create a typed Hook and Provider first. You can do this by using the `createAbby` function.\nPlease copy the id of your project from the dashboard to get started.\n\n```jsx\nimport { createAbby } from \"@tryabby/react\";\nimport abbyConfig from \"../abby.config\";\n\nexport const { AbbyProvider, useAbby, useFeatureFlag, useRemoteConfig } = createAbby(abbyConfig);\n```\n\n### Wrap your Application\n\nYou will need to wrap your application with the `AbbyProvider` to make sure the hook works.\nIf you're using Next.js you should do this in the `_app.js` file.\n\nYou can now import the hooks created by `createAbby` and use it in your components.\n\n## Usage\n\n### useAbby\n\nThe `useAbby` hook returns an object with the following values:\n\n- `variant` - The variant that is currently active\n- `onAct` - A function that you can call to trigger any kind of interaction with the tested component (will be used to track conversions)\n\n```tsx\nimport { useAbby } from \"./abby\";\n\nfunction MyButton() {\n  const { variant, onAct } = useAbby(\"footer\");\n  return (\n    <main className=\"p-6\">\n      <h1>Abby Test Page:</h1>\n      <button\n        className={`rounded-lg py-2 px-4 \n        ${variant === \"dark\" && \"bg-gray-900 text-white\"} \n        ${variant === \"orange\" && \"bg-orange-500 text-white\"} \n        ${variant === \"green\" && \"bg-green-500 text-white\"}`}\n        onClick={onAct}\n      >\n        Cool Button\n      </button>\n    </main>\n  );\n}\n```\n\nOptionally, you can pass a lookup object to automatically map the selected variant to a custom value.\n\n```tsx\nimport { useAbby } from \"./abby\";\n\nfunction MyButton() {\n  const { variant, onAct } = useAbby(\"footer\", {\n    dark: \"bg-gray-900\",\n    orange: \"bg-orange-500\",\n    green: \"bg-green-500\",\n  });\n\n  return (\n    <main className=\"p-6\">\n      <h1>Abby Test Page:</h1>\n      <button className={`rounded-lg py-2 px-4 text-white ${variant}`} onClick={onAct}>\n        Cool Button\n      </button>\n    </main>\n  );\n}\n```\n\n### useFeatureFlag\n\nThe `useFeatureFlag` hook returns a boolean value that indicates if the flag is active or not.\n\n```tsx\nimport { useFeatureFlag } from \"./abby\";\n\nfunction HomePage() {\n  const hasNewFeature = useFeatureFlag(\"newFeature\");\n\n  return (\n    <main className=\"p-6\">\n      <h1>Welcome back, User</h1>\n      {hasNewFeature && <p>Here is the new feature</p>}\n      <p>This is our super boring page</p>\n    </main>\n  );\n}\n```\n\n### useRemoteConfig\n\nThe `useRemoteConfig` hook returns a value as specified in your `abby.config.ts`.\nThe type of the returned value will automatically be inferred from your config.\n\n```tsx\nimport { useRemoteConfig } from \"./abby\";\n\nfunction HomePage() {\n  const customButtonText = useRemoteConfig(\"customButtonText\");\n\n  return (\n    <main className=\"p-6\">\n      <h1>Welcome back, User</h1>\n      <button>{customButtonText}</button>\n    </main>\n  );\n}\n```\n"
  },
  {
    "path": "apps/docs/pages/integrations/remix.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Remix\n\nOur Remix integration works with Remix v2 or later. It uses the React SDK under the hood and just has some additional features for Remix.\n\n## Installation\n\nTo get started make sure to install the package using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/remix\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/remix\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/remix \n    ```\n    </Tab>\n</Tabs>\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your `root` folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/remix\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: process.env.NODE_ENV,\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\n### Create your Instance\n\nTo use Abby in your code you will need to create a typed Hook and Provider first. You can do this by using the `createAbby` function.\nPlease copy the id of your project from the dashboard to get started.\n\n```tsx\nimport { createAbby } from \"@tryabby/remix\";\nimport abbyConfig from \"../abby.config\";\n\nconst { AbbyProvider, useAbby } = createAbby(abbyConfig);\n```\n\n### Wrap your Application\n\nYou will need to wrap your application with the `AbbyProvider` to make sure the hook works.\nThis is done in the `root.tsx` / `root.js` file in your Next.js project.\n\n```tsx\nimport { AbbyProvider } from \"../lib/abby\";\n\nexport function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <AbbyProvider>\n          {children}\n          <ScrollRestoration />\n          <Scripts />\n        </AbbyProvider>\n      </body>\n    </html>\n  );\n}\n```\n\n<Callout type=\"info\" emoji=\"💡\">\n  If you want to improve the experience read the following section.\n</Callout>\n\nBy default the `AbbyProvider` will fetch the data from the server on the first render (client side). This can be improved by using a `loader`. This will make sure the data is already available on the first render\nThis allows you to use Server Side Reendering (SSR) with Abby.\nDoing this will prevent Flash of Original Content (FOOC) and improve the user experience.\n\n```tsx /await getAbbyData(ctx)/\nimport { AbbyProvider, getAbbyData } from \"../lib/abby\";\n\nexport const loader = async (ctx) => {\n  return json({\n    ...(await getAbbyData(ctx)),\n  });\n};\n\nexport function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <head>\n        <meta charSet=\"utf-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <Meta />\n        <Links />\n      </head>\n      <body>\n        <AbbyProvider>\n          {children}\n          <ScrollRestoration />\n          <Scripts />\n        </AbbyProvider>\n      </body>\n    </html>\n  );\n}\n\nexport default withAbby(MyApp);\n```\n\n## Usage\n\nFor the hook usage please read the [React SDK](/integrations/react#usage) documentation.\n"
  },
  {
    "path": "apps/docs/pages/integrations/svelte.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Svelte\n\nOur Svelte integration works with Svelte version??? It works with SPAs as well as server side rendered apps.\n\n## Installation\n\nTo get started make sure to install the package using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/svelte\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/svelte\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/svelte \n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\n### Create your config\n\nTo use Abby you need to create your config first. You can do this by creating a file called `abby.config.ts` in your `root` folder. This file will be used to configure your project.\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/svelte\";\n\nexport default defineConfig({\n  projectId: \"<YOUR_PROJECT_ID>\",\n  currentEnvironment: process.env.NODE_ENV,\n  environments: [\"production\", \"development\"],\n  tests: {\n    test: { variants: [\"A\", \"B\"] },\n    footer: { variants: [\"dark\", \"orange\", \"green\"] },\n    // ... your tests\n  },\n  flags: [\"darkMode\", \"newFeature\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\n### Create your Instance\n\nTo use Abby in your code you will need to create a typed Hook and Provider first. You can do this by using the `createAbby` function.\nPlease copy the id of your project from the dashboard to get started.\n\n```jsx\nimport { createAbby } from \"@tryabby/svelte\";\nimport abbyConfig from \"../abby.config\";\n\nconst { AbbyProvider, useAbby } = createAbby(abbyConfig);\n```\n\n### Wrap your Application\n\nYou will need to wrap your application in a layout containing the `AbbyProvider` to make sure the hook works.\n\n```svelte\n//+layout.svelte\n<script lang=\"ts\">\n    import { abby } from \"$lib/abby\";\n    import type { LayoutServerData } from \"./$types\";\n\n    const Provider = abby.AbbyProvider;\n\n    export let data: LayoutServerData;\n    const Devtools = abby.withDevTools();\n</script>\n\n<Provider {data} abby={abby.__abby__}>\n    <Devtools abby={abby.__abby__} props={{ defaultShow: true }} />\n    <slot />\n</Provider>\n\n```\n\nIf you want to use SSR you also need to provide a +layout.server.ts\n\n```tsx\nimport { abby } from \"$lib/abby\";\n\nexport const load = abby.withAbby();\n```\n\nYou can now import the functions created by `createAbby` and use it in your components.\n\n## useAbby\n\nThe `useAbby` function returns an object with the following values:\n\n- `variant` - A store providing the variant which is currently active\n- `onAct` - A function that you can call to trigger any kind of interaction with the tested component (will be used to track conversions)\n\n```svelte\n<script lang=\"ts\">\n\timport { abby } from \"$lib/abby\";\n\tconst { variant, onAct } = abby.useAbby(\"New Test3\");\n</script>\n\n<body>\n\t<h1>Abby Test Page:</h1>\n\t{#if $variant === \"A\"}\n\t\t<button on:click={onAct}> A</button>\n\t{:else}\n\t\t<button on:click={onAct}> B</button>\n\t{/if}\n</body>\n```\n\nOptionally, you can provide a lookup object to map the active to a custom value.\n\n```svelte\n<script lang=\"ts\">\n    import { abby } from \"$lib/abby\";\n    const { variant , onAct } = abby.useAbby(\"test\", {\n        A: \"Hello\",\n        B: \"Goodbye\"\n    });\n</script>\n\n<body>\n    <h1>Abby Test Page:</h1>\n    <p>{ variant } World!</p>\n</body>\n```\n\n## useFeatureFlag\n\nThe `useFeatureFlag` function returns a store providing a boolean value that indicates if the flag is active or not.\n\n```svelte\n<script lang=\"ts\">\n\timport { abby } from \"$lib/abby\";\n\tconst newFeature = abby.useFeatureFlag(\"newFeature\");\n</script>\n\n<body>\n\t{#if $newFeature}\n\t\tmy super secret feature\n\t{/if}\n</body>\n```\n\n## useRemoteConfig\n\nThe `useRemoteConfig` function returns a store providing a custom value as specified in your `abby.config.ts`.\nThe return type will automatically be inferred from your config.\n\n```svelte\n<script lang=\"ts\">\n  import { abby } from \"$lib/abby\";\n  const customButtonText = abby.useRemoteConfig(\"customButtonText\");\n</script>\n\n<body>\n  <button>{$customButtonText}</button>\n</body>\n```\n"
  },
  {
    "path": "apps/docs/pages/nextjs.mdx",
    "content": "import { Tab, Tabs } from \"nextra-theme-docs\";\n\n# Using Abby with Next.js\n\nAbby was built to be the best solution for Feature Flags, A/B Testing and Remote Configuration variables in Next.js.\nIt deeply integrates with Next.js and provides a seamless developer experience.\n\n## Installation\n\nInstall the `@tryabby/next` package using your favorite package manager:\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i @tryabby/next\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add @tryabby/next\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i @tryabby/next \n    ```\n    </Tab>\n</Tabs>\n\n## Configuration\n\nIn order to use Abby you need to create a **free** account at [tryabby.com](https://www.tryabby.com) first.\n\nYou can then use the button in the top right corner of the dashboard to easily copy your Abby config.\n\nCreate a file called `abby.config.ts` in the root folder of your project. That's it! You're ready to go!\n\nFor this example my `abby.config.ts` file looks like this:\n\n```ts\n// abby.config.ts\nimport { defineConfig } from \"@tryabby/next\";\n\nexport default defineConfig({\n  projectId: \"YOUR_PROJECT\",\n  // For testing purposes we only want to use the production environment\n  currentEnvironment: \"production\",\n  environments: [\"production\"],\n  tests: {\n    theme: {\n      variants: [\"light\", \"dark\"],\n    },\n  },\n  flags: [\"useDarkMode\"],\n  remoteConfig: {\n    customButtonText: \"String\",\n  },\n});\n```\n\nAfter that you need to create a file called `lib/abby.ts` in your project.\nThis file will contain all the code (e.g. the Abby hooks) that is needed to integrate Abby into your app.\n\n````ts\n// lib/abby.ts\n\nimport { createAbby } from \"@tryabby/next\";\nimport config from \"../abby.config\";\n\nexport const { withAbby, AbbyProvider, useFeatureFlag, useAbby, withAbbyApiHandler, withAbbyEdge, useRemoteConfig } = createAbby(config);\n\n```\n\nNow you will need to wrap your app with the `AbbyProvider` component. This is done in the `_app.tsx` file.\nIf you also wrap your app with `withAbby`, you will have access to the Feature Flags for Server Side Rendering or Static Generation as well.\n\nThis is highly recommended so that there is no flicker on the inital load of your app. It also allows for proper crawling of your app by search engines.\n\n```tsx\n// _app.tsx\nimport { AbbyProvider } from \"lib/abby\";\n\nfunction MyApp({ Component, pageProps: { __ABBY_PROJECT_DATA__, ...pageProps } }) {\n  return (\n    <AbbyProvider initialData={__ABBY_PROJECT_DATA__}>\n      <Component {...pageProps} />\n    </AbbyProvider>\n  );\n}\n\nexport default withAbby(MyApp);\n````\n\nIf you only want client side rendering, you can skip the `withAbby` part and just wrap your app with the `AbbyProvider` (and omit `initialData`).\n\n## Usage\n\n### Hooks\n\n#### Feature Flags\n\n```tsx\n// index.tsx\n\nimport { useFeatureFlag } from \"lib/abby\";\n\nexport function HomePage() {\n  const useDarkmode = useFeatureFlag(\"useDarkmode\");\n\n  return (\n    <>\n      <h1>My Homepage</h1>\n      {useDarkmode && <p>Darkmode is enabled</p>}\n    </>\n  );\n}\n```\n\nYou can now go to the Abby dashboard and enable the `useDarkmode` flag for your project. You will see the text \"Darkmode is enabled\" on your homepage.\n\n#### Remote Configuration\n\n```tsx\n// index.tsx\n\nimport { useRemoteConfig } from \"lib/abby\";\n\nexport function HomePage() {\n  const customButtonText = useRemoteConfig(\"customButtonText\");\n\n  return (\n    <>\n      <h1>My Homepage</h1>\n      <button>{customButtonText}</button>\n    </>\n  );\n}\n```\n\nYou can now control the text, which the button is displaying, on the Abby dashboard.\n\n#### A/B Tests\n\n```tsx\n// index.tsx\nexport function HomePage() {\n  const { variant, onAct } = useAbby(\"theme\");\n\n  return (\n    <>\n      <h1>My Homepage</h1>\n      <button\n        onClick={() => {\n          onAct();\n          // React to the user clicking the button\n        }}\n        className={`button ${variant === \"dark\" && \"bg-dark\"} ${variant === \"light\" && \"bg-light\"}`}\n      >\n        BUY IT\n      </button>\n    </>\n  );\n}\n```\n\nThis is a simple example of an A/B Test. Once you loaded the page you will get either the \"light\" or the \"dark\" variant of the button.\n\n### Non-React Context\n\nYou might want to use Abby outside of React. For example in your app's middleware or in a Next.js API route.\n\n#### Edge Functions\n\n[Edge Functions](https://vercel.com/docs/concepts/functions/edge-functions) are Vercel's globally distributed serverless functions.\nThey are a great way to run code on the edge of the Vercel network and use a leaner runtime with less functionality.\nAbby works perfectly with Edge Functions.\n\nThe best usecase with Edge Functions and Abby is to use them in your middleware, for example to redirect users to a beta version of your app.\n\n```ts\n// middleware.ts\nimport { withAbbyEdge } from \"lib/abby\";\nimport { NextResponse } from \"next/server\";\n\nexport default withAbbyEdge((req) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    const res = NextResponse.redirect(\"/beta\");\n\n    // update the user's cookie\n    setCookie(res);\n    return res;\n  }\n\n  return NextResponse.next();\n});\n```\n\n#### API Routes\n\nYou can access feature flags and A/B tests in your API routes as well.\n\n```ts\n// /api/test.ts\nimport { withAbbyApiHandler } from \"lib/abby\";\n\nexport default withAbbyApiHandler((req, res) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    // update the user's cookie\n    setCookie(res);\n    return res.status(200).end();\n  }\n\n  res.status(404).end();\n});\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/_meta.json",
    "content": "{\n  \"nextjs\": \"Next.js\",\n  \"react\": \"React\",\n  \"remix\": \"Remix\",\n  \"svelte\": \"Svelte\",\n  \"angular\": \"Angular\",\n  \"http\": \"HTTP API\",\n  \"cli\": \"CLI\",\n  \"operators\": \"Operators\"\n}\n"
  },
  {
    "path": "apps/docs/pages/reference/angular.mdx",
    "content": "# @tryabby/angular\n\n## AbbyModule\n\nThe AbbyModule is an Angular module that provides a service and some directives to work with Abby.\nYou can then use the AbbyService in your components or services to interact with the Abby platform. The AbbyFlag, AbbyTest and DevtoolsComponent directives can be used in your templates to show/hide content based on feature flags or AB tests.\n\n### Parameters\n\nThe `AbbyModule.forRoot()` method takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                                        | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------------------ | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                                     | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version            | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application                        | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests                        | -                     |\n| flags              | `array`  |          | An array containing your defined Feature Flags                     | -                     |\n| remoteConfig       | `object` |          | An object containing the name of your remote config and their type | -                     |\n| settings           | `object` |          | An object with additional settings for Abby                        | -                     |\n\n#### properties\n\n##### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n###### abby.config.ts\n\n```ts\nexport const abby = {\n  // ..your config\n  tests: {\n    test: {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n  flags: [\"test-flag\"],\n  remoteConfig: {\n    remoteConfig1: \"String\",\n    remoteConfig2: \"Number\",\n    remoteConfig3: \"JSON\",\n  },\n};\n\n@Injectable({\n  providedIn: \"root\",\n  useExisting: AbbyService,\n})\nexport class Abby extends AbbyService<\n  InferFlagNames<typeof abby>,\n  InferTestNames<typeof abby>,\n  InferTests<typeof abby>,\n  InferRemoteConfig<typeof abby>,\n  InferRemoteConfigName<typeof abby>\n> {}\n```\n\n###### app.module.ts\n\n```ts\nimport { AbbyModule } from \"abby\";\nimport { Abby, abby } from \"./abby\";\n\n@NgModule({\n  // your config\n  imports: [\n    // your imports\n    AbbyModule.forRoot(abby),\n  ],\n  providers: [\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (abby: Abby) => () => abby.init(),\n      deps: [Abby],\n      multi: true,\n    },\n  ],\n})\nexport class AppModule {}\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a general default boolean value for each Feature Flag type.\n\n  ```json\n  flags: {\n    defaultValue: false,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n- `remoteConfig.defaultValue`: Allows you to set default values for the possible Remote Config types.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"\",\n      Number: 0,\n      JSON: {},\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode.\n  The keys of the object represent the names of the flags. The value must be assignable to the type of the variable.\n\n## AbbyService\n\n- `AbbyService` is a angular service, which provides methods for getting\n\n### getVariant(testName: string, lookupObject?)\n\nResolves the selected variant for a given test name.\nAutomatically maps the active variant to a custom value if `lookupObject` is provided.\n\n#### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n#### Return Value\n\nThe variant of the test _Type: `string`_\n\nOr the custom value from the `lookupObject` when provided\n\n### getFeatureFlagValue(flagName: string)\n\nResolves the value of a feature flag by the flagname.\n\n#### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n#### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n### getRemoteConfig\n\n`getRemoteConfig` is a function to access the value of a Remote Configuration variable. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n#### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n#### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n### onAct\n\nA function to call when the user performs an action associated with the test _Type: `function`_\n\n## Directives\n\n### Test Directive\n\nThe `AbbyTest` is an Angular directive provided by @tryabby/angular package that enables conditional rendering of components based on the selected variant of an A/B test. It works in conjunction with the AbbyService and is used to wrap the HTML code to be conditionally rendered.\n\n#### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `variant`: The name of the variant to compare with the selected variant of the test.\n\n#### Example\n\n```html\n<ng-container *abbyTest=\"{ testName: 'test-abtest', variant: 'variant-a' }\">AAAAAA</ng-container>\n<ng-container *abbyTest=\"{ testName: 'test-abtest', variant: 'variant-b' }\">BBBBBB</ng-container>\n```\n\n### Flag Directive\n\nThe AbbyFlag is an Angular directive provided by @tryabby/core package that enables conditional rendering of components based on the value of a feature flag. It works in conjunction with the AbbyService and is used to wrap the HTML code to be conditionally rendered.\n\n#### Parameters\n\nThe name of the feature flag. The name can be prefixed with ! to invert the flag value.\n\n#### Example\n\n```html\n<div *featureFlag=\"'test-flag'\"></div>\n```\n\n## Pipes\n\n### getAbbyVariant Pipe\n\nReturns the active variant for an AB-Test.\nAutomatically maps the active variant to a custom value if `lookupObject` is provided.\n\n#### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n#### Example\n\n```html\n<h4\n  [ngStyle]=\"{\n    'color': 'AngularTest'\n      | getAbbyVariant: { A: 'blue', B: 'green', C: 'yellow', D: 'pink' }\n      | async\n  }\"\n>\n  Variants Pipe\n</h4>\n```\n\n### getAbbyRemoteConfig Pipe\n\nReturns the current value for a Remote Configuration variable.\n\n#### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your ABBY config.\n\n#### Example\n\n```html\n<p>angularRemoteConfig: {{ \"angularRemoteConfig\" | getAbbyRemoteConfig | async }}</p>\n```\n\n## Devtool Component\n\nThe DevtoolsComponent is an Angular component provided by @tryabby/angular package that renders the Abby Devtools in your application. The component is used to wrap the HTML code that renders the Abby Devtools.\n\nThe DevtoolsComponent won't work with Server Side Rendering using Angular Universal.\n\n### Example\n\n```html\n<abby-devtools></abby-devtools>\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/cli.mdx",
    "content": "import { Tab, Tabs, Callout } from \"nextra-theme-docs\";\n\n# Command Line Interface (CLI)\n\nThe Abby CLI works with Node 10.x or higher.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n<Tabs items={[\"npm\", \"yarn\", \"pnpm\"]}>\n  <Tab>\n    ```bash\n    npm i -g @tryabby/cli\n    ```\n    </Tab>\n\n  <Tab>\n    ```bash\n    yarn add -g @tryabby/cli\n    ```\n</Tab>\n  <Tab>\n    ```bash\n    pnpm i -g @tryabby/cli\n    ```\n    </Tab>\n</Tabs>\n\n## Usage\n\nTo get started with the CLI, you need to authenticate yourself. You can do this by running the `login` command.\n\nYou will need to obtain an API key from the [Abby Dashboard](https://www.tryabby.com/profile) first. After you have obtained your API key, run the following command:\n\n```bash\nabby login -t [YOUR_TOKEN]\n```\n\nWhen you have successfully authenticated yourself, you can start using the CLI.\n\n## Commands\n\n### `login`\n\nAuthenticate yourself with the Abby API.\n\n#### Options\n\n| Flag            | Description   | Default     | Required |\n| --------------- | ------------- | ----------- | -------- |\n| `-t`, `--token` | Your API key. | `undefined` | ✅       |\n\n### `init`\n\nCreate a new config file in the current directory. The config file will be named `abby.config.ts`.\n\n#### Options\n\n| Flag             | Description                  | Default                | Required |\n| ---------------- | ---------------------------- | ---------------------- | -------- |\n| `-c`, `--config` | The path to the config file. | Your current directory | ❌       |\n\n### `push`\n\nPush the changes from your local config to the Abby API.\nThe updates in the cloud will happen follwing those rules\n\n- If a new test is added, it will be created in the cloud\n- If a new environment is added, it will be created in the cloud\n- If a new flag is added, it will be created in the cloud\n\n**Caveats:**\n\nYou will need to delete flags, tests and environments in the dashboard if you want to fully delete it.\nYou will then need to delete it manually from your local config. **We are working on a better solution for this.**\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n### `add flag`\n\nCreates a flag, puts it into your `abby.config.ts` (or specified config file) and pushes the changes to the cloud.\nIf a flag with the name, which you have entered, already exists, this command will fail.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n\n### `add config`\n\nCreates a remote config value, puts it into your `abby.config.ts` (or specified config file) and pushes the changes to the cloud.\nIf a remote config with the name, which you have entered, already exists, this command will fail.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n### `pull`\n\nPull the changes from the Abby API to your local config. It will merge the changes from the cloud with your local config.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n### `check`\n\nCheck if your local config is in sync with the Abby API. It will return a list of changes that need to be pushed or pulled.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n"
  },
  {
    "path": "apps/docs/pages/reference/http.mdx",
    "content": "# API Reference (HTTP API)\n\n## Endpoints\n\n- [GET `/api/v1/data/:projectId`](#get-apiv1dataprojectid)\n- [GET `/api/v1/data/:projectId.js`](#get-apiv1dataprojectidjs)\n- [POST `/api/v1/track`](#post-apiv1track)\n\n### GET `/api/v1/data/:projectId`\n\nReturns the data for the given project.\n\n#### Query Parameters\n\n- `environment`: The environment to filter by\n\n#### Path Parameters\n\n- `projectId`: The project ID.\n\n#### Response\n\n```json\n{\n  \"tests\": [\n    {\n      \"name\": \"Test 1\",\n      \"weights\": [0.5, 0.5]\n    }\n  ],\n  \"flags\": [\n    {\n      \"name\": \"Flag 1\",\n      \"value\": true\n    }\n  ],\n  \"remoteConfig\": [\n    {\n      \"name\": \"Remote Config 1\",\n      \"value\": \"Foobar\"\n    }\n  ]\n}\n```\n\n### GET `/api/v1/data/:projectId/script.js`\n\nGives the same response as `/api/v1/data/:projectId`, but in JavaScript format.\nYou can use this endpoint to load the data in the browser using a `<script>` tag.\nThis is useful if you want to load the data in the browser without having to\nwait for the UI framework to load and hydrate. This is mostly the case for SPAs\n\n#### Query Parameters\n\n- `environment`: The environment to filter by.\n\n#### Path Parameters\n\n- `projectId`: The project ID.\n\n#### Response\n\n```js\nwindow.__abby_data__ = {\n  tests: [\n    {\n      name: \"Test 1\",\n      weights: [0.5, 0.5],\n    },\n  ],\n  flags: [\n    {\n      name: \"Flag 1\",\n      value: true,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"Remote Config 1\",\n      value: \"Foobar\",\n    },\n  ],\n};\n```\n\n### POST `/api/v1/track`\n\nTracks an event.\n\n#### Request Body\n\nThe `type` field can be either `0` (track view) or `1` (track interaction).\n\n```json\n{\n  \"type\": 1,\n  \"projectId\": \"<PROJECT_ID>\",\n  \"testName\": \"<TEST_NAME>\",\n  \"selectedVariant\": \"<SELECTED_VARIANT>\"\n}\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/nextjs.mdx",
    "content": "# API Reference (Next.js)\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                                                                                                                       | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                                                                                                                    | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version                                                                                           | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application                                                                                                       | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests                                                                                                       | -                     |\n| flags              | `array`  |          | An array containing your defined Feature Flags                                                                                                    | -                     |\n| remoteConfig       | `object` |          | An object containing the name of your remote config and their type                                                                                | -                     |\n| settings           | `object` |          | An object with additional settings for Abby                                                                                                       | -                     |\n| user               | `object` |          | Optional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: [\"test-flag\"],\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a general default boolean value for each Feature Flag type.\n\n  ```json\n  flags: {\n    defaultValue: false,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n- `remoteConfig.defaultValue`: Allows you to set default values for the possible Remote Config types.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"\",\n      Number: 0,\n      JSON: {},\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode.\n  The keys of the object represent the names of the flags. The value must be assignable to the type of the variable.\n\n#### user\n\nOptional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. The configuration uses validation helpers from `@tryabby/core`:\n\n```typescript\nimport * as validation from \"@tryabby/core/validation\";\n\nconst config = createAbby({\n  // ... other config\n  user: {\n    role: validation.string(),\n    isSubscribed: validation.boolean(),\n    purchaseCount: validation.number(),\n    // Optional fields\n    country: validation.optional(validation.string()),\n  },\n});\n```\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `name`: The name of the test or flag, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\n- `variant` : The variant of the test or the looked up value if you provided a `lookupObject`\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### useFeatureFlags\n\n`useFeatureFlags` is a React hook that is used to access all existing feature flags.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nAn Array of all feature flags. Includes the name and the value. The value will be a boolean.\n\n#### useRemoteConfig\n\n`useRemotConfig` is a React hook that is used to access the value of a Remote Configuration variable.\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### useRemoteConfigVariables\n\n`useRemoteConfigVariables` is a React hook that is used to access all existing Remote Configuration variables.\n\n##### Parameters\n\nNone\n\n##### Return Value\n\nAn Array of all remote config variables. Includes the name and the value. The type will be according to the specified type in the `abby.config.ts`\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### getRemoteConfig\n\n`getRemoteConfig` is a function to access the value of a Remote Configuration variable. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\nThe variant of the test or the looked up value if you provided a `lookupObject`\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### withAbby\n\nA higher-order component that enables Server Side Rendering within Next.js.\nIf you wrap your \\_app component with this, all occurances of `useFeatureFlag` will be SSR'd\n\n##### Example\n\n```jsx\n// _app.tsx (or _app.js)\nimport { withAbby } from \"lib/abby\";\n\nfunction MyApp({ Component, pageProps }) {\n  return <Component {...pageProps} />;\n}\n\nexport default withAbby(MyApp);\n```\n\n#### withAbbyEdge\n\nA higher-order function that can be wrapped around any vercel edge function (like the `middleware.ts`).\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour edge function\n\n##### Example\n\n```ts\n// middleware.ts\nimport { withAbbyEdge } from \"lib/abby\";\nimport { NextResponse } from \"next/server\";\n\nexport default withAbbyEdge((req) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    const res = NextResponse.redirect(\"/beta\");\n\n    // update the user's cookie\n    setCookie(res);\n    return res;\n  }\n\n  return NextResponse.next();\n});\n```\n\n#### withAbbyApiHandler\n\nA higher-order function that can be wrapped around any api route.\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour api route handler\n\n##### Example\n\n```ts\n// /api/test.ts\nimport { withAbbyApiHandler } from \"lib/abby\";\n\nexport default withAbbyApiHandler((req, res) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    // update the user's cookie\n    setCookie(res);\n    return res.status(200).end();\n  }\n\n  res.status(404).end();\n});\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Example\n\n```tsx\nimport { getABResetFunction } from \"lib/abby\";\nimport { useRouter } from \"next/router\";\n\nexport default function SomePage() {\n  const router = useRouter();\n\n  const onReset = () => {\n    const resetCookie = getABResetFunction(\"SignupButton\");\n    resetCookie();\n    router.reload();\n  };\n\n  return (\n    <div>\n      <h1>Hello World</h1>\n      <button onClick={onReset}>Reset Cookie</button>\n    </div>\n  );\n}\n```\n\n#### updateUserProperties\n\nUpdates the user properties used for evaluating conditional rules. Properties are validated against their defined types and will throw errors if invalid.\n\nThe function:\n\n- Validates each property against its defined type\n- Only updates if validation passes\n- Throws descriptive errors for invalid values\n- Allows partial updates (only updating some properties)\n- Handles optional properties correctly\n\n##### Example\n\n```typescript\n// Valid updates\nabby.updateUserProperties({\n  role: \"admin\", // string\n  isSubscribed: true, // boolean\n  purchaseCount: 5, // number\n  country: \"US\", // optional string\n});\n\n// Invalid updates will throw\nabby.updateUserProperties({\n  role: 123, // Error: Expected string but got number\n  isSubscribed: \"true\", // Error: Expected boolean but got string\n  purchaseCount: \"5\", // Error: Expected number but got string\n});\n\n// Partial updates are fine\nabby.updateUserProperties({\n  role: \"user\", // Only updates role\n});\n\n// Optional fields can be undefined\nabby.updateUserProperties({\n  country: undefined, // OK for optional fields\n});\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/operators.mdx",
    "content": "# Rule Operators\n\nWhen configuring conditional rules for feature flags, you can use different operators based on the property type.\n\n## String Operators\n\n| Operator    | Description                       | Example                         |\n| ----------- | --------------------------------- | ------------------------------- |\n| eq          | Exact string match                | `role eq \"admin\"`               |\n| neq         | Not equal                         | `role neq \"guest\"`              |\n| contains    | String contains substring         | `email contains \"@company.com\"` |\n| notContains | String does not contain substring | `plan notContains \"free\"`       |\n| startsWith  | String starts with prefix         | `country startsWith \"US\"`       |\n| endsWith    | String ends with suffix           | `domain endsWith \".edu\"`        |\n| regex       | String matches regular expression | `email regex \"^[a-z]+@.*$\"`     |\n\n## Number Operators\n\n| Operator | Description              | Example                    |\n| -------- | ------------------------ | -------------------------- |\n| eq       | Equal to                 | `age eq 21`                |\n| neq      | Not equal to             | `loginCount neq 0`         |\n| gt       | Greater than             | `purchaseCount gt 5`       |\n| gte      | Greater than or equal to | `subscriptionMonths gte 3` |\n| lt       | Less than                | `errorCount lt 10`         |\n| lte      | Less than or equal to    | `failedAttempts lte 3`     |\n\n## Boolean Operators\n\n| Operator | Description | Example                |\n| -------- | ----------- | ---------------------- |\n| eq       | Equal to    | `isSubscribed eq true` |\n\n## Rule Groups\n\nRules can be combined into groups using logical operators:\n\n| Operator | Description                            | Example                                         |\n| -------- | -------------------------------------- | ----------------------------------------------- |\n| and      | All conditions in the group must match | `role eq \"admin\" AND subscriptionDays gt 30`    |\n| or       | Any condition in the group can match   | `isTeamMember eq true OR hasBetaAccess eq true` |\n\n### Example Rule Sets\n\n```typescript\n// Single rule\n{\n  propertyName: \"role\",\n  propertyType: \"string\",\n  operator: \"eq\",\n  value: \"admin\",\n  thenValue: true\n}\n\n// Rule group with AND logic\n{\n  operator: \"and\",\n  rules: [\n    {\n      propertyName: \"subscriptionTier\",\n      propertyType: \"string\",\n      operator: \"eq\",\n      value: \"premium\"\n    },\n    {\n      propertyName: \"usageCount\",\n      propertyType: \"number\",\n      operator: \"gt\",\n      value: 100\n    }\n  ],\n  thenValue: true\n}\n\n// Rule group with OR logic\n{\n  operator: \"or\",\n  rules: [\n    {\n      propertyName: \"isAdmin\",\n      propertyType: \"boolean\",\n      operator: \"eq\",\n      value: true\n    },\n    {\n      propertyName: \"email\",\n      propertyType: \"string\",\n      operator: \"endsWith\",\n      value: \"@company.com\"\n    }\n  ],\n  thenValue: true\n}\n```\n\nWhen evaluating rules:\n\n1. Rules are evaluated in order\n2. The first matching rule's `thenValue` is used\n3. If no rules match, the environment's default value is used\n"
  },
  {
    "path": "apps/docs/pages/reference/react.mdx",
    "content": "# API Reference (React)\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                                                                                                                       | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                                                                                                                    | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version                                                                                           | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application                                                                                                       | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests                                                                                                       | -                     |\n| flags              | `array`  |          | An array containing your defined Feature Flags                                                                                                    | -                     |\n| remoteConfig       | `object` |          | An object containing the name of your remote config and their type                                                                                | -                     |\n| settings           | `object` |          | An object with additional settings for Abby                                                                                                       | -                     |\n| user               | `object` |          | Optional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: [\"test-flag\"],\n});\n```\n\n#### user\n\nOptional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. The configuration uses validation helpers from `@tryabby/core`:\n\n```typescript\nimport * as validation from \"@tryabby/core/validation\";\n\nconst config = createAbby({\n  // ... other config\n  user: {\n    role: validation.string(),\n    isSubscribed: validation.boolean(),\n    purchaseCount: validation.number(),\n    // Optional fields\n    country: validation.optional(validation.string()),\n  },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a general default boolean value for each Feature Flag type.\n\n  ```json\n  flags: {\n    defaultValue: false,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n- `remoteConfig.defaultValue`: Allows you to set default values for the possible Remote Config types.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"\",\n      Number: 0,\n      JSON: {},\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode.\n  The keys of the object represent the names of the flags. The value must be assignable to the type of the variable.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `testName`: The name of the test or flag, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\n- `variant` : The variant of the test or the looked up value if you provided a `lookupObject`\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a React hook that returns the current value of a feature flag. The value is determined by:\n\n1. The environment value\n2. Any conditional rules based on user properties\n3. Default/fallback values\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n##### Example with User Properties\n\n```tsx\nimport { useFeatureFlag } from \"./abby\";\n\nfunction PremiumFeature() {\n  // Flag will be true if either:\n  // 1. Enabled in current environment OR\n  // 2. User matches conditions (e.g. isSubscribed === true)\n  const hasPremiumAccess = useFeatureFlag(\"premiumFeature\");\n\n  if (!hasPremiumAccess) {\n    return <UpgradeBanner />;\n  }\n\n  return <PremiumContent />;\n}\n```\n\n#### useFeatureFlags\n\n`useFeatureFlags` is a React hook that is used to access all existing feature flags.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nAn Array of all feature flags. Includes the name and the value. The value will be a boolean.\n\n#### useRemoteConfig\n\n`useRemoteConfig` is a React hook that is used to access the value of a Remote Configuration variable.\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### useRemoteConfigVariables\n\n`useRemoteConfigVariables` is a React hook that is used to access all existing Remote Configuration variables.\n\n##### Parameters\n\nNone\n\n##### Return Value\n\nAn Array of all remote config variables. Includes the name and the value. The type will be according to the specified type in the `abby.config.ts`\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### getRemoteConfig\n\n`getRemoteConfig` is a function to access the value of a Remote Configuration variable. This can be called in a non-react scope.\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\nThe variant of the test or the looked up value if you provided a `lookupObject`\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Example\n\n```tsx\nimport { getABResetFunction } from \"lib/abby\";\n\nexport default function SomePage() {\n  const onReset = () => {\n    const resetCookie = getABResetFunction(\"SignupButton\");\n    resetCookie();\n    window.reload();\n  };\n\n  return (\n    <div>\n      <h1>Hello World</h1>\n      <button onClick={onReset}>Reset Cookie</button>\n    </div>\n  );\n}\n```\n\n#### updateUserProperties\n\nUpdates the user properties used for evaluating conditional rules. Properties are validated against their defined types and will throw errors if invalid.\n\nThe function:\n\n- Validates each property against its defined type\n- Only updates if validation passes\n- Throws descriptive errors for invalid values\n- Allows partial updates (only updating some properties)\n- Handles optional properties correctly\n\n##### Example\n\n```typescript\n// Valid updates\nabby.updateUserProperties({\n  role: \"admin\", // string\n  isSubscribed: true, // boolean\n  purchaseCount: 5, // number\n  country: \"US\", // optional string\n});\n\n// Invalid updates will throw\nabby.updateUserProperties({\n  role: 123, // Error: Expected string but got number\n  isSubscribed: \"true\", // Error: Expected boolean but got string\n  purchaseCount: \"5\", // Error: Expected number but got string\n});\n\n// Partial updates are fine\nabby.updateUserProperties({\n  role: \"user\", // Only updates role\n});\n\n// Optional fields can be undefined\nabby.updateUserProperties({\n  country: undefined, // OK for optional fields\n});\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/remix.mdx",
    "content": "# API Reference (Remix)\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                                                                                                                       | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                                                                                                                    | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version                                                                                           | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application                                                                                                       | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests                                                                                                       | -                     |\n| flags              | `array`  |          | An array containing your defined Feature Flags                                                                                                    | -                     |\n| remoteConfig       | `object` |          | An object containing the name of your remote config and their type                                                                                | -                     |\n| settings           | `object` |          | An object with additional settings for Abby                                                                                                       | -                     |\n| user               | `object` |          | Optional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: [\"test-flag\"],\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a general default boolean value for each Feature Flag type.\n\n  ```json\n  flags: {\n    defaultValue: false,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n- `remoteConfig.defaultValue`: Allows you to set default values for the possible Remote Config types.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"\",\n      Number: 0,\n      JSON: {},\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode.\n  The keys of the object represent the names of the flags. The value must be assignable to the type of the variable.\n\n#### user\n\nOptional configuration for user properties that can be used for targeting feature flags. This enables conditional rules based on user attributes. The configuration uses validation helpers from `@tryabby/core`:\n\n```typescript\nimport * as validation from \"@tryabby/core/validation\";\n\nconst config = createAbby({\n  // ... other config\n  user: {\n    role: validation.string(),\n    isSubscribed: validation.boolean(),\n    purchaseCount: validation.number(),\n    // Optional fields\n    country: validation.optional(validation.string()),\n  },\n});\n```\n\n#### updateUserProperties\n\nUpdates the user properties used for evaluating conditional rules. Properties are validated against their defined types and will throw errors if invalid.\n\nThe function:\n\n- Validates each property against its defined type\n- Only updates if validation passes\n- Throws descriptive errors for invalid values\n- Allows partial updates (only updating some properties)\n- Handles optional properties correctly\n\n##### Example\n\n```typescript\n// Valid updates\nabby.updateUserProperties({\n  role: \"admin\", // string\n  isSubscribed: true, // boolean\n  purchaseCount: 5, // number\n  country: \"US\", // optional string\n});\n\n// Invalid updates will throw\nabby.updateUserProperties({\n  role: 123, // Error: Expected string but got number\n  isSubscribed: \"true\", // Error: Expected boolean but got string\n  purchaseCount: \"5\", // Error: Expected number but got string\n});\n\n// Partial updates are fine\nabby.updateUserProperties({\n  role: \"user\", // Only updates role\n});\n\n// Optional fields can be undefined\nabby.updateUserProperties({\n  country: undefined, // OK for optional fields\n});\n```\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `name`: The name of the test or flag, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\n- `variant` : The variant of the test or the looked up value if you provided a `lookupObject`\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### useFeatureFlags\n\n`useFeatureFlags` is a React hook that is used to access all existing feature flags.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nAn Array of all feature flags. Includes the name and the value. The value will be a boolean.\n\n#### useRemoteConfig\n\n`useRemotConfig` is a React hook that is used to access the value of a Remote Configuration variable.\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### useRemoteConfigVariables\n\n`useRemoteConfigVariables` is a React hook that is used to access all existing Remote Configuration variables.\n\n##### Parameters\n\nNone\n\n##### Return Value\n\nAn Array of all remote config variables. Includes the name and the value. The type will be according to the specified type in the `abby.config.ts`\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### getRemoteConfig\n\n`getRemoteConfig` is a function to access the value of a Remote Configuration variable. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\nThe variant of the test or the looked up value if you provided a `lookupObject`\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### getAbbyData\n\nA function used to get the required data to server side render the application with Abby.\nThis should be called in the `loader` function one of your routes or inside of the root.\n\n##### Example\n\n```jsx\nimport { AbbyProvider, getAbbyData } from \"../lib/abby\";\n\nexport const loader = async (ctx) => {\n  return json({\n    ...(await getAbbyData(ctx)),\n  });\n};\n```\n"
  },
  {
    "path": "apps/docs/pages/reference/svelte.mdx",
    "content": "# API Reference (Svelte)\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                                        | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------------------ | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                                     | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version            | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application                        | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests                        | -                     |\n| flags              | `array`  |          | An array containing your defined Feature Flags                     | -                     |\n| remoteConfig       | `object` |          | An object containing the name of your remote config and their type | -                     |\n| settings           | `object` |          | An object with additional settings for Abby                        | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: [\"test-flag\"],\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValue`: Allows you to set a general default boolean value for each Feature Flag type.\n\n  ```json\n  flags: {\n    defaultValue: false,\n  },\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n\n- `remoteConfig.defaultValue`: Allows you to set default values for the possible Remote Config types.\n\n  ```json\n  remoteConfig: {\n    defaultValues: {\n      String: \"\",\n      Number: 0,\n      JSON: {},\n    },\n  },\n  ```\n\n- `remoteConfig.devOverrides`: An object containing the values of Remote Configuration variables in development mode.\n  The keys of the object represent the names of the flags. The value must be assignable to the type of the variable.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a function providing acces to a store that is used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `testName`: The name of the test or flag, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\n- `variant`: Store providing the variant of the test or the looked up value if you provided a `lookupObject`\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a function providing access to a store that is used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the flag, needs to be one of the defined flags.\n\n##### Return Value\n\nA store providing the value of the flag _Type: `boolean`_\n\n#### useRemoteConfig\n\n`useRemoteConfig` is a function providing access to a store that is used to access the value of a Remote Configuration variable.\n\n##### Parameters\n\nThe name of the Remote Configuration variable. This needs to be one of the defined keys in your `abby.config.ts`.\n\n##### Return Value\n\nA store providing the value of the Remote Configuration variable. The type will be looked up from your `abby.config.ts`.\n\n#### AbbyProvider\n\nA svelte component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-svelte scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### getRemoteConfig\n\n`getRemoteConfig` is a function to access the value of a Remote Configuration variable. This can be called in a non-svelte scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the Remote Configuration variable, which needs to be one of the keys in your `remoteConfig` object in your `abby.config.ts`.\n\n##### Return Value\n\nThe current value of the Remote Configuration variable. The type will be according to the specified type in the `abby.config.ts`\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `lookupObject`: An optional lookup object to automatically map the active variant to a custom value.\n\n##### Return Values\n\nThe variant of the test or the looked up value if you provided a `lookupObject`\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a function providing a svelte component to enable the Devtools. The Devtools need to be within the 'AbbyProvider'.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### withAbby\n\nA function that enables Server Side Rendering within Sveltekit\nIf you use this in your layout.server.ts, all occurances of `useFeatureFlag` will be SSR'd.\n\n##### Example\n\n```ts\n// layout.server.ts\nimport { abby } from \"$lib/abby\";\n\nexport const load = abby.withAbby();\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n"
  },
  {
    "path": "apps/docs/pages/remote-config.mdx",
    "content": "# Remote Configuration variables\n\nRemote Configuration variables are custom String, Number and JSON values, which you can control per [Environment](environments)\n\nThey behave similarly to Feature Flags, but allow you to control more types of values than just booleans.\nYou could for example display a dynamic string on your page, which you can easily change on the Abby Dashboard for all users.\n\nThe [Abby Devtools](devtools) also allow you to control Remote Configuration variables in realtime during development,\nproviding a nice developer experience.\n"
  },
  {
    "path": "apps/docs/pages/user-segments.mdx",
    "content": "# User Segments Guide\n\nThis guide demonstrates how to implement user-based targeting with feature flags in a real application.\n\n## Scenario: Premium Feature Access\n\nLet's say you want to:\n\n- Enable a feature for premium users only\n- Allow beta testers to access it regardless of subscription\n- Gradually roll it out to users who've been active for over 30 days\n\n## Step 1: Define User Properties\n\nFirst, configure the user properties you'll need in your `abby.config.ts`:\n\n```typescript\nimport * as validation from \"@trabby/abby/validation\";\nexport default defineConfig(\n  {\n    projectId: \"your-project-id\",\n    currentEnvironment: \"production\",\n  },\n  {\n    environments: [\"development\", \"staging\", \"production\"],\n    flags: [\"premiumFeature\"],\n    user: {\n      subscriptionTier: validation.string(),\n      isBetaTester: validation.boolean(),\n      accountAgeDays: validation.number(),\n    },\n  }\n);\n```\n\n## Step 2: Update User Properties\n\nIn your application, update these properties when they change:\n\n```typescript\n// When user logs in or subscription changes\nabby.updateUserProperties({\n  subscriptionTier: user.subscription.tier,\n  isBetaTester: user.betaAccess,\n  accountAgeDays: calculateAccountAge(user.createdAt),\n});\n```\n\n## Step 3: Configure Rules\n\nIn the Abby dashboard, set up rules for your feature flag:\n\n1. Enable for premium users:\n\n- Set a rule where subscriptionTier equals \"premium\"\n\n2. Enable for beta testers:\n\n- Add another rule where isBetaTester equals true\n\n3. Enable for long-time users:\n\n- Create a rule where accountAgeDays is greater than 30\n\nThese rules are evaluated in order, and the feature will be enabled if any of them match. You can also adjust the order of rules and add percentage rollouts to gradually enable the feature for each segment.\n\n## Step 4: Use in Components\n\nNow you can use the feature flag in your components:\n\n```tsx\nfunction PremiumFeature() {\n  const hasAccess = useFeatureFlag(\"premiumFeature\");\n\n  if (!hasAccess) {\n    return <UpgradePrompt />;\n  }\n\n  return <FeatureContent />;\n}\n```\n\n## Best Practices\n\n1. **Validation**: User properties are validated against their defined types. Invalid updates will throw errors.\n\n2. **Performance**: Rule evaluation is optimized and cached until user properties change.\n\n3. **Fallbacks**: If user properties aren't set or rules don't match, the flag falls back to its environment value.\n\n4. **TypeScript Support**: The configuration provides full type safety for flag names and user properties.\n\n## Testing\n\nDuring development, you can use the Abby DevTools to:\n\n- Override user properties\n- Test different rule combinations\n- Verify rule evaluation logic\n\nRemember to test edge cases like:\n\n- Missing optional properties\n- Invalid property values\n- Rule ordering effects\n"
  },
  {
    "path": "apps/docs/snippets/ReactApi.mdx",
    "content": "## createAbby\n\n### Parameters\n\n**Options** - Object\n\n- `projectId`: The ID of your project in Abby\n- `apiUrl` _(optional)_: The URL of the Abby API. Defaults to the hosted version\n- `currentEnvironment`: The current environment of your application ([details](/environments))\n- `tests` _(optional)_: An object containing your defined A/B Tests ([details](#tests))\n- `flags` _(optional)_: An array containing your defined Feature Flags ([details](#flags));\n- `settings` _(optional)_: An object with additional settings for Abby ([details](#settings));\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n**Parameter:**\n\n- `string`: The name of the test or flag, needs to be one of the defined tests.\n\n**Return Values:**\n\n- `variant` : The variant of the test\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n**Parameter:**\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n**Return Value:**\nThe value of the flag _Type: `boolean`_\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n**Props:**\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope.\n\n**Parameter:**\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### **abby**\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n**Parameter:**\n\nThe Devtools component from `@tryabby/devtools`\n\n**Example:**\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n"
  },
  {
    "path": "apps/docs/theme.config.jsx",
    "content": "import { useRouter } from \"next/router\";\n\nexport default {\n  useNextSeoProps() {\n    const router = useRouter();\n    const currentPageUrl = `https://docs.tryabby.com${router.asPath}`;\n    return {\n      titleTemplate: \"%s – Abby Docs\",\n      description:\n        \"Abby is a SaaS tool for developers to streamline A/B testing and feature flagging. Make data-driven decisions and improve user experience with ease.\",\n      openGraph: {\n        url: currentPageUrl,\n        title: \"Abby Docs\",\n        type: \"website\",\n        description:\n          \"Abby is a SaaS tool for developers to streamline A/B testing and feature flagging. Make data-driven decisions and improve user experience with ease.\",\n        images: [\n          {\n            url: \"https://www.tryabby.com/og.png\",\n            width: 1200,\n            height: 630,\n            alt: \"Abby\",\n            type: \"image/png\",\n          },\n        ],\n        siteName: \"Abby Docs\",\n      },\n    };\n  },\n  search: {\n    loading: \"Loading...\",\n    placeholder: \"Search...\",\n  },\n  head: (\n    <>\n      <link rel=\"icon\" href=\"https://www.tryabby.com/favicon.png\" />\n    </>\n  ),\n  logo: <span style={{ fontSize: \"1.75rem\", fontWeight: \"bold\" }}>Abby</span>,\n  // docsRepositoryBase: 'https://github.com/cstrnt/abby/blob/main/apps/docs/pages',\n  project: {\n    // link: \"https://github.com/cstrnt/abby\",\n  },\n  feedback: {\n    content: null,\n  },\n  editLink: {\n    component: () => <></>,\n  },\n  sidebar: {\n    toggleButton: true,\n  },\n  footer: {\n    component: null,\n  },\n  // ...\n};\n"
  },
  {
    "path": "apps/docs/tsconfig.json",
    "content": "{\n  \"extends\": \"tsconfig/nextjs.json\",\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"theme.config.jsx\"],\n  \"exclude\": [\"node_modules\"]\n}"
  },
  {
    "path": "apps/web/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# database\n/prisma/db.sqlite\n/prisma/db.sqlite-journal\n\n# next.js\n/.next/\n/out/\nnext-env.d.ts\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n.pnpm-debug.log*\n\n# local env files\n# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables\n.env\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\n\npublic/sitemap*\npublic/robots.txt\nprisma/coupons.csv\n"
  },
  {
    "path": "apps/web/CHANGELOG.md",
    "content": "# web\n\n## 0.2.42\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@8.0.2\n  - @tryabby/next@7.0.1\n\n## 0.2.41\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.1\n  - @tryabby/devtools@8.0.1\n  - @tryabby/next@7.0.1\n\n## 0.2.40\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@8.0.0\n  - @tryabby/core@7.0.0\n  - @tryabby/next@7.0.0\n\n## 0.2.39\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@7.0.0\n  - @tryabby/core@6.0.0\n  - @tryabby/next@6.0.0\n\n## 0.2.38\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.4.0\n  - @tryabby/devtools@5.0.1\n  - @tryabby/next@5.1.3\n\n## 0.2.37\n\n### Patch Changes\n\n- Updated dependencies [d05cb9a]\n  - @tryabby/core@5.3.1\n  - @tryabby/devtools@5.0.1\n  - @tryabby/next@5.1.2\n\n## 0.2.36\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/core@5.3.0\n  - @tryabby/next@5.1.1\n  - @tryabby/devtools@5.0.1\n\n## 0.2.35\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.2.0\n  - @tryabby/next@5.1.0\n  - @tryabby/devtools@5.0.0\n\n## 0.2.34\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.4\n  - @tryabby/devtools@5.0.0\n  - @tryabby/next@5.0.6\n\n## 0.2.33\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.3\n  - @tryabby/devtools@5.0.0\n  - @tryabby/next@5.0.5\n\n## 0.2.32\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.2\n  - @tryabby/next@5.0.4\n  - @tryabby/devtools@5.0.0\n\n## 0.2.31\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.1\n  - @tryabby/devtools@5.0.0\n  - @tryabby/next@5.0.3\n\n## 0.2.30\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.0\n  - @tryabby/devtools@5.0.0\n  - @tryabby/next@5.0.2\n\n## 0.2.29\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.0.1\n  - @tryabby/next@5.0.1\n  - @tryabby/devtools@5.0.0\n\n## 0.2.28\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@5.0.0\n  - @tryabby/core@5.0.0\n  - @tryabby/next@5.0.0\n\n## 0.2.27\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.2.0\n  - @tryabby/next@4.1.1\n  - @tryabby/devtools@4.1.0\n\n## 0.2.26\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@4.1.0\n  - @tryabby/core@4.1.0\n  - @tryabby/next@4.1.0\n\n## 0.2.25\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@4.0.2\n  - @tryabby/next@4.0.1\n\n## 0.2.24\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@4.0.1\n  - @tryabby/next@4.0.1\n\n## 0.2.23\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.1\n  - @tryabby/devtools@4.0.0\n  - @tryabby/next@4.0.1\n\n## 0.2.22\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@4.0.0\n  - @tryabby/core@4.0.0\n  - @tryabby/next@4.0.0\n\n## 0.2.21\n\n### Patch Changes\n\n- update projectid env\n\n## 0.2.20\n\n- added angular code snippets\n\n## 0.2.19\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.4.0\n  - @tryabby/devtools@3.3.0\n  - @tryabby/next@3.4.0\n\n## 0.2.18\n\n### Patch Changes\n\n- refactor shard package\n- Updated dependencies\n  - @tryabby/devtools@3.2.2\n  - @tryabby/core@3.3.1\n  - @tryabby/next@3.3.1\n\n## 0.2.17\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@3.3.0\n  - @tryabby/devtools@3.2.1\n\n## 0.2.16\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.2.1\n  - @tryabby/next@3.2.1\n\n## 0.2.15\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.2.0\n  - @tryabby/next@3.2.0\n\n## 0.2.14\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.1.4\n  - @tryabby/next@3.1.2\n\n## 0.2.13\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.1.3\n  - @tryabby/next@3.1.1\n\n## 0.2.12\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.1.2\n  - @tryabby/next@3.1.1\n\n## 0.2.11\n\n### Patch Changes\n\n- @tryabby/next@3.1.1\n\n## 0.2.10\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.1.1\n  - @tryabby/next@3.1.0\n\n## 0.2.9\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.1.0\n  - @tryabby/next@3.1.0\n\n## 0.2.8\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@3.0.1\n\n## 0.2.7\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.0.3\n  - @tryabby/next@3.0.0\n\n## 0.2.6\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.0.2\n  - @tryabby/next@3.0.0\n\n## 0.2.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.0.1\n  - @tryabby/next@3.0.0\n\n## 0.2.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@3.0.0\n  - @tryabby/next@3.0.0\n\n## 0.2.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@2.4.3\n  - @tryabby/devtools@2.3.2\n\n## 0.2.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@2.4.2\n\n## 0.2.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@2.4.1\n\n## 0.2.0\n\n### Minor Changes\n\n- add edge/api function helpers and non-react a/b test function\n\n### Patch Changes\n\n- Updated dependencies\n  - shared@1.1.0\n  - @tryabby/next@2.4.0\n  - @tryabby/devtools@2.3.1\n\n## 0.1.31\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.3.1\n  - @tryabby/next@2.3.0\n\n## 0.1.30\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.3.0\n  - @tryabby/next@2.3.0\n\n## 0.1.29\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@2.2.2\n\n## 0.1.28\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.2.3\n  - @tryabby/next@2.2.1\n\n## 0.1.27\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.2.2\n  - @tryabby/next@2.2.1\n\n## 0.1.26\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.2.1\n  - @tryabby/next@2.2.1\n\n## 0.1.25\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/devtools@2.2.0\n  - @tryabby/next@2.2.0\n\n## 0.1.24\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.9.0\n\n## 0.1.23\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.8.1\n\n## 0.1.22\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.8.0\n\n## 0.1.21\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.7.0\n\n## 0.1.20\n\n### Patch Changes\n\n- @tryabby/next@1.6.2\n\n## 0.1.19\n\n### Patch Changes\n\n- @tryabby/next@1.6.1\n\n## 0.1.18\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.6.0\n\n## 0.1.17\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.5.0\n\n## 0.1.16\n\n### Patch Changes\n\n- @tryabby/next@1.4.4\n\n## 0.1.15\n\n### Patch Changes\n\n- @tryabby/next@1.4.3\n\n## 0.1.14\n\n### Patch Changes\n\n- @tryabby/next@1.4.2\n\n## 0.1.13\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.4.1\n\n## 0.1.12\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.4.0\n\n## 0.1.11\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.10\n\n## 0.1.10\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.9\n\n## 0.1.9\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.8\n\n## 0.1.8\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.7\n\n## 0.1.7\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.6\n\n## 0.1.6\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.5\n\n## 0.1.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.4\n\n## 0.1.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.3\n\n## 0.1.3\n\n### Patch Changes\n\n- @tryabby/next@1.3.2\n\n## 0.1.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/next@1.3.1\n\n## 0.1.1\n\n### Patch Changes\n\n- Updated dependencies\n- Updated dependencies [6df8a62]\n  - @tryabby/next@1.3.0\n"
  },
  {
    "path": "apps/web/Dockerfile",
    "content": "FROM node:22.8.0-alpine AS base\nENV PNPM_HOME=\"/pnpm\"\nENV PATH=\"$PNPM_HOME:$PATH\"\nRUN npm i -g corepack@^0.31.0\nRUN corepack enable\n\nFROM base AS builder\nRUN apk add --no-cache libc6-compat\nRUN apk update\n# Set working directory\nWORKDIR /app\nCOPY . .\nRUN pnpm add -g turbo\nRUN turbo prune web --docker\n \n# Add lockfile and package.json's of isolated subworkspace\nFROM base AS installer\nRUN apk add --no-cache libc6-compat\nRUN apk update\nWORKDIR /app\n \n# First install the dependencies (as they change less often)\nCOPY .gitignore .gitignore\nCOPY --from=builder /app/out/json/ .\nCOPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml\n# COPY --from=builder /app/tsconfig.json ./tsconfig.json\nRUN pnpm install --ignore-scripts --frozen-lockfile\n \n# Build the project\nCOPY --from=builder /app/out/full/ .\nRUN pnpm turbo run db:generate --filter=web\nRUN pnpm turbo run build --filter=web...\n \nFROM base AS runner\nWORKDIR /app\n\n# Don't run production as root\nRUN addgroup --system --gid 1001 nodejs\nRUN adduser --system --uid 1001 nextjs\nUSER nextjs\n \nCOPY --from=installer /app/apps/web/next.config.mjs .\nCOPY --from=installer /app/apps/web/package.json .\n \n# Automatically leverage output traces to reduce image size\n# https://nextjs.org/docs/advanced-features/output-file-tracing\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/standalone ./\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public\nCOPY --from=installer --chown=nextjs:nodejs /app/apps/web/prisma ./apps/web/prisma\n\n\n\n# Set your entrypoint script as the entrypoint\n# CMD [\"cd apps/web && npm run start:docker\"]\nCMD [\"sh\", \"-cx\", \"cd ./apps/web && npm run start:docker\"]"
  },
  {
    "path": "apps/web/README.md",
    "content": "# Create T3 App\n\nThis is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`.\n\n## What's next? How do I make an app with this?\n\nWe try to keep this project as simple as possible, so you can start with just the scaffolding we set up for you, and add additional things later when they become necessary.\n\nIf you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our [Discord](https://t3.gg/discord) and ask for help.\n\n- [Next.js](https://nextjs.org)\n- [NextAuth.js](https://next-auth.js.org)\n- [Prisma](https://prisma.io)\n- [Tailwind CSS](https://tailwindcss.com)\n- [tRPC](https://trpc.io)\n\n## Learn More\n\nTo learn more about the [T3 Stack](https://create.t3.gg/), take a look at the following resources:\n\n- [Documentation](https://create.t3.gg/)\n- [Learn the T3 Stack](https://create.t3.gg/en/faq#what-learning-resources-are-currently-available) — Check out these awesome tutorials\n\nYou can check out the [create-t3-app GitHub repository](https://github.com/t3-oss/create-t3-app) — your feedback and contributions are welcome!\n\n## How do I deploy this?\n\nFollow our deployment guides for [Vercel](https://create.t3.gg/en/deployment/vercel) and [Docker](https://create.t3.gg/en/deployment/docker) for more information.\n"
  },
  {
    "path": "apps/web/abby.config.ts",
    "content": "import { defineConfig } from \"@tryabby/core\";\nimport * as validation from \"@tryabby/core/validation\";\n\nexport default defineConfig(\n  {\n    // biome-ignore lint/style/noNonNullAssertion:>\n    projectId: process.env.NEXT_PUBLIC_ABBY_PROJECT_ID!,\n    currentEnvironment: process.env.VERCEL_ENV ?? process.env.NODE_ENV,\n    apiUrl: process.env.NEXT_PUBLIC_ABBY_API_URL,\n    __experimentalCdnUrl: process.env.NEXT_PUBLIC_ABBY_CDN_URL,\n    debug: process.env.NEXT_PUBLIC_ABBY_DEBUG === \"true\",\n  },\n  {\n    environments: [\"development\", \"production\"],\n    tests: {\n      SignupButton: {\n        variants: [\"A\", \"B\"],\n      },\n      TipsAndTricks: {\n        variants: [\"Blog\"],\n      },\n    },\n    flags: [\"AdvancedTestStats\", \"showFooter\", \"test\"],\n    remoteConfig: {\n      abc: \"JSON\",\n    },\n    cookies: { disableByDefault: true, expiresInDays: 30 },\n    user: {\n      id: validation.string(),\n      email: validation.string(),\n    },\n  }\n);\n"
  },
  {
    "path": "apps/web/components.json",
    "content": "{\n  \"$schema\": \"https://ui.shadcn.com/schema.json\",\n  \"style\": \"default\",\n  \"rsc\": false,\n  \"tsx\": true,\n  \"tailwind\": {\n    \"config\": \"tailwind.config.cjs\",\n    \"css\": \"src/styles/shadcn.css\",\n    \"baseColor\": \"slate\",\n    \"cssVariables\": true\n  },\n  \"aliases\": {\n    \"utils\": \"lib/utils\",\n    \"components\": \"components\"\n  }\n}\n"
  },
  {
    "path": "apps/web/docker-compose.mailhog.yaml",
    "content": "version: '3.4'\n\nservices:\n  mailhog:\n    image: mailhog/mailhog\n    logging:\n      driver: 'none'  # disable saving logs\n    ports:\n      - 1025:1025 # smtp server\n      - 8025:8025 # web ui"
  },
  {
    "path": "apps/web/emails/ContactFormularEmail.tsx",
    "content": "import { Container } from \"@react-email/container\";\nimport { Head } from \"@react-email/head\";\nimport { Html } from \"@react-email/html\";\nimport { Preview } from \"@react-email/preview\";\nimport { Section } from \"@react-email/section\";\nimport { ABBY_BASE_URL } from \"@tryabby/core\";\n\nexport type Props = {\n  surname: string;\n  name: string;\n  mailadress: string;\n  message: string;\n};\n\nexport default function ContactFormularEmail({\n  surname,\n  mailadress,\n  name,\n  message,\n}: Props) {\n  const _baseUrl =\n    process.env.NODE_ENV === \"development\"\n      ? \"http://localhost:3000/\"\n      : ABBY_BASE_URL;\n\n  return (\n    <Html>\n      <Head />\n      {/* @ts-ignore types are off */}\n      <Preview>\n        {name} {surname} tried to contact{\" \"}\n      </Preview>\n      <Section style={main}>\n        <Container style={container}>\n          Name: {name} {surname}\n          <br />\n          Email: {mailadress}\n          <br />\n          Message:\n          <br />\n          <pre>{message}</pre>\n        </Container>\n      </Section>\n    </Html>\n  );\n}\n\nconst main = {\n  backgroundColor: \"#ffffff\",\n  margin: \"0 auto\",\n};\n\nconst container = {\n  border: \"1px solid #eaeaea\",\n  borderRadius: \"5px\",\n  margin: \"40px auto\",\n  padding: \"20px\",\n  width: \"465px\",\n};\n\nconst _logo = {\n  margin: \"0 auto\",\n};\n\nconst _h1 = {\n  color: \"#000\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"24px\",\n  fontWeight: \"normal\",\n  textAlign: \"center\" as const,\n  margin: \"30px 0\",\n  padding: \"0\",\n};\n\nconst _avatar = {\n  borderRadius: \"100%\",\n};\n\nconst _link = {\n  color: \"#067df7\",\n  textDecoration: \"none\",\n};\n\nconst _text = {\n  color: \"#000\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"14px\",\n  lineHeight: \"24px\",\n};\n\nconst _black = {\n  color: \"black\",\n};\n\nconst _center = {\n  verticalAlign: \"middle\",\n};\n\nconst _btn = {\n  backgroundColor: \"#000\",\n  borderRadius: \"5px\",\n  color: \"#fff\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"12px\",\n  fontWeight: 500,\n  lineHeight: \"50px\",\n  textDecoration: \"none\",\n  textAlign: \"center\" as const,\n};\n\nconst _spacing = {\n  marginBottom: \"26px\",\n};\n"
  },
  {
    "path": "apps/web/emails/index.tsx",
    "content": "import { render } from \"@react-email/render\";\nimport { env } from \"env/server.mjs\";\nimport { createTransport } from \"nodemailer\";\nimport ContactFormularEmail, {\n  type Props as ContactMailProps,\n} from \"./ContactFormularEmail\";\nimport InviteEmail, { type Props as InviteEmailProps } from \"./invite\";\n\nconst transporter = createTransport({\n  pool: true,\n  url: env.EMAIL_SERVER,\n  from: `Abby <${env.ABBY_FROM_EMAIL}>`,\n});\n\nexport function sendInviteEmail(props: InviteEmailProps) {\n  const email = render(<InviteEmail {...props} />);\n\n  return transporter.sendMail({\n    to: props.invitee.email,\n    from: `Abby <${env.ABBY_FROM_EMAIL}>`,\n    subject: `Join ${props.inviter.name} on Abby`,\n    html: email,\n  });\n}\n\nexport function sendContactFormularEmail(props: ContactMailProps) {\n  const email = render(<ContactFormularEmail {...props} />);\n  const abbyContactAdress = \"tim@tryabby.com\";\n  return transporter.sendMail({\n    to: abbyContactAdress,\n    from: `Abby <${env.ABBY_FROM_EMAIL}>`,\n    subject: `New Message from ${props.name} ${props.surname}`,\n    html: email,\n  });\n}\n"
  },
  {
    "path": "apps/web/emails/invite.tsx",
    "content": "import type { Project } from \"@prisma/client\";\nimport { Button } from \"@react-email/button\";\nimport { Container } from \"@react-email/container\";\nimport { Head } from \"@react-email/head\";\nimport { Html } from \"@react-email/html\";\nimport { Link } from \"@react-email/link\";\nimport { Preview } from \"@react-email/preview\";\nimport { Section } from \"@react-email/section\";\nimport { Text } from \"@react-email/text\";\nimport { ABBY_BASE_URL } from \"@tryabby/core\";\n\nexport type Props = {\n  inviteId: string;\n  invitee: { name?: string; email: string };\n  inviter: { name: string; email: string };\n  project: Project;\n};\n\nexport default function Email({ inviteId, invitee, inviter, project }: Props) {\n  const baseUrl =\n    process.env.NODE_ENV === \"development\"\n      ? \"http://localhost:3000/\"\n      : ABBY_BASE_URL;\n\n  return (\n    <Html>\n      <Head />\n      {/* @ts-ignore types are off */}\n      <Preview>Join {inviter.name} on Abby</Preview>\n      <Section style={main}>\n        <Container style={container}>\n          <Section style={{ marginTop: \"32px\" }}>\n            <h1>Abby</h1>\n          </Section>\n          <Text style={h1}>\n            Join <strong>{project.name}</strong> on <strong>Abby</strong>\n          </Text>\n          <Text style={text}>Hello {invitee.name ?? invitee.email},</Text>\n          <Text style={text}>\n            <strong>{inviter.name}</strong> (\n            <Link href={`mailto:${inviter.email}`} style={link}>\n              {inviter.email}\n            </Link>\n            ) has invited you to the <strong>{project.name}</strong> team on{\" \"}\n            <strong>Abby</strong>.\n          </Text>\n          <Section style={{ textAlign: \"center\" }}>\n            <Button\n              pX={20}\n              pY={12}\n              style={btn}\n              href={`${baseUrl}invites/${inviteId}`}\n            >\n              Join the team\n            </Button>\n          </Section>\n          <Text style={text}>\n            <br />\n            or copy and paste this URL into your browser:{\" \"}\n            <Link\n              href={`${baseUrl}invites/${inviteId}`}\n              target=\"_blank\"\n              style={link}\n              rel=\"noreferrer\"\n            >\n              {baseUrl}invites/{inviteId}\n            </Link>\n          </Text>\n        </Container>\n      </Section>\n    </Html>\n  );\n}\n\nconst main = {\n  backgroundColor: \"#ffffff\",\n  margin: \"0 auto\",\n};\n\nconst container = {\n  border: \"1px solid #eaeaea\",\n  borderRadius: \"5px\",\n  margin: \"40px auto\",\n  padding: \"20px\",\n  width: \"465px\",\n};\n\nconst _logo = {\n  margin: \"0 auto\",\n};\n\nconst h1 = {\n  color: \"#000\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"24px\",\n  fontWeight: \"normal\",\n  textAlign: \"center\" as const,\n  margin: \"30px 0\",\n  padding: \"0\",\n};\n\nconst _avatar = {\n  borderRadius: \"100%\",\n};\n\nconst link = {\n  color: \"#067df7\",\n  textDecoration: \"none\",\n};\n\nconst text = {\n  color: \"#000\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"14px\",\n  lineHeight: \"24px\",\n};\n\nconst _black = {\n  color: \"black\",\n};\n\nconst _center = {\n  verticalAlign: \"middle\",\n};\n\nconst btn = {\n  backgroundColor: \"#000\",\n  borderRadius: \"5px\",\n  color: \"#fff\",\n  fontFamily:\n    \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\",\n  fontSize: \"12px\",\n  fontWeight: 500,\n  lineHeight: \"50px\",\n  textDecoration: \"none\",\n  textAlign: \"center\" as const,\n};\n\nconst _spacing = {\n  marginBottom: \"26px\",\n};\n"
  },
  {
    "path": "apps/web/next-sitemap.config.js",
    "content": "/** @type {import('next-sitemap').IConfig} */\nmodule.exports = {\n  siteUrl: process.env.SITE_URL || \"https://www.tryabby.com\",\n  generateRobotsTxt: true, // (optional)\n  exclude: [\n    \"/test\",\n    \"/checkout\",\n    \"/projects\",\n    \"/invites\",\n    \"/marketing/*\",\n    \"/redeem\",\n    \"/profile\",\n    \"/profile/*\",\n    \"/welcome\",\n  ],\n  // ...other options\n};\n"
  },
  {
    "path": "apps/web/next.config.mjs",
    "content": "// @ts-check\nimport { remarkCodeHike } from \"@code-hike/mdx\";\nimport bundleAnalzyer from \"@next/bundle-analyzer\";\nimport mdx from \"@next/mdx\";\nimport { withSentryConfig } from \"@sentry/nextjs\";\nimport { withPlausibleProxy } from \"next-plausible\";\nimport theme from \"shiki/themes/poimandres.json\" with { type: \"json\" };\n\nconst withMDX = mdx({\n  extension: /\\.mdx?$/,\n  options: {\n    // If you use remark-gfm, you'll need to use next.config.mjs\n    // as the package is ESM only\n    // https://github.com/remarkjs/remark-gfm#install\n    remarkPlugins: [\n      [remarkCodeHike, { theme, lineNumbers: true, showCopyButton: true }],\n    ],\n    rehypePlugins: [],\n    // If you use `MDXProvider`, uncomment the following line.\n    // providerImportSource: \"@mdx-js/react\",\n  },\n});\n\nconst withBundleAnalyzer = bundleAnalzyer({\n  enabled: process.env.ANALYZE === \"true\",\n});\n\n/**\n * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation.\n * This is especially useful for Docker builds.\n */\n!process.env.SKIP_ENV_VALIDATION && (await import(\"./src/env/server.mjs\"));\n\nconst cspHeader = `\n    frame-ancestors 'none';\n`;\n\n/** @type {import(\"next\").NextConfig} */\nconst config = {\n  reactStrictMode: true,\n  output: \"standalone\",\n  swcMinify: true,\n  pageExtensions: [\"ts\", \"tsx\", \"js\", \"jsx\", \"md\", \"mdx\"],\n  transpilePackages: [\"lodash-es\"],\n  i18n: {\n    locales: [\"en\"],\n    defaultLocale: \"en\",\n  },\n  experimental: {\n    instrumentationHook: true,\n  },\n  async headers() {\n    const isProduction = process.env.NODE_ENV === \"production\";\n    if (!isProduction) return [];\n    return [\n      {\n        source: \"/(.*)\",\n        headers: [\n          {\n            key: \"Content-Security-Policy\",\n            value: cspHeader.replace(/\\n/g, \"\"),\n          },\n        ],\n      },\n    ];\n  },\n};\n\nconst withSentry =\n  process.env.SENTRY_ORG && process.env.SENTRY_PROJECT\n    ? withSentryConfig\n    : (/** @type {any} */ config) => config;\n\nexport default withSentry(\n  withPlausibleProxy()(\n    withBundleAnalyzer(\n      // @ts-ignore\n      withMDX(config)\n    )\n  ),\n  {\n    // For all available options, see:\n    // https://github.com/getsentry/sentry-webpack-plugin#options\n    org: process.env.SENTRY_ORG,\n    project: process.env.SENTRY_PROJECT,\n    sentryUrl: \"https://sentry.io/\",\n\n    // Only print logs for uploading source maps in CI\n    silent: !process.env.CI,\n\n    // For all available options, see:\n    // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/\n\n    // Upload a larger set of source maps for prettier stack traces (increases build time)\n    widenClientFileUpload: true,\n\n    // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers.\n    // This can increase your server load as well as your hosting bill.\n    // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client-\n    // side errors will fail.\n    tunnelRoute: \"/monitoring\",\n\n    // Hides source maps from generated client bundles\n    hideSourceMaps: true,\n\n    // Automatically tree-shake Sentry logger statements to reduce bundle size\n    disableLogger: true,\n  }\n);\n"
  },
  {
    "path": "apps/web/package.json",
    "content": "{\n  \"name\": \"web\",\n  \"version\": \"0.2.42\",\n  \"private\": true,\n  \"scripts\": {\n    \"prebuild\": \"pnpm run db:generate\",\n    \"build\": \"next build\",\n    \"build:prod\": \"npx prisma migrate deploy && npm run build\",\n    \"postbuild\": \"next-sitemap\",\n    \"dev\": \"next dev\",\n    \"db:generate\": \"prisma generate && prisma generate --sql\",\n    \"start\": \"next start\",\n    \"seed:events\": \"ts-node --compiler-options {\\\\\\\"module\\\\\\\":\\\\\\\"CommonJS\\\\\\\"} prisma/seedEvents.ts\",\n    \"db:migrate\": \"prisma migrate dev\",\n    \"generate:coupons\": \"pnpm ts-node -r tsconfig-paths/register  --compiler-options {\\\\\\\"module\\\\\\\":\\\\\\\"CommonJS\\\\\\\"} prisma/generateCoupons.ts\",\n    \"mailhog:up\": \"docker-compose -f docker-compose.mailhog.yaml up\",\n    \"mailhog:down\": \"docker-compose -f docker-compose.mailhog.yaml down\",\n    \"test\": \"vitest\",\n    \"start:docker\": \"npx prisma migrate deploy || { echo 'Migration failed, exiting'; exit 1; } && node server.js\"\n  },\n  \"dependencies\": {\n    \"@calcom/embed-react\": \"^1.5.0\",\n    \"@code-hike/mdx\": \"0.9.0\",\n    \"@databases/cache\": \"^1.0.0\",\n    \"@dnd-kit/core\": \"^6.0.8\",\n    \"@dnd-kit/sortable\": \"^7.0.2\",\n    \"@dnd-kit/utilities\": \"^3.2.1\",\n    \"@fontsource/martian-mono\": \"^5.0.8\",\n    \"@headlessui/react\": \"^1.7.13\",\n    \"@hono/node-server\": \"^1.10.1\",\n    \"@hono/zod-validator\": \"^0.1.11\",\n    \"@mdx-js/loader\": \"^3.0.0\",\n    \"@mdx-js/react\": \"^3.0.0\",\n    \"@monaco-editor/react\": \"^4.5.1\",\n    \"@next-auth/prisma-adapter\": \"1.0.5\",\n    \"@next/mdx\": \"14.0.4\",\n    \"@octokit/webhooks\": \"^13.3.0\",\n    \"@openpanel/nextjs\": \"^1.0.3\",\n    \"@prisma/client\": \"5.19.0\",\n    \"@radix-ui/react-avatar\": \"^1.0.3\",\n    \"@radix-ui/react-dialog\": \"^1.0.5\",\n    \"@radix-ui/react-dropdown-menu\": \"^2.0.6\",\n    \"@radix-ui/react-icons\": \"^1.3.0\",\n    \"@radix-ui/react-label\": \"^2.0.2\",\n    \"@radix-ui/react-navigation-menu\": \"^1.1.3\",\n    \"@radix-ui/react-popover\": \"^1.0.6\",\n    \"@radix-ui/react-radio-group\": \"^1.1.3\",\n    \"@radix-ui/react-select\": \"^1.2.2\",\n    \"@radix-ui/react-slot\": \"^1.0.2\",\n    \"@radix-ui/react-switch\": \"^1.0.2\",\n    \"@radix-ui/react-tabs\": \"^1.1.0\",\n    \"@radix-ui/react-tooltip\": \"^1.0.6\",\n    \"@react-email/button\": \"0.0.5\",\n    \"@react-email/container\": \"0.0.5\",\n    \"@react-email/head\": \"0.0.3\",\n    \"@react-email/hr\": \"0.0.3\",\n    \"@react-email/html\": \"0.0.3\",\n    \"@react-email/img\": \"0.0.3\",\n    \"@react-email/link\": \"0.0.3\",\n    \"@react-email/preview\": \"0.0.3\",\n    \"@react-email/render\": \"0.0.5\",\n    \"@react-email/section\": \"0.0.4\",\n    \"@react-email/text\": \"0.0.3\",\n    \"@sentry/nextjs\": \"^8\",\n    \"@stripe/stripe-js\": \"^1.52.1\",\n    \"@tanstack/react-query\": \"^4.29.1\",\n    \"@tiptap/extension-bubble-menu\": \"2.4.0\",\n    \"@tiptap/extension-placeholder\": \"2.4.0\",\n    \"@tiptap/extension-text-align\": \"2.4.0\",\n    \"@tiptap/pm\": \"2.4.0\",\n    \"@tiptap/react\": \"2.4.0\",\n    \"@tiptap/starter-kit\": \"2.4.0\",\n    \"@trpc/client\": \"^10.19.1\",\n    \"@trpc/next\": \"^10.19.1\",\n    \"@trpc/react-query\": \"^10.19.1\",\n    \"@trpc/server\": \"^10.19.1\",\n    \"@tryabby/core\": \"workspace:*\",\n    \"@tryabby/devtools\": \"workspace:*\",\n    \"@tryabby/next\": \"workspace:*\",\n    \"@types/stripe-v3\": \"^3.1.28\",\n    \"bullmq\": \"^5.8.2\",\n    \"chart.js\": \"^4.2.1\",\n    \"class-variance-authority\": \"^0.4.0\",\n    \"clsx\": \"^1.2.1\",\n    \"cmdk\": \"^0.2.0\",\n    \"csstype\": \"^3.1.2\",\n    \"dayjs\": \"^1.11.7\",\n    \"framer-motion\": \"^10.12.7\",\n    \"fuse.js\": \"^7.0.0\",\n    \"hono\": \"^4.5.8\",\n    \"immer\": \"^9.0.21\",\n    \"ioredis\": \"^5.4.1\",\n    \"isbot\": \"^3.6.8\",\n    \"lodash-es\": \"^4.17.21\",\n    \"logsnag\": \"^0.1.6\",\n    \"lucide-react\": \"0.320.0\",\n    \"memoize\": \"^10.0.0\",\n    \"micro\": \"^10.0.1\",\n    \"ms\": \"^2.1.3\",\n    \"next\": \"14.1.1\",\n    \"next-auth\": \"4.22.1\",\n    \"next-plausible\": \"^3.12.0\",\n    \"next-seo\": \"^5.15.0\",\n    \"next-sitemap\": \"^3.1.55\",\n    \"next-themes\": \"^0.2.1\",\n    \"nextjs-cors\": \"^2.1.2\",\n    \"nodemailer\": \"^6.9.1\",\n    \"nuqs\": \"^1.17.8\",\n    \"octokit\": \"^4.0.2\",\n    \"openai\": \"^4.56.0\",\n    \"prettier\": \"^2.8.7\",\n    \"rate-limiter-flexible\": \"^5.0.3\",\n    \"react\": \"18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"react-hook-form\": \"^7.44.3\",\n    \"react-hot-toast\": \"^2.4.0\",\n    \"react-icons\": \"^4.11.0\",\n    \"react-use-wizard\": \"^2.2.3\",\n    \"recharts\": \"^2.12.7\",\n    \"sharp\": \"^0.33.4\",\n    \"shiki\": \"^0.11.1\",\n    \"stripe\": \"^11.18.0\",\n    \"superjson\": \"1.9.1\",\n    \"tailwind-merge\": \"^1.13.1\",\n    \"tailwindcss-animate\": \"^1.0.6\",\n    \"ts-pattern\": \"^4.2.2\",\n    \"vite\": \"5.4.0\",\n    \"zod\": \"^3.21.4\",\n    \"zustand\": \"^4.4.1\"\n  },\n  \"devDependencies\": {\n    \"@next/bundle-analyzer\": \"13.3.4\",\n    \"@tailwindcss/forms\": \"^0.5.3\",\n    \"@tailwindcss/typography\": \"^0.5.9\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@types/lodash-es\": \"^4.17.7\",\n    \"@types/ms\": \"^0.7.31\",\n    \"@types/node\": \"^18.15.11\",\n    \"@types/nodemailer\": \"^6.4.7\",\n    \"@types/prettier\": \"^2.7.2\",\n    \"@types/react\": \"18.0.14\",\n    \"@types/react-dom\": \"18.0.05\",\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"jsdom\": \"^20.0.3\",\n    \"postcss\": \"^8.4.21\",\n    \"prettier-plugin-tailwindcss\": \"^0.1.13\",\n    \"prisma\": \"5.19.0\",\n    \"tailwindcss\": \"^3.3.1\",\n    \"ts-node\": \"^10.9.1\",\n    \"tsconfig-paths\": \"^4.2.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite-tsconfig-paths\": \"^4.3.2\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"ct3aMetadata\": {\n    \"initVersion\": \"6.11.1\"\n  }\n}\n"
  },
  {
    "path": "apps/web/postcss.config.cjs",
    "content": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "apps/web/prisma/generateCoupons.ts",
    "content": "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { PrismaClient } from \"@prisma/client\";\n\nconst prisma = new PrismaClient();\n\nconst COUPON_CODE_AMOUNT = 200;\n\nasync function main() {\n  const fileName = path.join(__dirname, \"./coupons.csv\");\n\n  const items = Array.from({ length: COUPON_CODE_AMOUNT }).map(() => ({\n    stripePriceId: \"STARTUP_LIFETIME\",\n  }));\n\n  const codes = await prisma.$transaction(\n    items.map((item) => prisma.couponCodes.create({ data: item }))\n  );\n\n  const csv = codes.map((code) => code.code).join(\"\\n\");\n\n  await fs.writeFile(fileName, csv);\n\n  console.log(`Wrote ${COUPON_CODE_AMOUNT} codes to ${fileName}`);\n}\n\nmain();\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221205112748_init_db/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `Example` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `Account` (\n    `id` VARCHAR(191) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n    `type` VARCHAR(191) NOT NULL,\n    `provider` VARCHAR(191) NOT NULL,\n    `providerAccountId` VARCHAR(191) NOT NULL,\n    `refresh_token` TEXT NULL,\n    `access_token` TEXT NULL,\n    `refresh_token_expires_in` INTEGER NULL,\n    `expires_at` INTEGER NULL,\n    `token_type` VARCHAR(191) NULL,\n    `scope` VARCHAR(191) NULL,\n    `id_token` TEXT NULL,\n    `session_state` VARCHAR(191) NULL,\n\n    INDEX `Account_userId_idx`(`userId`),\n    UNIQUE INDEX `Account_provider_providerAccountId_key`(`provider`, `providerAccountId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `Session` (\n    `id` VARCHAR(191) NOT NULL,\n    `sessionToken` VARCHAR(191) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n    `expires` DATETIME(3) NOT NULL,\n\n    UNIQUE INDEX `Session_sessionToken_key`(`sessionToken`),\n    INDEX `Session_userId_idx`(`userId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `User` (\n    `id` VARCHAR(191) NOT NULL,\n    `name` VARCHAR(191) NULL,\n    `email` VARCHAR(191) NULL,\n    `emailVerified` DATETIME(3) NULL,\n    `image` VARCHAR(191) NULL,\n\n    UNIQUE INDEX `User_email_key`(`email`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `VerificationToken` (\n    `identifier` VARCHAR(191) NOT NULL,\n    `token` VARCHAR(191) NOT NULL,\n    `expires` DATETIME(3) NOT NULL,\n\n    UNIQUE INDEX `VerificationToken_token_key`(`token`),\n    UNIQUE INDEX `VerificationToken_identifier_token_key`(`identifier`, `token`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221205131914_bruh/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `Project` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `ProjectMemeber` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n\n    UNIQUE INDEX `ProjectMemeber_userId_projectId_key`(`userId`, `projectId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221205132203_/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the `ProjectMemeber` table. If the table is not empty, all the data it contains will be lost.\n  - Added the required column `userId` to the `Project` table without a default value. This is not possible if the table is not empty.\n\n*/\n-- AlterTable\nALTER TABLE `Project` ADD COLUMN `userId` VARCHAR(191) NOT NULL;\n\n-- DropTable\nDROP TABLE `ProjectMemeber`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221205133208_/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `Test` (\n    `projectId` VARCHAR(191) NULL,\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n\n    INDEX `Test_projectId_idx`(`projectId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `Option` (\n    `id` VARCHAR(191) NOT NULL,\n    `identifier` VARCHAR(191) NOT NULL,\n    `chance` INTEGER NOT NULL,\n    `testId` VARCHAR(191) NOT NULL,\n\n    UNIQUE INDEX `Option_testId_identifier_key`(`testId`, `identifier`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateIndex\nCREATE INDEX `Project_userId_idx` ON `Project`(`userId`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221205162949_make_name_and_project_id_unique_identifier_for_test/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[projectId,name]` on the table `Test` will be added. If there are existing duplicate values, this will fail.\n  - Made the column `projectId` on table `Test` required. This step will fail if there are existing NULL values in that column.\n\n*/\n-- AlterTable\nALTER TABLE `Test` MODIFY `projectId` VARCHAR(191) NOT NULL;\n\n-- CreateIndex\nCREATE UNIQUE INDEX `Test_projectId_name_key` ON `Test`(`projectId`, `name`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221207080237_add_event_table/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `Event` (\n    `id` VARCHAR(191) NOT NULL,\n    `testId` VARCHAR(191) NOT NULL,\n    `type` INTEGER NOT NULL,\n    `selectedVariant` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n\n    INDEX `Event_testId_idx`(`testId`),\n    INDEX `Event_type_idx`(`type`),\n    INDEX `Event_selectedVariant_idx`(`selectedVariant`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221208123701_add_project_invites/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `ProjectInvite` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `email` VARCHAR(191) NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n    `userId` VARCHAR(191) NULL,\n    `usedAt` DATETIME(3) NULL,\n\n    INDEX `ProjectInvite_projectId_idx`(`projectId`),\n    INDEX `ProjectInvite_userId_idx`(`userId`),\n    UNIQUE INDEX `ProjectInvite_projectId_email_key`(`projectId`, `email`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221208134716_use_decimal_for_weights/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to alter the column `chance` on the `Option` table. The data in that column could be lost. The data in that column will be cast from `Int` to `Decimal(65,30)`.\n\n*/\n-- AlterTable\nALTER TABLE `Option` MODIFY `chance` DECIMAL(65, 30) NOT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221208152910_add_project_user/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `ProjectUser` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n    `role` INTEGER NOT NULL DEFAULT 0,\n\n    INDEX `ProjectUser_userId_idx`(`userId`),\n    INDEX `ProjectUser_projectId_idx`(`projectId`),\n    UNIQUE INDEX `ProjectUser_userId_projectId_key`(`userId`, `projectId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221208172715_/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `userId` on the `Project` table. All the data in the column will be lost.\n\n*/\n-- DropIndex\nDROP INDEX `Project_userId_idx` ON `Project`;\n\n-- AlterTable\nALTER TABLE `Project` DROP COLUMN `userId`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221210195541_add_stripe_info_to_projects/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[stripeCustomerId]` on the table `Project` will be added. If there are existing duplicate values, this will fail.\n  - A unique constraint covering the columns `[stripeSubscriptionId]` on the table `Project` will be added. If there are existing duplicate values, this will fail.\n\n*/\n-- AlterTable\nALTER TABLE `Project` ADD COLUMN `stripeCurrentPeriodEnd` DATETIME(3) NULL,\n    ADD COLUMN `stripeCustomerId` VARCHAR(191) NULL,\n    ADD COLUMN `stripePriceId` VARCHAR(191) NULL,\n    ADD COLUMN `stripeSubscriptionId` VARCHAR(191) NULL;\n\n-- CreateIndex\nCREATE UNIQUE INDEX `Project_stripeCustomerId_key` ON `Project`(`stripeCustomerId`);\n\n-- CreateIndex\nCREATE UNIQUE INDEX `Project_stripeSubscriptionId_key` ON `Project`(`stripeSubscriptionId`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20221212063242_add_plan_to_project/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `Project` ADD COLUMN `plan` ENUM('FREE', 'STARTER', 'ENTERPRISE') NOT NULL DEFAULT 'FREE';\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230101140121_use_role_enum_for_project_users/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to alter the column `role` on the `ProjectUser` table. The data in that column could be lost. The data in that column will be cast from `Int` to `Enum(EnumId(0))`.\n\n*/\n-- AlterTable\nALTER TABLE `ProjectUser` MODIFY `role` ENUM('ADMIN', 'USER') NOT NULL DEFAULT 'USER';\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230104071050_add_feature_flags/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `FeatureFlag` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `enabled` BOOLEAN NOT NULL DEFAULT false,\n    `projectId` VARCHAR(191) NOT NULL,\n    `environmentId` VARCHAR(191) NOT NULL,\n\n    INDEX `FeatureFlag_projectId_idx`(`projectId`),\n    INDEX `FeatureFlag_environmentId_idx`(`environmentId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `Environment` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n\n    INDEX `Environment_projectId_idx`(`projectId`),\n    UNIQUE INDEX `Environment_projectId_name_key`(`projectId`, `name`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230104080059_make_featureflag_name_unique_per_project/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[projectId,name]` on the table `FeatureFlag` will be added. If there are existing duplicate values, this will fail.\n\n*/\n-- CreateIndex\nCREATE UNIQUE INDEX `FeatureFlag_projectId_name_key` ON `FeatureFlag`(`projectId`, `name`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230104081514_fix/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[projectId,name,environmentId]` on the table `FeatureFlag` will be added. If there are existing duplicate values, this will fail.\n\n*/\n-- DropIndex\nDROP INDEX `FeatureFlag_projectId_name_key` ON `FeatureFlag`;\n\n-- CreateIndex\nCREATE UNIQUE INDEX `FeatureFlag_projectId_name_environmentId_key` ON `FeatureFlag`(`projectId`, `name`, `environmentId`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230115171608_remove/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `plan` on the `Project` table. All the data in the column will be lost.\n\n*/\n-- AlterTable\nALTER TABLE `Project` DROP COLUMN `plan`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230210162012_add_history/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `FeatureFlagHistory` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `oldValue` BOOLEAN NULL,\n    `newValue` BOOLEAN NULL,\n    `featureFlagId` VARCHAR(191) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n\n    INDEX `FeatureFlagHistory_featureFlagId_idx`(`featureFlagId`),\n    INDEX `FeatureFlagHistory_userId_idx`(`userId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230222182342_add_sort_index_for_env/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[projectId,sortIndex]` on the table `Environment` will be added. If there are existing duplicate values, this will fail.\n\n*/\n-- AlterTable\nALTER TABLE `Environment` ADD COLUMN `sortIndex` INTEGER NOT NULL DEFAULT 0;"
  },
  {
    "path": "apps/web/prisma/migrations/20230302165144_add_description_to_feature_flag/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `FeatureFlag` ADD COLUMN `description` VARCHAR(191) NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230303082044_use_text_for_description_for_longer_texts/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `FeatureFlag` MODIFY `description` TEXT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230303121237_add_flag_value_table/migration.sql",
    "content": "DROP INDEX `FeatureFlagHistory_featureFlagId_idx` ON `FeatureFlagHistory`;\n\n-- AlterTable\nALTER TABLE `FeatureFlagHistory` DROP COLUMN `featureFlagId`,\n    ADD COLUMN `environmentId` VARCHAR(191) NULL,\n    ADD COLUMN `flagId` VARCHAR(191) NULL;\n\n-- DropIndex\n\nCREATE TABLE `FlagValue` (\n    `id` VARCHAR(191) NOT NULL DEFAULT (uuid()),\n    `flagId` VARCHAR(191) NOT NULL,\n    `environmentId` VARCHAR(191) NOT NULL,\n    `isEnabled` BOOLEAN NOT NULL DEFAULT false,\n  \t`name` VARCHAR(191),\n\n    INDEX `FlagValue_flagId_idx`(`flagId`),\n    INDEX `FlagValue_environmentId_idx`(`environmentId`),\n    UNIQUE INDEX `FlagValue_flagId_environmentId_key`(`flagId`, `environmentId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n\nCREATE TABLE `_tempFlag` (\n  `id` VARCHAR(191) NOT NULL DEFAULT (uuid()),\n  `name` VARCHAR(191),\n  `projectId` VARCHAR(191),\n  `environmentId` VARCHAR(191),\n  `description` TEXT,\n  `createdAt` DATETIME(3),\n\t`updatedAt` DATETIME(3),\n\n\tUNIQUE INDEX `_tempFlag_key`(`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\nINSERT INTO _tempFlag (name, projectId, environmentId, description, createdAt, updatedAt) SELECT name, projectId, MAX(environmentId), MAX(description), MAX(createdAt), MAX(updatedAt) FROM FeatureFlag GROUP BY name, projectId;\n\nINSERT INTO FlagValue (id, flagId, environmentId, isEnabled) SELECT uuid() as id, _tempFlag.id, FeatureFlag.environmentId, enabled FROM FeatureFlag INNER JOIN _tempFlag ON _tempFlag.name = FeatureFlag.name;\n\nDELETE FROM FeatureFlagHistory;\n\nDELETE FROM FeatureFlag;\n\nINSERT INTO FeatureFlag (id, name, projectId, environmentId, description, createdAt, updatedAt) SELECT id, name, projectId, environmentId, description, createdAt, updatedAt FROM _tempFlag;\n\n-- DropIndex\nDROP INDEX `FeatureFlag_projectId_name_environmentId_key` ON `FeatureFlag`;\n\n-- AlterTable\nALTER TABLE `FeatureFlag` DROP COLUMN `enabled`;\n\n-- CreateIndex\nCREATE UNIQUE INDEX `FeatureFlag_projectId_name_key` ON `FeatureFlag`(`projectId`, `name`);\n\n-- CreateIndex\nCREATE INDEX `FeatureFlagHistory_flagId_environmentId_idx` ON `FeatureFlagHistory`(`flagId`, `environmentId`);\n\nDROP TABLE _tempFlag;"
  },
  {
    "path": "apps/web/prisma/migrations/20230303130553_/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `name` on the `FlagValue` table. All the data in the column will be lost.\n\n*/\n-- AlterTable\nALTER TABLE `FlagValue` DROP COLUMN `name`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230303181212_update_history/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `environmentId` on the `FeatureFlagHistory` table. All the data in the column will be lost.\n  - You are about to drop the column `flagId` on the `FeatureFlagHistory` table. All the data in the column will be lost.\n  - Added the required column `flagValueId` to the `FeatureFlagHistory` table without a default value. This is not possible if the table is not empty.\n\n*/\n-- DropIndex\nDROP INDEX `FeatureFlagHistory_flagId_environmentId_idx` ON `FeatureFlagHistory`;\n\n-- AlterTable\nALTER TABLE `FeatureFlagHistory` DROP COLUMN `environmentId`,\n    DROP COLUMN `flagId`,\n    ADD COLUMN `flagValueId` VARCHAR(191) NOT NULL;\n\n-- AlterTable\nALTER TABLE `FlagValue` ALTER COLUMN `id` DROP DEFAULT;\n\n-- CreateIndex\nCREATE INDEX `FeatureFlagHistory_flagValueId_idx` ON `FeatureFlagHistory`(`flagValueId`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230303181813_remove_env_flag_relation/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `environmentId` on the `FeatureFlag` table. All the data in the column will be lost.\n\n*/\n-- DropIndex\nDROP INDEX `FeatureFlag_environmentId_idx` ON `FeatureFlag`;\n\n-- AlterTable\nALTER TABLE `FeatureFlag` DROP COLUMN `environmentId`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230303182053_make_id_for_flag_values_unique/migration.sql",
    "content": "/*\n  Warnings:\n\n  - A unique constraint covering the columns `[id]` on the table `FlagValue` will be added. If there are existing duplicate values, this will fail.\n\n*/\n-- DropIndex\nDROP INDEX `FlagValue_flagId_environmentId_key` ON `FlagValue`;\n\n-- CreateIndex\nCREATE UNIQUE INDEX `FlagValue_id_key` ON `FlagValue`(`id`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230305160755_rename_flag_value_and_add_index_for_faster_access/migration.sql",
    "content": "-- CreateIndex\nCREATE INDEX `Environment_projectId_name_idx` ON `Environment`(`projectId`, `name`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230326163301_make_payment_interval_required/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `stripeCurrentPeriodEnd` on the `Project` table. All the data in the column will be lost.\n\n*/\n-- AlterTable\nSET SQL_MODE='ALLOW_INVALID_DATES';\n\nALTER TABLE `Project` ADD COLUMN `currentPeriodEnd` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP(3) + INTERVAL 30 DAY);\n\nUPDATE `Project` SET `currentPeriodEnd` = `stripeCurrentPeriodEnd` WHERE `stripeCurrentPeriodEnd` IS NOT NULL;\nUPDATE `Project` SET `currentPeriodEnd` = (CURRENT_TIMESTAMP(3) + INTERVAL 30 DAY) WHERE `stripeCurrentPeriodEnd` IS NULL;\n\nALTER TABLE `Project` DROP COLUMN `stripeCurrentPeriodEnd`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230511063052_add_coupon_codes_table/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `CouponCodes` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `code` VARCHAR(191) NOT NULL,\n    `planId` VARCHAR(191) NOT NULL,\n    `redeemedAt` DATETIME(3) NULL,\n    `redeemedById` VARCHAR(191) NULL,\n\n    UNIQUE INDEX `CouponCodes_code_key`(`code`),\n    INDEX `CouponCodes_redeemedById_idx`(`redeemedById`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230511064125_renmae_price_id_field_for_code/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `planId` on the `CouponCodes` table. All the data in the column will be lost.\n  - Added the required column `stripePriceId` to the `CouponCodes` table without a default value. This is not possible if the table is not empty.\n\n*/\n-- AlterTable\nALTER TABLE `CouponCodes` DROP COLUMN `planId`,\n    ADD COLUMN `stripePriceId` VARCHAR(191) NOT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230601155320_add_multivariate_flags/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `isEnabled` on the `FlagValue` table. All the data in the column will be lost.\n  - Added the required column `value` to the `FlagValue` table without a default value. This is not possible if the table is not empty.\n\n*/\n-- AlterTable\nALTER TABLE `FlagValue`\n    ADD COLUMN `type` ENUM('BOOLEAN', 'STRING', 'NUMBER', 'JSON') NOT NULL DEFAULT 'BOOLEAN',\n    ADD COLUMN `value` LONGTEXT NOT NULL;\n\nUPDATE `FlagValue` SET `value` = IF(`isEnabled`, 'true', 'false') WHERE `type` = 'BOOLEAN';\n\n-- DropColumn\nALTER TABLE `FlagValue`\n    DROP COLUMN `isEnabled`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230601161058_update_flag_history/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to alter the column `oldValue` on the `FeatureFlagHistory` table. The data in that column could be lost. The data in that column will be cast from `TinyInt` to `LongText`.\n  - You are about to alter the column `newValue` on the `FeatureFlagHistory` table. The data in that column could be lost. The data in that column will be cast from `TinyInt` to `LongText`.\n\n*/\n-- AlterTable\nALTER TABLE `FeatureFlagHistory` MODIFY `oldValue` LONGTEXT NULL,\n    MODIFY `newValue` LONGTEXT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230602080502_remove_json_field_from_flagtype_enum/migration.sql",
    "content": "/*\n  Warnings:\n\n  - The values [JSON] on the enum `FlagValue_type` will be removed. If these variants are still used in the database, this will fail.\n\n*/\n-- AlterTable\nALTER TABLE `FlagValue` MODIFY `type` ENUM('BOOLEAN', 'STRING', 'NUMBER') NOT NULL DEFAULT 'BOOLEAN';\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230611180244_move_flag_type_to_flag_instead_of_value/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `type` on the `FlagValue` table. All the data in the column will be lost.\n\n*/\n-- AlterTable\nALTER TABLE `FeatureFlag` ADD COLUMN `type` ENUM('BOOLEAN', 'STRING', 'NUMBER') NOT NULL DEFAULT 'BOOLEAN';\n\n-- AlterTable\nALTER TABLE `FlagValue` DROP COLUMN `type`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230628081242_add_api_key_table/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `APIKey` (\n    `id` VARCHAR(191) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `hashedKey` VARCHAR(191) NOT NULL,\n    `validDays` INTEGER NOT NULL,\n    `isRevoked` BOOLEAN NOT NULL DEFAULT false,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n\n    UNIQUE INDEX `APIKey_hashedKey_key`(`hashedKey`),\n    INDEX `APIKey_userId_idx`(`userId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230630140739_add_json_type/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `FeatureFlag` MODIFY `type` ENUM('BOOLEAN', 'STRING', 'NUMBER', 'JSON') NOT NULL DEFAULT 'BOOLEAN';\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230731133223_rename_apikey/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the `APIKey` table. If the table is not empty, all the data it contains will be lost.\n\n*/\n-- DropTable\nDROP TABLE `APIKey`;\n\n-- CreateTable\nCREATE TABLE `ApiKey` (\n    `id` VARCHAR(191) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `hashedKey` VARCHAR(191) NOT NULL,\n    `validDays` INTEGER NOT NULL,\n    `isRevoked` BOOLEAN NOT NULL DEFAULT false,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `userId` VARCHAR(191) NOT NULL,\n\n    UNIQUE INDEX `ApiKey_hashedKey_key`(`hashedKey`),\n    INDEX `ApiKey_userId_idx`(`userId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230803094512_change_api_key_validity_logic/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `isRevoked` on the `ApiKey` table. All the data in the column will be lost.\n  - You are about to drop the column `validDays` on the `ApiKey` table. All the data in the column will be lost.\n  - Added the required column `validUntil` to the `ApiKey` table without a default value. This is not possible if the table is not empty.\n\n*/\n-- AlterTable\nALTER TABLE `ApiKey` DROP COLUMN `isRevoked`,\n    DROP COLUMN `validDays`,\n    ADD COLUMN `revokedAt` DATETIME(3) NULL,\n    ADD COLUMN `validUntil` DATETIME(3) NOT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230901064929_add_requests/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `ApiRequest` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `type` ENUM('GET_CONFIG', 'TRACK_VIEW') NOT NULL,\n    `hashedIp` VARCHAR(191) NOT NULL,\n    `durationInMs` INTEGER NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n\n    INDEX `ApiRequest_projectId_idx`(`projectId`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230901065851_remove_hashed_ip_field/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to drop the column `hashedIp` on the `ApiRequest` table. All the data in the column will be lost.\n\n*/\n-- AlterTable\nALTER TABLE `ApiRequest` DROP COLUMN `hashedIp`;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20230903075910_add_user_onboarding_information/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `User` ADD COLUMN `experienceLevelFlags` INTEGER NULL,\n    ADD COLUMN `experienceLevelTests` INTEGER NULL,\n    ADD COLUMN `hasCompletedOnboarding` BOOLEAN NOT NULL DEFAULT false,\n    ADD COLUMN `profession` VARCHAR(191) NULL,\n    ADD COLUMN `technologies` JSON NULL;\n\n\nUPDATE `User` SET `hasCompletedOnboarding` = true;"
  },
  {
    "path": "apps/web/prisma/migrations/20231207205533_add_api_version_to_request/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `ApiRequest` ADD COLUMN `apiVersion` VARCHAR(191) NOT NULL DEFAULT 'v0',\n    MODIFY `type` ENUM('GET_CONFIG', 'GET_CONFIG_SCRIPT', 'TRACK_VIEW') NOT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20231207205701_add_apiversion_enum/migration.sql",
    "content": "/*\n  Warnings:\n\n  - You are about to alter the column `apiVersion` on the `ApiRequest` table. The data in that column could be lost. The data in that column will be cast from `VarChar(191)` to `Enum(EnumId(3))`.\n\n*/\n-- AlterTable\nALTER TABLE `ApiRequest` MODIFY `apiVersion` ENUM('V0', 'V1') NOT NULL DEFAULT 'V0';\n"
  },
  {
    "path": "apps/web/prisma/migrations/20240620195120_add_apirequest_type/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `ApiRequest` MODIFY `type` ENUM('GET_CONFIG', 'GET_CONFIG_SCRIPT', 'TRACK_VIEW', 'TRACK_CONVERSION') NOT NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20240621084922_add_indices_for_apirequest/migration.sql",
    "content": "-- CreateIndex\nCREATE INDEX `ApiRequest_createdAt_idx` ON `ApiRequest`(`createdAt`);\n\n-- CreateIndex\nCREATE INDEX `ApiRequest_type_idx` ON `ApiRequest`(`type`);\n"
  },
  {
    "path": "apps/web/prisma/migrations/20240826064116_add_integrations/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `Integration` (\n    `id` VARCHAR(191) NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n    `type` ENUM('GITHUB') NOT NULL,\n    `settings` JSON NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n\n    INDEX `Integration_projectId_idx`(`projectId`),\n    UNIQUE INDEX `Integration_projectId_type_key`(`projectId`, `type`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20240903210250_add_anonymous_id_to_event/migration.sql",
    "content": "-- AlterTable\nALTER TABLE `Event` ADD COLUMN `anonymousId` VARCHAR(191) NULL;\n"
  },
  {
    "path": "apps/web/prisma/migrations/20250131071445_add_flag_rulesets/migration.sql",
    "content": "-- CreateTable\nCREATE TABLE `UserSegment` (\n    `id` VARCHAR(191) NOT NULL,\n    `projectId` VARCHAR(191) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `schema` JSON NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n\n    INDEX `UserSegment_projectId_idx`(`projectId`),\n    UNIQUE INDEX `UserSegment_projectId_name_key`(`projectId`, `name`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n\n-- CreateTable\nCREATE TABLE `FlagRuleSet` (\n    `id` VARCHAR(191) NOT NULL,\n    `flagValueId` VARCHAR(191) NOT NULL,\n    `name` VARCHAR(191) NOT NULL,\n    `rules` JSON NOT NULL,\n    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),\n    `updatedAt` DATETIME(3) NOT NULL,\n\n    INDEX `FlagRuleSet_flagValueId_idx`(`flagValueId`),\n    UNIQUE INDEX `FlagRuleSet_flagValueId_name_key`(`flagValueId`, `name`),\n    PRIMARY KEY (`id`)\n) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n"
  },
  {
    "path": "apps/web/prisma/migrations/migration_lock.toml",
    "content": "# Please do not edit this file manually\n# It should be added in your version-control system (i.e. Git)\nprovider = \"mysql\""
  },
  {
    "path": "apps/web/prisma/schema.prisma",
    "content": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n  provider        = \"prisma-client-js\"\n  previewFeatures = [\"driverAdapters\", \"typedSql\"]\n}\n\ndatasource db {\n  provider     = \"mysql\"\n  url          = env(\"DATABASE_URL\")\n  relationMode = \"prisma\"\n}\n\nmodel Example {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n}\n\nenum ROLE {\n  ADMIN\n  USER\n}\n\nenum FeatureFlagType {\n  BOOLEAN\n  STRING\n  NUMBER\n  JSON\n}\n\n// Necessary for Next auth\nmodel Account {\n  id                       String  @id @default(cuid())\n  userId                   String\n  type                     String\n  provider                 String\n  providerAccountId        String\n  refresh_token            String? @db.Text\n  access_token             String? @db.Text\n  refresh_token_expires_in Int?\n  expires_at               Int?\n  token_type               String?\n  scope                    String?\n  id_token                 String? @db.Text\n  session_state            String?\n  user                     User    @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@unique([provider, providerAccountId])\n  @@index([userId])\n}\n\nmodel Session {\n  id           String   @id @default(cuid())\n  sessionToken String   @unique\n  userId       String\n  expires      DateTime\n  user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@index([userId])\n}\n\nmodel User {\n  id                 String               @id @default(cuid())\n  name               String?\n  email              String?              @unique\n  emailVerified      DateTime?\n  image              String?\n  accounts           Account[]\n  sessions           Session[]\n  invites            ProjectInvite[]\n  projects           ProjectUser[]\n  featureFlagHistory FeatureFlagHistory[]\n  CouponCodes        CouponCodes[]\n  apiKeys            ApiKey[]\n\n  // Metadata\n  hasCompletedOnboarding Boolean @default(false)\n  profession             String?\n  technologies           Json? // gonna be an array of strings\n  experienceLevelFlags   Int?\n  experienceLevelTests   Int?\n}\n\nmodel VerificationToken {\n  identifier String\n  token      String   @unique\n  expires    DateTime\n\n  @@unique([identifier, token])\n}\n\nmodel Project {\n  id           String          @id @default(cuid())\n  createdAt    DateTime        @default(now())\n  updatedAt    DateTime        @updatedAt\n  name         String\n  tests        Test[]\n  invites      ProjectInvite[]\n  users        ProjectUser[]\n  featureFlags FeatureFlag[]\n  environments Environment[]\n\n  stripeCustomerId     String?  @unique\n  stripeSubscriptionId String?  @unique\n  stripePriceId        String?\n  currentPeriodEnd     DateTime @default(dbgenerated(\"(CURRENT_TIMESTAMP(3) + INTERVAL 30 DAY)\"))\n\n  apiRequests  ApiRequest[]\n  integrations Integration[]\n  userSegments UserSegment[]\n}\n\nmodel ProjectUser {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  userId    String\n  user      User     @relation(fields: [userId], references: [id], onDelete: Cascade)\n  projectId String\n  project   Project  @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  role      ROLE     @default(USER)\n\n  @@unique([userId, projectId])\n  @@index([userId])\n  @@index([projectId])\n}\n\nmodel ProjectInvite {\n  id        String    @id @default(cuid())\n  createdAt DateTime  @default(now())\n  updatedAt DateTime  @updatedAt\n  email     String\n  projectId String\n  project   Project   @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  userId    String?\n  user      User?     @relation(fields: [userId], references: [id], onDelete: Cascade)\n  usedAt    DateTime?\n\n  @@unique([projectId, email])\n  @@index([projectId])\n  @@index([userId])\n}\n\nmodel Test {\n  id String @id @default(cuid())\n\n  project   Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  projectId String\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  name      String\n  options   Option[]\n  events    Event[]\n\n  @@unique([projectId, name])\n  @@index([projectId])\n}\n\nmodel Option {\n  id         String  @id @default(cuid())\n  identifier String\n  chance     Decimal\n\n  testId String\n  test   Test   @relation(fields: [testId], references: [id], onDelete: Cascade)\n\n  @@unique([testId, identifier])\n}\n\nmodel Event {\n  id String @id @default(cuid())\n\n  test   Test   @relation(fields: [testId], references: [id], onDelete: Cascade)\n  testId String\n\n  type            Int\n  selectedVariant String\n  createdAt       DateTime @default(now())\n\n  anonymousId String?\n\n  @@index([testId])\n  @@index([type])\n  @@index([selectedVariant])\n}\n\nmodel FeatureFlag {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  name      String\n\n  project   Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  projectId String\n\n  description String?            @db.Text\n  values      FeatureFlagValue[]\n  type        FeatureFlagType    @default(BOOLEAN)\n\n  @@unique([projectId, name])\n  @@index([projectId])\n}\n\nmodel FeatureFlagValue {\n  id     String      @id @unique @default(cuid())\n  flagId String\n  flag   FeatureFlag @relation(fields: [flagId], references: [id], onDelete: Cascade)\n\n  environmentId String\n  environment   Environment @relation(fields: [environmentId], references: [id], onDelete: Cascade)\n\n  value   String               @db.LongText\n  history FeatureFlagHistory[]\n\n  ruleSets FlagRuleSet[]\n\n  @@index([flagId])\n  @@index([environmentId])\n  @@map(\"FlagValue\")\n}\n\nmodel Environment {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n  name      String\n\n  project   Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  projectId String\n\n  sortIndex Int                @default(0)\n  FlagValue FeatureFlagValue[]\n\n  @@unique([projectId, name])\n  @@index([projectId])\n  @@index([projectId, name])\n}\n\nmodel FeatureFlagHistory {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n\n  oldValue String? @db.LongText\n  newValue String? @db.LongText\n\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade)\n  userId String\n\n  flagValue   FeatureFlagValue @relation(fields: [flagValueId], references: [id], onDelete: Cascade)\n  flagValueId String\n\n  @@index([flagValueId])\n  @@index([userId])\n}\n\nmodel CouponCodes {\n  id String @id @default(cuid())\n\n  createdAt DateTime @default(now())\n\n  code String @unique @default(cuid())\n\n  stripePriceId String\n\n  redeemedAt DateTime?\n\n  redeemedBy   User?   @relation(fields: [redeemedById], references: [id], onDelete: Cascade)\n  redeemedById String?\n\n  @@index([redeemedById])\n}\n\nmodel ApiKey {\n  id         String    @id @default(cuid())\n  name       String\n  hashedKey  String    @unique\n  validUntil DateTime\n  revokedAt  DateTime?\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  userId String\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@index([userId])\n}\n\nenum ApiRequestType {\n  GET_CONFIG\n  GET_CONFIG_SCRIPT\n  TRACK_VIEW\n  TRACK_CONVERSION\n}\n\nenum ApiVersion {\n  V0\n  V1\n}\n\nmodel ApiRequest {\n  id           String         @id @default(cuid())\n  createdAt    DateTime       @default(now())\n  type         ApiRequestType\n  durationInMs Int\n\n  apiVersion ApiVersion @default(V0)\n\n  projectId String\n  project   Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n\n  @@index([projectId])\n  @@index([createdAt])\n  @@index([type])\n}\n\nenum IntegrationType {\n  GITHUB\n}\n\nmodel Integration {\n  id        String   @id @default(cuid())\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  type      IntegrationType\n  settings  Json\n  project   Project         @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  projectId String\n\n  @@unique([projectId, type])\n  @@index([projectId])\n}\n\nmodel UserSegment {\n  id        String  @id @default(cuid())\n  projectId String\n  project   Project @relation(fields: [projectId], references: [id], onDelete: Cascade)\n  name      String\n  schema    Json\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  @@unique([projectId, name])\n  @@index([projectId])\n}\n\nmodel FlagRuleSet {\n  id          String           @id @default(cuid())\n  flagValueId String\n  flagValue   FeatureFlagValue @relation(fields: [flagValueId], references: [id], onDelete: Cascade)\n  name        String\n  rules       Json\n\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  @@unique([flagValueId, name])\n  @@index([flagValueId])\n}\n"
  },
  {
    "path": "apps/web/prisma/seedEvents.ts",
    "content": "import crypto from \"node:crypto\";\nimport { type Prisma, PrismaClient } from \"@prisma/client\";\nimport { AbbyEventType } from \"@tryabby/core\";\n\nconst prisma = new PrismaClient();\n\nfunction randomDateFromLast30Days(): Date {\n  const today = new Date();\n  const millisecondsIn30Days = 30 * 24 * 60 * 60 * 1000;\n  const randomBuffer = new Uint32Array(1);\n  crypto.getRandomValues(randomBuffer);\n  /// @ts-expect-error\n  const randomMillisecondsOffset = randomBuffer[0] % millisecondsIn30Days;\n  const randomDate = new Date(today.getTime() - randomMillisecondsOffset);\n  return randomDate;\n}\n\nasync function main() {\n  const user = await prisma.user.findFirst({\n    where: {},\n    include: { projects: true },\n  });\n\n  if (!user) {\n    throw new Error(\n      \"User for email not found. Please create an account first.\"\n    );\n  }\n\n  if (!user.projects[0]) {\n    throw new Error(\"User has no projects. Please create a project first.\");\n  }\n\n  const footerTest = await prisma.test.upsert({\n    where: {\n      projectId_name: {\n        name: \"Footer\",\n        projectId: user.projects[0].projectId,\n      },\n    },\n    create: { name: \"Footer\", projectId: user.projects[0].projectId },\n    update: {},\n  });\n\n  const ctaButtonTest = await prisma.test.upsert({\n    where: {\n      projectId_name: {\n        name: \"CTA Button\",\n        projectId: user.projects[0].projectId,\n      },\n    },\n    create: { name: \"CTA Button\", projectId: user.projects[0].projectId },\n    update: {},\n  });\n\n  await prisma.option.createMany({\n    data: [\n      {\n        identifier: \"oldFooter\",\n        chance: 0.5,\n        testId: footerTest.id,\n      },\n      {\n        identifier: \"newFooter\",\n        chance: 0.5,\n        testId: footerTest.id,\n      },\n      {\n        identifier: \"dark\",\n        chance: 0.33,\n        testId: ctaButtonTest.id,\n      },\n      {\n        identifier: \"light\",\n        chance: 0.33,\n        testId: ctaButtonTest.id,\n      },\n      {\n        identifier: \"cyperpunk\",\n        chance: 0.33,\n        testId: ctaButtonTest.id,\n      },\n    ],\n  });\n\n  await prisma.event.createMany({\n    data: [\n      ...Array.from<Prisma.EventCreateManyInput>({\n        length: Math.floor(Math.random() * 200),\n      }).map(\n        () =>\n          ({\n            selectedVariant: \"oldFooter\",\n            testId: footerTest.id,\n            type: AbbyEventType.PING,\n            createdAt: randomDateFromLast30Days(),\n          }) as Prisma.EventCreateManyInput\n      ),\n      ...Array.from<Prisma.EventCreateManyInput>({\n        length: Math.floor(Math.random() * 200),\n      }).map(\n        () =>\n          ({\n            selectedVariant: \"newFooter\",\n            testId: footerTest.id,\n            type: AbbyEventType.PING,\n            createdAt: randomDateFromLast30Days(),\n          }) as Prisma.EventCreateManyInput\n      ),\n      ...Array.from<Prisma.EventCreateManyInput>({\n        length: Math.floor(Math.random() * 200),\n      }).map(\n        () =>\n          ({\n            selectedVariant: \"oldFooter\",\n            testId: footerTest.id,\n            type: AbbyEventType.ACT,\n            createdAt: randomDateFromLast30Days(),\n          }) as Prisma.EventCreateManyInput\n      ),\n      ...Array.from<Prisma.EventCreateManyInput>({\n        length: Math.floor(Math.random() * 200),\n      }).map(\n        () =>\n          ({\n            selectedVariant: \"newFooter\",\n            testId: footerTest.id,\n            type: AbbyEventType.ACT,\n            createdAt: randomDateFromLast30Days(),\n          }) as Prisma.EventCreateManyInput\n      ),\n    ],\n  });\n}\n\nmain()\n  .then(async () => {\n    await prisma.$disconnect();\n  })\n  .catch(async (e) => {\n    console.error(e);\n    await prisma.$disconnect();\n    process.exit(1);\n  });\n"
  },
  {
    "path": "apps/web/prisma/sql/getEventsByTestIdForAllTime.sql",
    "content": "-- @param {String} $1:testId\n-- @param {Int} $2:type\n-- @param {String} $3:testIdAgain\n-- @param {Int} $4:typeAgain\n\nSELECT\n\tCOUNT(DISTINCT CASE WHEN anonymousId IS NOT NULL THEN\n\t\t\tanonymousId\n\t\tELSE\n\t\t\tCONCAT('NULL_', UUID())\n\t\tEND) AS uniqueEventCount,\n\tCOUNT(*) AS eventCount,\n\tTYPE,\n\tcreatedAt,\n\tselectedVariant\nFROM\n\t`Event`\nWHERE\n\ttestId = ?\n\tAND TYPE = ?\n\tAND(DATE(createdAt) BETWEEN DATE((\n\t\t\tSELECT\n\t\t\t\tMIN(createdAt)\n\t\t\t\tFROM `Event`\n\t\t\tWHERE\n\t\t\t\ttestId = ?\n\t\t\t\tAND TYPE = ?))\n\t\tAND DATE(NOW()))\nGROUP BY\n\tDATE(createdAt), selectedVariant\nORDER BY createdAt ASC;"
  },
  {
    "path": "apps/web/prisma/sql/getEventsByTestIdForDay.sql",
    "content": "-- @param {String} $1:testId\n-- @param {Int} $2:type\n-- @param {DateTime} $3:date\n\nSELECT\n\tCOUNT(DISTINCT CASE WHEN anonymousId IS NOT NULL THEN\n\t\t\tanonymousId\n\t\tELSE\n\t\t\tCONCAT('NULL_', UUID())\n\t\tEND) AS uniqueEventCount,\n\tCOUNT(*) AS eventCount,\n\tTYPE,\n\tcreatedAt,\n\tselectedVariant\nFROM\n\t`Event`\nWHERE\n\ttestId = ?\n\tAND TYPE = ?\n\tAND DATE(createdAt) = DATE(?)\nGROUP BY\n\tHOUR(createdAt),\n\tselectedVariant\nORDER BY createdAt ASC;"
  },
  {
    "path": "apps/web/prisma/sql/getEventsByTestIdForLast30Days.sql",
    "content": "-- @param {String} $1:testId\n-- @param {Int} $2:type\n\nSELECT\n\tCOUNT(DISTINCT CASE WHEN anonymousId IS NOT NULL THEN\n\t\t\tanonymousId\n\t\tELSE\n\t\t\tCONCAT('NULL_', UUID())\n\t\tEND) AS uniqueEventCount,\n\tCOUNT(*) AS eventCount,\n\tTYPE,\n\tcreatedAt,\n\tselectedVariant\nFROM\n\t`Event`\nWHERE\n\ttestId = ?\n\tAND TYPE = ?\n\tAND createdAt >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)\nGROUP BY\n\tDATE(createdAt),\n\tselectedVariant\nORDER BY createdAt ASC;\n"
  },
  {
    "path": "apps/web/sentry.client.config.ts",
    "content": "// This file configures the initialization of Sentry on the client.\n// The config you add here will be used whenever a users loads a page in their browser.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from \"@sentry/nextjs\";\n\nSentry.init({\n  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,\n\n  // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.\n  tracesSampleRate: 1,\n\n  // Setting this option to true will print useful information to the console while you're setting up Sentry.\n  debug: false,\n});\n"
  },
  {
    "path": "apps/web/sentry.edge.config.ts",
    "content": "// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on).\n// The config you add here will be used whenever one of the edge features is loaded.\n// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from \"@sentry/nextjs\";\n\nSentry.init({\n  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,\n\n  // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.\n  tracesSampleRate: 1,\n\n  // Setting this option to true will print useful information to the console while you're setting up Sentry.\n  debug: false,\n});\n"
  },
  {
    "path": "apps/web/sentry.server.config.ts",
    "content": "// This file configures the initialization of Sentry on the server.\n// The config you add here will be used whenever the server handles a request.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from \"@sentry/nextjs\";\n\nSentry.init({\n  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,\n\n  // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.\n  tracesSampleRate: 1,\n\n  // Setting this option to true will print useful information to the console while you're setting up Sentry.\n  debug: false,\n});\n"
  },
  {
    "path": "apps/web/src/api/helpers.ts",
    "content": "import { env } from \"env/server.mjs\";\nimport type { MiddlewareHandler } from \"hono\";\nimport { getCookie } from \"hono/cookie\";\nimport type { Session } from \"next-auth\";\nimport { decode } from \"next-auth/jwt\";\n\nexport const authMiddleware: MiddlewareHandler<{\n  Variables: {\n    user: NonNullable<Session[\"user\"]>;\n  };\n}> = async (c, next) => {\n  const tokenCookie = getCookie(\n    c,\n    env.NODE_ENV === \"production\"\n      ? \"__Secure-next-auth.session-token\"\n      : \"next-auth.session-token\"\n  );\n  if (!tokenCookie) {\n    return c.json({ error: \"Unauthorized\" }, { status: 401 });\n  }\n  if (!env.NEXTAUTH_SECRET) {\n    throw new Error(\"NEXTAUTH_SECRET is not set\");\n  }\n  const session = await decode({\n    secret: env.NEXTAUTH_SECRET,\n    token: tokenCookie,\n  });\n  if (!session || !session.user) {\n    return c.json({ error: \"Unauthorized\" }, { status: 401 });\n  }\n  c.set(\"user\", session.user);\n  return next();\n};\n"
  },
  {
    "path": "apps/web/src/api/index.ts",
    "content": "import { makeConfigRoute } from \"api/routes/v1_config\";\nimport { makeProjectDataRoute } from \"api/routes/v1_project_data\";\nimport { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { makeHealthRoute } from \"./routes/health\";\nimport { makeIntegrationsRoute } from \"./routes/integrations\";\nimport { makeLegacyProjectDataRoute } from \"./routes/legacy_project_data\";\nimport { makeEventRoute } from \"./routes/v1_event\";\nimport { makeV2ProjectDataRoute } from \"./routes/v2_project_data\";\n\nexport const app = new Hono()\n  .basePath(\"/api\")\n  // base middleware\n\n  .use(\"*\", cors({ origin: \"*\", maxAge: 86400 }))\n  .route(\"/health\", makeHealthRoute())\n  // legacy routes\n  .route(\"/data\", makeEventRoute())\n  .route(\"/dashboard\", makeLegacyProjectDataRoute())\n  // v1 routes\n  .route(\"/v1/config\", makeConfigRoute())\n  .route(\"/v1/data\", makeProjectDataRoute())\n  .route(\"/v1/track\", makeEventRoute())\n  // v2 routes\n  .route(\"/v2/data\", makeV2ProjectDataRoute())\n  .route(\"/integrations\", makeIntegrationsRoute());\n"
  },
  {
    "path": "apps/web/src/api/routes/health.test.ts",
    "content": "import { testClient } from \"hono/testing\";\nimport { makeHealthRoute } from \"./health\";\n\nvi.mock(\"server/db/client\", () => ({\n  prisma: {\n    verificationToken: {\n      count: vi.fn(async () => 1),\n    },\n  },\n}));\n\nvi.mock(\"server/db/redis\", () => ({\n  redis: {\n    get: vi.fn(async () => \"test\"),\n  },\n}));\n\nit(\"should work\", async () => {\n  const app = makeHealthRoute();\n\n  const res = await testClient(app).index.$get();\n\n  expect(res.status).toEqual(200);\n  expect(await res.json()).toEqual({ status: \"ok\" });\n});\n"
  },
  {
    "path": "apps/web/src/api/routes/health.ts",
    "content": "import { Hono } from \"hono\";\nimport { prisma } from \"server/db/client\";\nimport { redis } from \"server/db/redis\";\n\nexport function makeHealthRoute() {\n  const app = new Hono().get(\"/\", async (c) => {\n    await Promise.allSettled([\n      await prisma.verificationToken.count(),\n      await redis.get(\"test\"),\n    ]);\n    return c.json({ status: \"ok\" });\n  });\n  return app;\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/integrations.ts",
    "content": "import { zValidator } from \"@hono/zod-validator\";\nimport { Webhooks } from \"@octokit/webhooks\";\nimport { authMiddleware } from \"api/helpers\";\nimport { env } from \"env/server.mjs\";\nimport { Hono } from \"hono\";\nimport { getGithubApp } from \"server/common/github-app\";\nimport type { GithubIntegrationSettings } from \"server/common/integrations\";\nimport { prisma } from \"server/db/client\";\nimport { z } from \"zod\";\n\nexport function makeIntegrationsRoute() {\n  return new Hono()\n    .get(\n      \"/github\",\n      zValidator(\n        \"query\",\n        z.object({\n          projectId: z.string(),\n        })\n      ),\n      authMiddleware,\n      async (c) => {\n        const user = c.get(\"user\");\n        const { projectId } = c.req.valid(\"query\");\n        const project = await prisma.project.findFirst({\n          where: { id: projectId, users: { some: { userId: user.id } } },\n          include: { integrations: true },\n        });\n        const referrer = new URL(c.req.header(\"Referer\") ?? env.NEXTAUTH_URL);\n\n        if (!project) {\n          referrer.searchParams.set(\"error\", \"Unauthorized\");\n          return c.redirect(referrer.toString());\n        }\n        if (project.integrations.some((i) => i.type === \"GITHUB\")) {\n          referrer.searchParams.set(\"error\", \"Integration already exists\");\n          return c.redirect(referrer.toString());\n        }\n\n        const searchParams = new URLSearchParams();\n        searchParams.set(\"projectId\", projectId);\n\n        return c.redirect(\n          await getGithubApp().getInstallationUrl({\n            state: searchParams.toString(),\n          })\n        );\n      }\n    )\n    .get(\n      \"/github/setup\",\n      zValidator(\n        \"query\",\n        z.object({\n          installation_id: z.string().transform(Number),\n          setup_action: z.enum([\"install\", \"update\"]),\n          state: z.string().transform((s) => {\n            const url = new URLSearchParams(s);\n            const projectId = url.get(\"projectId\");\n            if (!projectId) {\n              throw new Error(\"projectId not found in state\");\n            }\n            return { projectId };\n          }),\n        })\n      ),\n      async (c) => {\n        const { installation_id, setup_action, state } = c.req.valid(\"query\");\n        if (setup_action === \"update\") {\n          return c.json({ message: \"Update not implemented\" }, { status: 501 });\n        }\n\n        const project = await prisma.project.findFirst({\n          where: { id: state.projectId },\n          include: { integrations: true },\n        });\n        if (!project) {\n          return c.json(\n            { message: \"Project not found\" },\n            {\n              status: 404,\n            }\n          );\n        }\n        await prisma.integration.create({\n          data: {\n            type: \"GITHUB\",\n            projectId: project.id,\n            settings: {\n              installationId: installation_id,\n              repositoryIds: [],\n            } satisfies GithubIntegrationSettings,\n          },\n        });\n        return c.redirect(\n          `${env.NEXTAUTH_URL}/projects/${project.id}/settings`\n        );\n      }\n    )\n    .post(\n      \"/github/webhook\",\n\n      async (c) => {\n        if (!env.GITHUB_APP_WEBHOOK_SECRET) {\n          return c.json({ message: \"Webhook secret not set\" }, { status: 500 });\n        }\n        const webhooks = new Webhooks({\n          secret: env.GITHUB_APP_WEBHOOK_SECRET,\n        });\n\n        webhooks.on(\"installation.deleted\", async ({ payload }) => {\n          const integration = await prisma.integration.findFirst({\n            where: {\n              settings: {\n                path: \"$.installationId\",\n                equals: payload.installation?.id,\n              },\n            },\n          });\n\n          if (!integration) return;\n          await prisma.integration.delete({ where: { id: integration.id } });\n        });\n\n        await webhooks.verifyAndReceive({\n          id: c.req.header(\"X-GitHub-Delivery\") as string,\n          // biome-ignore lint/suspicious/noExplicitAny: we don't care about the type here\n          name: c.req.header(\"X-GitHub-Event\") as any,\n          signature: c.req.header(\"X-Hub-Signature-256\") as string,\n          payload: await c.req.text(),\n        });\n        return c.json({ message: \"ok\" });\n      }\n    );\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/legacy_project_data.test.ts",
    "content": "import type {\n  FeatureFlag,\n  FeatureFlagValue,\n  Option,\n  Test,\n} from \"@prisma/client\";\nimport type { Decimal } from \"@prisma/client/runtime/library\";\nimport { testClient } from \"hono/testing\";\nimport { jobManager } from \"server/queue/Manager\";\nimport { makeLegacyProjectDataRoute } from \"./legacy_project_data\";\n\nvi.mock(\"../../env/server.mjs\", () => ({\n  env: {},\n}));\n\nvi.mock(\"server/queue/Manager\", () => ({\n  jobManager: {\n    emit: vi.fn().mockResolvedValue(null),\n  },\n}));\n\nvi.mock(\"server/db/client\", () => ({\n  prisma: {\n    featureFlagValue: {\n      findMany: vi.fn().mockResolvedValue([\n        {\n          environmentId: \"\",\n          flag: {\n            name: \"First Flag\",\n            type: \"BOOLEAN\",\n          },\n          flagId: \"\",\n          id: \"\",\n          value: \"true\",\n        },\n      ] satisfies Array<\n        FeatureFlagValue & { flag: Pick<FeatureFlag, \"name\" | \"type\"> }\n      >),\n    },\n    test: {\n      findMany: vi.fn().mockResolvedValue([\n        {\n          id: \"\",\n          name: \"First Test\",\n          createdAt: new Date(),\n          projectId: \"\",\n          updatedAt: new Date(),\n          options: [\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n          ],\n        },\n      ] satisfies Array<\n        Test & {\n          options: Array<Pick<Option, \"chance\">>;\n        }\n      >),\n    },\n  },\n}));\n\nvi.mock(\"server/db/redis\", () => ({\n  redis: {\n    get: vi.fn(async () => {}),\n    incr: vi.fn(async () => {}),\n  },\n}));\n\nafterEach(() => {\n  vi.clearAllMocks();\n});\n\ndescribe(\"Get Config\", () => {\n  it(\"should return the correct config\", async () => {\n    const app = makeLegacyProjectDataRoute();\n\n    const res = await testClient(app)[\":projectId\"].data.$get({\n      param: {\n        projectId: \"test\",\n      },\n      query: {\n        environment: \"test\",\n      },\n    });\n    expect(res.status).toBe(200);\n    const data = await res.json();\n\n    // typeguard to make test fail if data is not AbbyDataResponse\n    if (\"error\" in data) {\n      throw new Error(\"Expected data to not have an error key\");\n    }\n    expect((data as any).error).toBeUndefined();\n\n    expect(data.tests).toHaveLength(1);\n    expect(data.tests?.[0]?.name).toBe(\"First Test\");\n    expect(data.tests?.[0]?.weights).toEqual([0.25, 0.25, 0.25, 0.25]);\n\n    expect(data.flags).toHaveLength(1);\n    expect(data.flags?.[0]?.name).toBe(\"First Flag\");\n    expect(data.flags?.[0]?.isEnabled).toBe(true);\n\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledTimes(1);\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledWith(\n      \"after-data-request\",\n      expect.objectContaining({})\n    );\n  });\n});\n"
  },
  {
    "path": "apps/web/src/api/routes/legacy_project_data.ts",
    "content": "import { type Context, Hono } from \"hono\";\nimport { endTime, startTime, timing } from \"hono/timing\";\n\nimport { zValidator } from \"@hono/zod-validator\";\nimport { cors } from \"hono/cors\";\nimport { prisma } from \"server/db/client\";\n\nimport type { LegacyAbbyDataResponse } from \"@tryabby/core\";\nimport { transformFlagValue } from \"lib/flags\";\nimport createCache from \"server/common/memory-cache\";\n\nimport { afterDataRequestQueue } from \"server/queue/queues\";\nimport { z } from \"zod\";\n\nconst configCache = createCache<string, LegacyAbbyDataResponse>({\n  name: \"legacyConfigCache\",\n  expireAfterMilliseconds: 1000 * 10,\n});\n\nasync function getAbbyResponseWithCache({\n  environment,\n  projectId,\n  c,\n}: {\n  environment: string;\n  projectId: string;\n  c: Context;\n}) {\n  startTime(c, \"readCache\");\n  const cachedConfig = configCache.get(projectId + environment);\n  endTime(c, \"readCache\");\n\n  c.header(\"X-Abby-Cache\", cachedConfig !== undefined ? \"HIT\" : \"MISS\");\n  if (cachedConfig) {\n    return cachedConfig;\n  }\n\n  startTime(c, \"db\");\n  const [tests, flags] = await Promise.all([\n    prisma.test.findMany({\n      where: {\n        projectId,\n      },\n      include: { options: true },\n    }),\n    prisma.featureFlagValue.findMany({\n      where: {\n        environment: {\n          name: environment,\n          projectId,\n        },\n        flag: {\n          type: \"BOOLEAN\",\n        },\n      },\n      include: { flag: { select: { name: true, type: true } } },\n    }),\n  ]);\n\n  endTime(c, \"db\");\n  const response = {\n    tests: tests.map((test) => ({\n      name: test.name,\n      weights: test.options.map((o) => o.chance.toNumber()),\n    })),\n    flags: flags.map((flagValue) => {\n      const value = transformFlagValue(flagValue.value, flagValue.flag.type);\n      return {\n        name: flagValue.flag.name,\n        isEnabled:\n          flagValue.flag.type === \"BOOLEAN\" ? value === true : value !== null,\n      };\n    }),\n  } satisfies LegacyAbbyDataResponse;\n\n  configCache.set(projectId + environment, response);\n  return response;\n}\n\nexport function makeLegacyProjectDataRoute() {\n  const app = new Hono().get(\n    \"/:projectId/data\",\n    cors({\n      origin: \"*\",\n      maxAge: 86400,\n    }),\n    zValidator(\n      \"query\",\n      z.object({\n        environment: z.string(),\n      })\n    ),\n    timing(),\n    async (c) => {\n      const projectId = c.req.param(\"projectId\");\n      const { environment } = c.req.valid(\"query\");\n\n      const now = performance.now();\n\n      try {\n        startTime(c, \"getAbbyResponseWithCache\");\n        const response = await getAbbyResponseWithCache({\n          projectId,\n          environment,\n          c,\n        });\n        endTime(c, \"getAbbyResponseWithCache\");\n\n        afterDataRequestQueue.add(\"after-data-request\", {\n          apiVersion: \"V0\",\n          functionDuration: performance.now() - now,\n          projectId,\n        });\n\n        return c.json(response);\n      } catch (e) {\n        console.error(e);\n        return c.json({ error: \"Internal server error\" }, { status: 500 });\n      }\n    }\n  );\n  return app;\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_config.test.ts",
    "content": "import { testClient } from \"hono/testing\";\nimport { prisma } from \"server/db/client\";\nimport { type handleGET, handlePUT } from \"server/services/ConfigService\";\nimport { makeConfigRoute } from \"./v1_config\";\n\nvi.mock(\"../../env/server.mjs\", () => ({\n  env: {\n    HASHING_SECRET: \"test\",\n  },\n}));\n\nconst mockConfig = {\n  environments: [\"test\"],\n  flags: [],\n  remoteConfig: {},\n  tests: {},\n} satisfies Awaited<ReturnType<typeof handleGET>>;\n\nvi.mock(\"server/services/ConfigService\", () => ({\n  handleGET: vi.fn(() => mockConfig),\n  handlePUT: vi.fn(() => mockConfig),\n}));\n\nvi.mock(\"server/db/redis\", () => ({\n  redis: {\n    incr: vi.fn(async () => \"test\"),\n  },\n}));\n\nvi.mock(\"server/db/client\", () => ({\n  prisma: {\n    apiKey: {\n      findUnique: vi.fn().mockResolvedValue({\n        validUntil: new Date(Date.now() + 1000),\n        revokedAt: null,\n      }),\n    },\n  },\n}));\n\ndescribe(\"Retreive Config\", () => {\n  it(\"should work with correct with an API provided\", async () => {\n    const app = makeConfigRoute();\n\n    const res = await testClient(app)[\":projectId\"].$get(\n      {\n        param: {\n          projectId: \"test\",\n        },\n      },\n      {\n        headers: {\n          Authorization: \"Bearer test\",\n        },\n      }\n    );\n    const data = await res.json();\n\n    expect(res.status).toEqual(200);\n    expect(data).toEqual(mockConfig);\n  });\n\n  it(\"should return an error if the API key is not provided\", async () => {\n    const app = makeConfigRoute();\n\n    const res = await testClient(app)[\":projectId\"].$get({\n      param: {\n        projectId: \"test\",\n      },\n    });\n\n    expect(res.status).toEqual(401);\n  });\n\n  it(\"should return an error if the API key is not found\", async () => {\n    const app = makeConfigRoute();\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce(null);\n\n    const res = await testClient(app)[\":projectId\"].$get(\n      {\n        param: {\n          projectId: \"test\",\n        },\n      },\n      {\n        headers: {\n          Authorization: \"Bearer test\",\n        },\n      }\n    );\n\n    expect(res.status).toEqual(401);\n  });\n\n  it(\"should return an error if the API key is outdated\", async () => {\n    const app = makeConfigRoute();\n\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce({\n      validUntil: new Date(Date.now() - 1000),\n      revokedAt: null,\n    } as any);\n\n    const res = await testClient(app)[\":projectId\"].$get(\n      {\n        param: {\n          projectId: \"test\",\n        },\n      },\n      {\n        headers: {\n          Authorization: \"Bearer test\",\n        },\n      }\n    );\n\n    expect(res.status).toEqual(401);\n  });\n\n  it(\"should return an error if the API key is revoked\", async () => {\n    const app = makeConfigRoute();\n\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce({\n      validUntil: new Date(Date.now() - 1000),\n      revokedAt: new Date(),\n    } as any);\n\n    const res = await testClient(app)[\":projectId\"].$get(\n      {\n        param: {\n          projectId: \"test\",\n        },\n      },\n      {\n        headers: {\n          Authorization: \"Bearer test\",\n        },\n      }\n    );\n\n    expect(res.status).toEqual(401);\n  });\n});\n\ndescribe(\"Update Config\", () => {\n  it(\"should work with correct with an API provided\", async () => {\n    const app = makeConfigRoute();\n\n    const res = await testClient(app)[\":projectId\"].$put(\n      {\n        param: {\n          projectId: \"test\",\n        },\n        json: {\n          environments: [\"test\"],\n          flags: [],\n          remoteConfig: {},\n          tests: {},\n          projectId: \"test\",\n          apiUrl: \"test\",\n        },\n      },\n      {\n        headers: {\n          Authorization: \"Bearer test\",\n        },\n      }\n    );\n\n    expect(res.status).toEqual(200);\n    expect(vi.mocked(handlePUT)).toHaveBeenCalledTimes(1);\n  });\n\n  it(\"should not work with invalid api keys\", async () => {\n    const app = makeConfigRoute();\n\n    const makeRequest = () =>\n      testClient(app)[\":projectId\"].$put(\n        {\n          param: {\n            projectId: \"test\",\n          },\n          json: {\n            environments: [\"test\"],\n            flags: [],\n            remoteConfig: {},\n            tests: {},\n            projectId: \"test\",\n            apiUrl: \"test\",\n          },\n        },\n        {\n          headers: {\n            Authorization: \"Bearer test\",\n          },\n        }\n      );\n\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce(null);\n\n    let res = await makeRequest();\n\n    expect(res.status).toBeGreaterThanOrEqual(400);\n\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce({\n      validUntil: new Date(Date.now() - 1000),\n      revokedAt: null,\n    } as any);\n\n    res = await makeRequest();\n\n    expect(res.status).toBeGreaterThanOrEqual(400);\n\n    vi.mocked(prisma.apiKey.findUnique).mockResolvedValueOnce({\n      validUntil: new Date(),\n      revokedAt: new Date(),\n    } as any);\n\n    res = await makeRequest();\n\n    expect(res.status).toBeGreaterThanOrEqual(400);\n  });\n});\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_config.ts",
    "content": "import { zValidator } from \"@hono/zod-validator\";\nimport type { ApiKey } from \"@prisma/client\";\nimport { abbyConfigSchema } from \"@tryabby/core\";\nimport { Hono, type MiddlewareHandler } from \"hono\";\nimport { prisma } from \"server/db/client\";\nimport * as ConfigService from \"server/services/ConfigService\";\nimport { hashString } from \"utils/apiKey\";\n\nconst apiKeyMiddleware: MiddlewareHandler<{\n  Variables: {\n    apiKey: ApiKey;\n  };\n}> = async (c, next) => {\n  const apiKey = c.req.header(\"authorization\")?.split(\" \")[1];\n\n  if (!apiKey) {\n    return c.json({ error: \"API key not provided\" }, { status: 401 });\n  }\n\n  const hashedApiKey = hashString(apiKey);\n\n  const apiKeyEntry = await prisma.apiKey.findUnique({\n    where: {\n      hashedKey: hashedApiKey,\n    },\n  });\n\n  if (!apiKeyEntry || apiKeyEntry.revokedAt !== null) {\n    return c.json(\n      { error: \"API key revoked\" },\n      {\n        status: 401,\n      }\n    );\n  }\n\n  if (apiKeyEntry.validUntil.getTime() < Date.now()) {\n    return c.json(\n      { error: \"API key expired\" },\n      {\n        status: 401,\n      }\n    );\n  }\n  c.set(\"apiKey\", apiKeyEntry);\n  await next();\n};\n\nexport function makeConfigRoute() {\n  return new Hono()\n    .get(\"/:projectId\", apiKeyMiddleware, async (c) => {\n      try {\n        const config = await ConfigService.handleGET({\n          projectId: c.req.param(\"projectId\"),\n        });\n        return c.json(config);\n      } catch (error) {\n        console.error(error);\n        return c.json({ error: \"Internal server error\" }, { status: 500 });\n      }\n    })\n    .put(\n      \"/:projectId\",\n      apiKeyMiddleware,\n      zValidator(\"json\", abbyConfigSchema),\n      async (c) => {\n        try {\n          const config = c.req.valid(\"json\");\n\n          await ConfigService.handlePUT({\n            config: config,\n            projectId: c.req.param(\"projectId\"),\n            userId: c.get(\"apiKey\").userId,\n          });\n\n          return c.json({ message: \"Config updated\" });\n        } catch (error) {\n          console.error(error);\n          return c.json({ error: \"Could not Update Config\" }, { status: 500 });\n        }\n      }\n    );\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_event.test.ts",
    "content": "import { AbbyEventType } from \"@tryabby/core\";\nimport { testClient } from \"hono/testing\";\nimport { prisma } from \"server/db/client\";\nimport { redis } from \"server/db/redis\";\nimport { makeEventRoute } from \"./v1_event\";\n\nvi.mock(\"server/common/plans\", () => ({\n  getLimitByPlan: vi.fn(() => {}),\n}));\n\nvi.mock(\"../../env/client.mjs\", () => ({}));\n\nvi.mock(\"server/db/client\", () => ({\n  prisma: {\n    event: {\n      create: vi.fn(),\n    },\n    apiRequest: {\n      create: vi.fn(),\n    },\n  },\n}));\n\nvi.mock(\"server/db/redis\", () => ({\n  redis: {\n    incr: vi.fn(async () => \"test\"),\n  },\n}));\n\nafterEach(() => {\n  vi.resetAllMocks();\n});\n\nit(\"should work with correct PING events\", async () => {\n  const app = makeEventRoute();\n\n  const _res = await testClient(app).index.$post({\n    json: {\n      projectId: \"test\",\n      selectedVariant: \"test\",\n      testName: \"test\",\n      type: AbbyEventType.PING,\n    },\n  });\n\n  expect(prisma.event.create).toHaveBeenCalledTimes(1);\n  expect(prisma.apiRequest.create).toHaveBeenCalledTimes(1);\n  expect(redis.incr).toHaveBeenCalledTimes(1);\n});\n\nit(\"should work with correct ACT events\", async () => {\n  const app = makeEventRoute();\n\n  const res = await testClient(app).index.$post({\n    json: {\n      projectId: \"test\",\n      selectedVariant: \"test\",\n      testName: \"test\",\n      type: AbbyEventType.ACT,\n    },\n  });\n\n  expect(res.status).toEqual(200);\n  expect(prisma.event.create).toHaveBeenCalledTimes(1);\n  expect(prisma.apiRequest.create).toHaveBeenCalledTimes(1);\n  expect(redis.incr).toHaveBeenCalledTimes(1);\n});\n\nit(\"should ignore unknown events\", async () => {\n  const app = makeEventRoute();\n\n  const res = await testClient(app).index.$post({\n    json: {\n      projectId: \"test\",\n      selectedVariant: \"test\",\n      testName: \"test\",\n      type: 3 as any,\n    },\n  });\n\n  expect(res.status).toBeGreaterThanOrEqual(400);\n  expect(prisma.event.create).toHaveBeenCalledTimes(0);\n  expect(prisma.apiRequest.create).toHaveBeenCalledTimes(0);\n  expect(redis.incr).toHaveBeenCalledTimes(0);\n});\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_event.ts",
    "content": "import { zValidator } from \"@hono/zod-validator\";\nimport { abbyEventSchema } from \"@tryabby/core\";\nimport { Hono } from \"hono\";\n\nimport isbot from \"isbot\";\nimport { checkRateLimit } from \"server/common/ratelimit\";\nimport { eventQueue } from \"server/queue/queues\";\n\nexport function makeEventRoute() {\n  const app = new Hono().post(\n    \"/\",\n    zValidator(\"json\", abbyEventSchema),\n    async (c) => {\n      const userAgent = c.req.header(\"user-agent\");\n      const now = performance.now();\n      // filter out bot users\n      if (isbot(userAgent)) {\n        return c.text(\"Forbidden\", 403);\n      }\n\n      const event = c.req.valid(\"json\");\n\n      let clientIp = (c.req.header(\"x-forwarded-for\") || \"\")\n        .split(\",\")\n        .pop()\n        ?.trim();\n\n      if (process.env.NODE_ENV === \"development\") {\n        clientIp = \"127.0.0.1\";\n      }\n\n      try {\n        //   // we only want to rate limit in production\n        if (process.env.NODE_ENV === \"production\") {\n          // Create a new ratelimiter, that allows 10 requests per 10 seconds\n\n          if (!clientIp) {\n            console.error(\"Unable to get client IP\");\n\n            return c.text(\"Internal Server Error\", 500);\n          }\n\n          const success = await checkRateLimit(clientIp);\n\n          if (!success) {\n            return c.text(\"Too Many Requests\", 429);\n          }\n        }\n\n        const duration = performance.now() - now;\n\n        const userAgent = c.req.header(\"user-agent\");\n        if (!userAgent || !clientIp) {\n          return c.text(\"Bad Request\", 400);\n        }\n\n        eventQueue.add(\"event\", {\n          ...event,\n          functionDuration: duration,\n          ipAddress: clientIp,\n          userAgent,\n        });\n\n        return c.text(\"OK\", 200);\n      } catch (err) {\n        console.error(err);\n        return c.text(\"Internal Server Error\", 500);\n      }\n    }\n  );\n\n  return app;\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_project_data.test.ts",
    "content": "import type {\n  FeatureFlag,\n  FeatureFlagValue,\n  Option,\n  Test,\n} from \"@prisma/client\";\nimport type { Decimal } from \"@prisma/client/runtime/library\";\nimport { testClient } from \"hono/testing\";\nimport { jobManager } from \"server/queue/Manager\";\nimport { makeProjectDataRoute } from \"./v1_project_data\";\n\nvi.mock(\"../../env/server.mjs\", () => ({\n  env: {},\n}));\n\nvi.mock(\"server/queue/Manager\", () => ({\n  jobManager: {\n    emit: vi.fn().mockResolvedValue(null),\n  },\n}));\n\nvi.mock(\"server/db/client\", () => ({\n  prisma: {\n    featureFlagValue: {\n      findMany: vi.fn().mockResolvedValue([\n        {\n          environmentId: \"\",\n          flag: {\n            name: \"First Flag\",\n            type: \"BOOLEAN\",\n          },\n          flagId: \"\",\n          id: \"\",\n          value: \"true\",\n        },\n        {\n          environmentId: \"\",\n          flag: {\n            name: \"First Config\",\n            type: \"NUMBER\",\n          },\n          flagId: \"\",\n          id: \"\",\n          value: \"2\",\n        },\n      ] satisfies Array<\n        FeatureFlagValue & { flag: Pick<FeatureFlag, \"name\" | \"type\"> }\n      >),\n    },\n    test: {\n      findMany: vi.fn().mockResolvedValue([\n        {\n          id: \"\",\n          name: \"First Test\",\n          createdAt: new Date(),\n          projectId: \"\",\n          updatedAt: new Date(),\n          options: [\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n            {\n              chance: { toNumber: () => 0.25 } as Decimal,\n            },\n          ],\n        },\n      ] satisfies Array<\n        Test & {\n          options: Array<Pick<Option, \"chance\">>;\n        }\n      >),\n    },\n  },\n}));\n\nvi.mock(\"server/db/redis\", () => ({\n  redis: {\n    get: vi.fn(async () => {}),\n    incr: vi.fn(async () => {}),\n  },\n}));\n\nafterEach(() => {\n  vi.clearAllMocks();\n});\n\ndescribe(\"Get Config\", () => {\n  it(\"should return the correct config\", async () => {\n    const app = makeProjectDataRoute();\n\n    const res = await testClient(app)[\":projectId\"].$get({\n      param: {\n        projectId: \"test\",\n      },\n      query: {\n        environment: \"test\",\n      },\n    });\n    expect(res.status).toBe(200);\n    const data = await res.json();\n\n    // typeguard to make test fail if data is not AbbyDataResponse\n    if (\"error\" in data) {\n      throw new Error(\"Expected data to not have an error key\");\n    }\n    expect((data as any).error).toBeUndefined();\n\n    expect(data.tests).toHaveLength(1);\n    expect(data.tests?.[0]?.name).toBe(\"First Test\");\n    expect(data.tests?.[0]?.weights).toEqual([0.25, 0.25, 0.25, 0.25]);\n\n    expect(data.flags).toHaveLength(1);\n    expect(data.flags?.[0]?.name).toBe(\"First Flag\");\n    expect(data.flags?.[0]?.value).toBe(true);\n\n    expect(data.remoteConfig).toHaveLength(1);\n    expect(data.remoteConfig?.[0]?.name).toBe(\"First Config\");\n    expect(data.remoteConfig?.[0]?.value).toBe(2);\n\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledTimes(1);\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledWith(\n      \"after-data-request\",\n      expect.objectContaining({})\n    );\n  });\n});\n\ndescribe(\"Get Config Script\", () => {\n  it(\"should return the correct config script\", async () => {\n    const app = makeProjectDataRoute();\n\n    const res = await testClient(app)[\":projectId\"][\"script.js\"].$get({\n      param: {\n        projectId: \"test\",\n      },\n      query: {\n        environment: \"test\",\n      },\n    });\n    expect(res.status).toBe(200);\n    const data = await res.text();\n\n    expect(data).toMatchInlineSnapshot(\n      '\"window.__abby_data__ = {\\\\\"tests\\\\\":[{\\\\\"name\\\\\":\\\\\"First Test\\\\\",\\\\\"weights\\\\\":[0.25,0.25,0.25,0.25]}],\\\\\"flags\\\\\":[{\\\\\"name\\\\\":\\\\\"First Flag\\\\\",\\\\\"value\\\\\":true}],\\\\\"remoteConfig\\\\\":[{\\\\\"name\\\\\":\\\\\"First Config\\\\\",\\\\\"value\\\\\":2}]}\"'\n    );\n\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledTimes(1);\n    expect(vi.mocked(jobManager.emit)).toHaveBeenCalledWith(\n      \"after-data-request\",\n      expect.objectContaining({})\n    );\n  });\n});\n"
  },
  {
    "path": "apps/web/src/api/routes/v1_project_data.ts",
    "content": "import { zValidator } from \"@hono/zod-validator\";\nimport { ABBY_WINDOW_KEY, type AbbyDataResponse } from \"@tryabby/core\";\nimport { type Context, Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { endTime, startTime, timing } from \"hono/timing\";\nimport { transformFlagValue } from \"lib/flags\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { prisma } from \"server/db/client\";\nimport { afterDataRequestQueue } from \"server/queue/queues\";\nimport { z } from \"zod\";\n\nexport const X_ABBY_CACHE_HEADER = \"X-Abby-Cache\";\n\nasync function getAbbyResponseWithCache({\n  environment,\n  projectId,\n  c,\n}: {\n  environment: string;\n  projectId: string;\n  c: Context;\n}) {\n  startTime(c, \"readCache\");\n  const cachedConfig = ConfigCache.getConfig({ environment, projectId });\n  endTime(c, \"readCache\");\n\n  c.header(X_ABBY_CACHE_HEADER, cachedConfig !== undefined ? \"HIT\" : \"MISS\");\n  if (cachedConfig) {\n    return cachedConfig;\n  }\n\n  startTime(c, \"db\");\n  const [tests, flags] = await Promise.all([\n    prisma.test.findMany({\n      where: {\n        projectId,\n      },\n      include: { options: { select: { chance: true } } },\n    }),\n    prisma.featureFlagValue.findMany({\n      where: {\n        environment: {\n          name: environment,\n          projectId,\n        },\n      },\n      include: { flag: { select: { name: true, type: true } } },\n    }),\n  ]);\n  endTime(c, \"db\");\n\n  const response = {\n    tests: tests.map((test) => ({\n      name: test.name,\n      weights: test.options.map((o) => o.chance.toNumber()),\n    })),\n    flags: flags\n      .filter(({ flag }) => flag.type === \"BOOLEAN\")\n      .map((flagValue) => {\n        return {\n          name: flagValue.flag.name,\n          value: transformFlagValue(flagValue.value, flagValue.flag.type),\n        };\n      }),\n    remoteConfig: flags\n      .filter(({ flag }) => flag.type !== \"BOOLEAN\")\n      .map((flagValue) => {\n        return {\n          name: flagValue.flag.name,\n          value: transformFlagValue(flagValue.value, flagValue.flag.type),\n        };\n      }),\n  } satisfies AbbyDataResponse;\n\n  ConfigCache.setConfig({ environment, projectId, value: response });\n  return response;\n}\n\nexport function makeProjectDataRoute() {\n  const app = new Hono()\n    .get(\n      \"/:projectId\",\n      zValidator(\n        \"query\",\n        z.object({\n          environment: z.string(),\n        })\n      ),\n      timing(),\n      async (c) => {\n        const projectId = c.req.param(\"projectId\");\n        const { environment } = c.req.valid(\"query\");\n\n        const now = performance.now();\n\n        try {\n          startTime(c, \"getAbbyResponseWithCache\");\n          const response = await getAbbyResponseWithCache({\n            projectId,\n            environment,\n            c,\n          });\n          endTime(c, \"getAbbyResponseWithCache\");\n\n          const duration = performance.now() - now;\n\n          afterDataRequestQueue.add(\"after-data-request\", {\n            apiVersion: \"V1\",\n            functionDuration: duration,\n            projectId,\n          });\n\n          return c.json(response);\n        } catch (e) {\n          console.error(e);\n          return c.json({ error: \"Internal server error\" }, { status: 500 });\n        }\n      }\n    )\n    .get(\n      \"/:projectId/script.js\",\n      cors({\n        origin: \"*\",\n        maxAge: 86400,\n      }),\n      zValidator(\n        \"query\",\n        z.object({\n          environment: z.string(),\n        })\n      ),\n      timing(),\n      async (c) => {\n        const projectId = c.req.param(\"projectId\");\n        const { environment } = c.req.valid(\"query\");\n\n        const now = performance.now();\n\n        try {\n          startTime(c, \"getAbbyResponseWithCache\");\n          const response = await getAbbyResponseWithCache({\n            projectId,\n            environment,\n            c,\n          });\n          endTime(c, \"getAbbyResponseWithCache\");\n\n          const jsContent = `window.${ABBY_WINDOW_KEY} = ${JSON.stringify(\n            response\n          )}`;\n\n          const duration = performance.now() - now;\n\n          afterDataRequestQueue.add(\"after-data-request\", {\n            apiVersion: \"V1\",\n            functionDuration: duration,\n            projectId,\n          });\n\n          return c.text(jsContent, {\n            headers: {\n              \"Content-Type\": \"application/javascript\",\n            },\n          });\n        } catch (e) {\n          console.error(e);\n          return c.json({ error: \"Internal server error\" }, { status: 500 });\n        }\n      }\n    );\n  return app;\n}\n"
  },
  {
    "path": "apps/web/src/api/routes/v2_project_data.ts",
    "content": "import { zValidator } from \"@hono/zod-validator\";\nimport { ABBY_WINDOW_KEY, type AbbyDataResponse } from \"@tryabby/core\";\nimport type { FlagRuleSet } from \"@tryabby/core/schema\";\nimport { type Context, Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\nimport { endTime, startTime, timing } from \"hono/timing\";\nimport { transformFlagValue } from \"lib/flags\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { prisma } from \"server/db/client\";\nimport { afterDataRequestQueue } from \"server/queue/queues\";\nimport { z } from \"zod\";\n\nexport const X_ABBY_CACHE_HEADER = \"X-Abby-Cache\";\n\nasync function getAbbyResponseWithCache({\n  environment,\n  projectId,\n  c,\n}: {\n  environment: string;\n  projectId: string;\n  c: Context;\n}) {\n  startTime(c, \"readCache\");\n  const cachedConfig = ConfigCache.getConfig({\n    environment,\n    projectId,\n  });\n  endTime(c, \"readCache\");\n\n  c.header(X_ABBY_CACHE_HEADER, cachedConfig !== undefined ? \"HIT\" : \"MISS\");\n  if (cachedConfig) {\n    return cachedConfig;\n  }\n\n  startTime(c, \"db\");\n  const [tests, flags] = await Promise.all([\n    prisma.test.findMany({\n      where: {\n        projectId,\n      },\n      include: { options: { select: { chance: true } } },\n    }),\n    prisma.featureFlagValue.findMany({\n      where: {\n        environment: {\n          name: environment,\n          projectId,\n        },\n      },\n      include: { flag: { select: { name: true, type: true } }, ruleSets: true },\n    }),\n  ]);\n  endTime(c, \"db\");\n\n  const response = {\n    tests: tests.map((test) => ({\n      name: test.name,\n      weights: test.options.map((o) => o.chance.toNumber()),\n    })),\n    flags: flags\n      .filter(({ flag }) => flag.type === \"BOOLEAN\")\n      .map((flagValue) => {\n        return {\n          name: flagValue.flag.name,\n          value: transformFlagValue(flagValue.value, flagValue.flag.type),\n          ruleSet: flagValue.ruleSets.at(0)?.rules\n            ? (flagValue.ruleSets.at(0)?.rules as FlagRuleSet)\n            : undefined,\n        };\n      }),\n    remoteConfig: flags\n      .filter(({ flag }) => flag.type !== \"BOOLEAN\")\n      .map((flagValue) => {\n        return {\n          name: flagValue.flag.name,\n          value: transformFlagValue(flagValue.value, flagValue.flag.type),\n          ruleSet: flagValue.ruleSets.at(0)?.rules\n            ? (flagValue.ruleSets.at(0)?.rules as FlagRuleSet)\n            : undefined,\n        };\n      }),\n  } satisfies AbbyDataResponse;\n\n  ConfigCache.setConfig({\n    environment,\n    projectId,\n    value: response,\n  });\n  return response;\n}\n\nexport function makeV2ProjectDataRoute() {\n  const app = new Hono()\n    .get(\n      \"/:projectId\",\n      zValidator(\n        \"query\",\n        z.object({\n          environment: z.string(),\n        })\n      ),\n      timing(),\n      async (c) => {\n        const projectId = c.req.param(\"projectId\");\n        const { environment } = c.req.valid(\"query\");\n\n        const now = performance.now();\n\n        try {\n          startTime(c, \"getAbbyResponseWithCache\");\n          const response = await getAbbyResponseWithCache({\n            projectId,\n            environment,\n            c,\n          });\n          endTime(c, \"getAbbyResponseWithCache\");\n\n          const duration = performance.now() - now;\n\n          afterDataRequestQueue.add(\"after-data-request\", {\n            apiVersion: \"V1\",\n            functionDuration: duration,\n            projectId,\n          });\n\n          return c.json(response);\n        } catch (e) {\n          console.error(e);\n          return c.json({ error: \"Internal server error\" }, { status: 500 });\n        }\n      }\n    )\n    .get(\n      \"/:projectId/script.js\",\n      cors({\n        origin: \"*\",\n        maxAge: 86400,\n      }),\n      zValidator(\n        \"query\",\n        z.object({\n          environment: z.string(),\n        })\n      ),\n      timing(),\n      async (c) => {\n        const projectId = c.req.param(\"projectId\");\n        const { environment } = c.req.valid(\"query\");\n\n        const now = performance.now();\n\n        try {\n          startTime(c, \"getAbbyResponseWithCache\");\n          const response = await getAbbyResponseWithCache({\n            projectId,\n            environment,\n            c,\n          });\n          endTime(c, \"getAbbyResponseWithCache\");\n\n          const jsContent = `window.${ABBY_WINDOW_KEY} = ${JSON.stringify(\n            response\n          )}`;\n\n          const duration = performance.now() - now;\n\n          afterDataRequestQueue.add(\"after-data-request\", {\n            apiVersion: \"V1\",\n            functionDuration: duration,\n            projectId,\n          });\n\n          return c.text(jsContent, {\n            headers: {\n              \"Content-Type\": \"application/javascript\",\n            },\n          });\n        } catch (e) {\n          console.error(e);\n          return c.json({ error: \"Internal server error\" }, { status: 500 });\n        }\n      }\n    );\n  return app;\n}\n"
  },
  {
    "path": "apps/web/src/components/AddABTestModal.tsx",
    "content": "import { TRPCClientError } from \"@trpc/client\";\nimport { TRPC_ERROR_CODES_BY_KEY } from \"@trpc/server/rpc\";\nimport { Modal } from \"components/Modal\";\nimport { Card, CardContent } from \"components/ui/card\";\nimport { useTracking } from \"lib/tracking\";\nimport { useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport {\n  CreateTestSection,\n  DEFAULT_NEW_VARIANT_PREFIX,\n} from \"./Test/CreateTestSection\";\n\ntype UIVariant = { name: string; weight: number; id: string };\n\nconst INITIAL_VARIANTS: Array<UIVariant> = [\n  {\n    name: `${DEFAULT_NEW_VARIANT_PREFIX}1`,\n    id: crypto.randomUUID(),\n  },\n  {\n    name: `${DEFAULT_NEW_VARIANT_PREFIX}2`,\n    id: crypto.randomUUID(),\n  },\n].map((v, _, array) => {\n  const weight = Number((100 / array.length).toFixed(2));\n  return { ...v, weight };\n});\n\nconst INITIAL_TEST_NAME = \"New Test\";\n\ntype Props = {\n  onClose: () => void;\n  isOpen: boolean;\n  projectId: string;\n};\n\nexport const AddABTestModal = ({ onClose, isOpen, projectId }: Props) => {\n  const [testName, setTestName] = useState(INITIAL_TEST_NAME);\n  const [variants, setVariants] = useState<Array<UIVariant>>(INITIAL_VARIANTS);\n\n  const variantsIncludeDuplicates =\n    new Set(variants.map((variant) => variant.name)).size !== variants.length;\n\n  const variantsWeightSum = Number(\n    variants\n      .map(({ weight }) => weight)\n      .reduce((sum, weight) => sum + weight, 0)\n      .toFixed(2)\n  );\n\n  const isConfirmButtonDisabled =\n    variantsIncludeDuplicates || Math.abs(variantsWeightSum - 100) > 0.3;\n\n  const createTestMutation = trpc.tests.createTest.useMutation();\n  const trpcContext = trpc.useContext();\n  const trackEvent = useTracking();\n\n  const onCreateClick = async () => {\n    try {\n      if (!variants.length || !variants[0]) throw new Error();\n\n      if (Math.abs(variantsWeightSum - 100) > 0.3) {\n        toast.error(\"Weights must add up to 100%\");\n        return;\n      }\n\n      await createTestMutation.mutateAsync({\n        name: testName,\n        variants: variants.map((v) => ({\n          name: v.name,\n          weight: Number.parseFloat((v.weight / 100).toFixed(3)), // Convert to decimal with proper precision\n        })),\n        projectId: projectId,\n      });\n\n      trpcContext.project.getProjectData.invalidate({\n        projectId: projectId,\n      });\n\n      setTestName(INITIAL_TEST_NAME);\n      setVariants(INITIAL_VARIANTS);\n\n      onClose();\n      trackEvent(\"AB-Test Created\", {\n        props: { \"Amount Of Variants\": variants.length },\n      });\n      toast.success(\"Test created\");\n    } catch (e) {\n      toast.error(\n        e instanceof TRPCClientError &&\n          e.shape.code === TRPC_ERROR_CODES_BY_KEY.FORBIDDEN\n          ? e.message\n          : \"Could not create test\"\n      );\n    }\n  };\n\n  return (\n    <Modal\n      isOpen={isOpen}\n      onClose={onClose}\n      title=\"Create new A/B Test\"\n      confirmText=\"Create\"\n      onConfirm={onCreateClick}\n      size=\"full\"\n      isConfirming={createTestMutation.isLoading}\n      isConfirmButtonDisabled={isConfirmButtonDisabled}\n    >\n      <Card>\n        <CardContent className=\"pt-6\">\n          <CreateTestSection\n            setTestName={setTestName}\n            setVariants={setVariants}\n            testName={testName}\n            variants={variants}\n          />\n        </CardContent>\n      </Card>\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/AddFeatureFlagModal.tsx",
    "content": "import { FeatureFlagType } from \"@prisma/client\";\nimport { TRPCClientError } from \"@trpc/client\";\nimport { TRPC_ERROR_CODES_BY_KEY } from \"@trpc/server/rpc\";\nimport { getFlagTypeClassName, transformDBFlagTypeToclient } from \"lib/flags\";\nimport { useTracking } from \"lib/tracking\";\nimport { cn } from \"lib/utils\";\nimport { useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { FlagIcon } from \"./FlagIcon\";\nimport { JSONEditor } from \"./JSONEditor\";\nimport { Modal } from \"./Modal\";\nimport { RadioSelect } from \"./RadioSelect\";\nimport { Toggle } from \"./Toggle\";\nimport { Input } from \"./ui/input\";\nimport { Label } from \"./ui/label\";\n\ntype Props = {\n  onClose: () => void;\n  isOpen: boolean;\n  projectId: string;\n  isRemoteConfig?: boolean;\n};\n\nexport type FlagFormValues = {\n  name: string;\n  value: string;\n  type: FeatureFlagType;\n};\n\nexport function ChangeFlagForm({\n  initialValues,\n  onChange: onChangeHandler,\n  errors,\n  canChangeType = true,\n  isRemoteConfig,\n}: {\n  initialValues: FlagFormValues;\n  onChange: (values: FlagFormValues) => void;\n  errors: Partial<FlagFormValues>;\n  canChangeType?: boolean;\n  isRemoteConfig?: boolean;\n}) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [state, setState] = useState<FlagFormValues>(initialValues);\n  const valueRef = useRef<Record<FeatureFlagType, string>>({\n    [FeatureFlagType.BOOLEAN]: \"false\",\n    [FeatureFlagType.STRING]: \"\",\n    [FeatureFlagType.NUMBER]: \"\",\n    [FeatureFlagType.JSON]: \"\",\n  });\n\n  const onChange = (values: Partial<FlagFormValues>) => {\n    const newState = { ...state, ...values };\n    if (values.type != null && values.type !== state.type) {\n      valueRef.current[state.type] = state.value;\n      newState.value = valueRef.current[newState.type] ?? \"\";\n    }\n    setState(newState);\n    onChangeHandler(newState);\n  };\n\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"grid gap-2\">\n        <Label htmlFor=\"name\">Name</Label>\n        <Input\n          id=\"name\"\n          name=\"name\"\n          ref={inputRef}\n          type=\"text\"\n          defaultValue={initialValues.name}\n          onChange={(e) => onChange({ name: e.target.value })}\n          placeholder={isRemoteConfig ? \"My Remote Config\" : \"My Feature Flag\"}\n          className=\"w-full\"\n        />\n        {errors.name && (\n          <p className=\"text-sm text-destructive\">{errors.name}</p>\n        )}\n      </div>\n\n      {isRemoteConfig && (\n        <div className=\"grid gap-2\">\n          <Label>Type</Label>\n          <RadioSelect\n            isDisabled={!canChangeType}\n            options={Object.entries(FeatureFlagType)\n              .filter(\n                ([, flagType]) => isRemoteConfig && flagType !== \"BOOLEAN\"\n              )\n              .map(([_key, flagType]) => ({\n                label: (\n                  <div\n                    className={cn(\n                      \"flex items-center gap-2\",\n                      getFlagTypeClassName(flagType)\n                    )}\n                  >\n                    <FlagIcon type={flagType} />\n                    <span>{transformDBFlagTypeToclient(flagType)}</span>\n                  </div>\n                ),\n                value: flagType,\n              }))}\n            onChange={(value) => {\n              if (!canChangeType) return;\n              onChange({\n                type: value,\n                value: value === \"BOOLEAN\" ? \"false\" : \"\",\n              });\n            }}\n            initialValue={initialValues.type}\n          />\n        </div>\n      )}\n\n      <div className=\"grid gap-2\">\n        <Label>Value</Label>\n        {state.type === \"BOOLEAN\" && (\n          <Toggle\n            isChecked={state.value === \"true\"}\n            onChange={(newState) => onChange({ value: String(newState) })}\n            label={state.value === \"true\" ? \"Enabled\" : \"Disabled\"}\n          />\n        )}\n        {state.type === \"STRING\" && (\n          <Input\n            type=\"text\"\n            value={state.value}\n            onChange={(e) => onChange({ value: e.target.value })}\n            placeholder={\n              isRemoteConfig ? \"My Remote Config\" : \"My Feature Flag\"\n            }\n          />\n        )}\n        {state.type === \"NUMBER\" && (\n          <Input\n            type=\"number\"\n            value={state.value}\n            onChange={(e) => onChange({ value: e.target.value })}\n            onKeyDown={(e) => {\n              [\"e\", \"E\", \"+\", \"-\"].includes(e.key) && e.preventDefault();\n            }}\n            placeholder=\"123\"\n          />\n        )}\n        {state.type === \"JSON\" && (\n          <JSONEditor\n            value={state.value}\n            onChange={(e) => onChange({ value: e })}\n          />\n        )}\n        {errors.value && (\n          <p className=\"text-sm text-destructive\">{errors.value}</p>\n        )}\n      </div>\n    </div>\n  );\n}\n\nexport const AddFeatureFlagModal = ({\n  onClose,\n  isOpen,\n  projectId,\n  isRemoteConfig,\n}: Props) => {\n  const _inputRef = useRef<HTMLInputElement>(null);\n  const ctx = trpc.useContext();\n  const stateRef = useRef<FlagFormValues>();\n  const trackEvent = useTracking();\n\n  const [errors, setErrors] = useState<Partial<FlagFormValues>>({});\n\n  const { mutateAsync } = trpc.flags.addFlag.useMutation({\n    onSuccess() {\n      ctx.flags.getFlags.invalidate({\n        projectId,\n      });\n    },\n  });\n\n  return (\n    <Modal\n      isOpen={isOpen}\n      onClose={onClose}\n      title={\n        isRemoteConfig ? \"Create new remote config\" : \"Create new feature flag\"\n      }\n      confirmText=\"Create\"\n      size=\"full\"\n      onConfirm={async () => {\n        const errors: Partial<FlagFormValues> = {};\n        if (!stateRef.current) return;\n\n        const trimmedName = stateRef.current.name.trim();\n\n        if (!trimmedName) {\n          errors.name = \"Name is required\";\n        }\n        if (!stateRef.current?.value) {\n          errors.value = \"Value is required\";\n        }\n        if (Object.keys(errors).length > 0) {\n          setErrors(errors);\n          return;\n        }\n\n        try {\n          await mutateAsync({\n            ...stateRef.current,\n            name: trimmedName,\n            projectId,\n          });\n          toast.success(\"Flag created\");\n          trackEvent(\"Feature Flag Created\", {\n            props: { \"Feature Flag Type\": stateRef.current.type },\n          });\n          onClose();\n        } catch (e) {\n          toast.error(\n            e instanceof TRPCClientError &&\n              e.shape.code === TRPC_ERROR_CODES_BY_KEY.FORBIDDEN\n              ? e.message\n              : \"Error creating flag\"\n          );\n        }\n      }}\n    >\n      <ChangeFlagForm\n        errors={errors}\n        initialValues={{\n          name: \"\",\n          type: isRemoteConfig ? \"STRING\" : \"BOOLEAN\",\n          value: isRemoteConfig ? \"\" : \"false\",\n        }}\n        onChange={(newState) => {\n          stateRef.current = newState;\n        }}\n        canChangeType\n        isRemoteConfig={isRemoteConfig}\n      />\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/AsyncCodeExample.tsx",
    "content": "import { trpc } from \"utils/trpc\";\nimport { BaseCodeSnippet } from \"./CodeSnippet\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\n\nexport function AsyncCodeExample() {\n  const { data, isLoading } = trpc.example.exampleSnippet.useQuery();\n\n  if (isLoading) {\n    return (\n      <div className=\"flex items-center justify-center\">\n        <LoadingSpinner height=\"2rem\" width=\"2rem\" />\n      </div>\n    );\n  }\n  if (!data) return null;\n\n  return <BaseCodeSnippet {...data} />;\n}\n"
  },
  {
    "path": "apps/web/src/components/Avatar.tsx",
    "content": "import * as RadixAvatar from \"@radix-ui/react-avatar\";\nimport type { ComponentProps } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nfunction getNameFromEmail(email: string) {\n  const [name] = email.split(\"@\");\n  if (name?.includes(\".\")) {\n    const [firstName, lastName] = name.split(\".\");\n    return `${firstName} ${lastName}`;\n  }\n  return name;\n}\n\ntype Props = {\n  imageUrl?: string;\n  userName?: string;\n} & ComponentProps<(typeof RadixAvatar)[\"Root\"]>;\n\nexport const Avatar = ({ imageUrl, userName, className, ...props }: Props) => (\n  <RadixAvatar.Root\n    // biome-ignore lint/a11y/useSemanticElements: <explanation>\n    role=\"button\"\n    className={twMerge(\n      \"inline-flex h-[45px] w-[45px] select-none items-center justify-center overflow-hidden rounded-full bg-gray-600 align-middle\",\n      className\n    )}\n    {...props}\n  >\n    <RadixAvatar.Image\n      className=\"h-full w-full rounded-[inherit] object-cover\"\n      src={imageUrl}\n      alt={userName}\n    />\n    <RadixAvatar.Fallback\n      className=\"leading-1 flex h-full w-full items-center justify-center bg-gray-600 font-medium text-pink-50\"\n      delayMs={600}\n    >\n      {(userName?.includes(\"@\") ? getNameFromEmail(userName) : userName)\n        ?.split(\" \")\n        .map((name) => name[0])}\n    </RadixAvatar.Fallback>\n  </RadixAvatar.Root>\n);\n"
  },
  {
    "path": "apps/web/src/components/BlogLayout.tsx",
    "content": "import dayjs from \"dayjs\";\nimport { NextSeo } from \"next-seo\";\nimport Image from \"next/image\";\nimport type { PostMeta } from \"pages/tips-and-insights\";\nimport { Divider } from \"./Divider\";\nimport { MarketingLayout, type MarketingLayoutProps } from \"./MarketingLayout\";\nimport { SignupButton } from \"./SignupButton\";\n\ntype Props = Pick<MarketingLayoutProps, \"children\" | \"seoTitle\"> & {\n  meta: PostMeta;\n};\n\nexport function BlogLayout({ children, seoTitle, meta }: Props) {\n  return (\n    <>\n      <NextSeo\n        openGraph={{\n          images: [\n            {\n              url: `${\n                process.env.VERCEL_URL\n                  ? `https://${process.env.VERCEL_URL}`\n                  : \"https://www.tryabby.com\"\n              }${meta.imageUrl}`,\n            },\n          ],\n        }}\n      />\n      <MarketingLayout\n        seoTitle={seoTitle ?? meta.title}\n        seoDescription={meta.excerpt}\n      >\n        <main className=\"container px-6 pb-8 md:px-16\">\n          <p className=\"text-md mb-4 text-gray-500\">\n            Published on {dayjs(meta.publishedAt).format(\"MMMM DD, YYYY\")}\n          </p>\n          <h1 className=\"text-4xl font-bold\">{meta.title}</h1>\n          <div className=\"relative my-12 aspect-video max-h-[400px] w-full\">\n            <Image\n              src={meta.imageUrl}\n              alt={meta.title}\n              className=\"rounded-md object-contain\"\n              fill\n            />\n          </div>\n          <section className=\"prose mx-auto w-full max-w-4xl dark:prose-invert lg:prose-lg\">\n            {children}\n          </section>\n          <Divider className=\"my-12\" />\n          <div className=\"mx-auto w-full rounded-lg p-4 text-center text-lg font-semibold leading-loose\">\n            Abby is an Open Source SaaS for developers to streamline A/B testing\n            and feature flagging.\n            <br />\n            Make data-driven decisions and improve user experience with ease.\n            <br />\n            Made for developers, by developers.\n            <SignupButton className=\"mt-2 px-3 py-3 text-lg\" />\n          </div>\n        </main>\n      </MarketingLayout>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Button.tsx",
    "content": "import type React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ninterface ButtonProps<T extends React.ElementType = React.ElementType> {\n  as?: T;\n  children?: React.ReactNode;\n}\n\nexport function Button<T extends React.ElementType = \"button\">({\n  children,\n  className,\n  as,\n  ...props\n}: ButtonProps<T> &\n  Omit<React.ComponentPropsWithoutRef<T>, keyof ButtonProps<T>>) {\n  const Component = as || \"button\";\n  return (\n    <Component\n      {...props}\n      className={twMerge(\n        \"rounded-sm bg-blue-300 px-3 py-0.5 text-gray-800 transition-colors duration-200 ease-in-out hover:bg-blue-400 disabled:cursor-not-allowed disabled:opacity-70 disabled:hover:bg-blue-300\",\n        className\n      )}\n    >\n      {children}\n    </Component>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/CodeSnippet.tsx",
    "content": "import clsx from \"clsx\";\nimport { useState } from \"react\";\nimport toast from \"react-hot-toast\";\nimport { FaCopy, FaReact } from \"react-icons/fa\";\nimport { TbBrandAngular, TbBrandSvelte } from \"react-icons/tb\";\nimport { TbBrandNextjs } from \"react-icons/tb\";\nimport { twMerge } from \"tailwind-merge\";\nimport type { CodeSnippetData, Integrations } from \"utils/snippets\";\nimport { trpc } from \"utils/trpc\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\n\nconst INTEGRATIONS: Record<\n  Integrations,\n  {\n    name: string;\n    icon: React.ComponentType<{ className?: string }>;\n  }\n> = {\n  nextjs: {\n    name: \"Next.js\",\n    icon: TbBrandNextjs,\n  },\n  react: {\n    name: \"React\",\n    icon: FaReact,\n  },\n  svelte: {\n    name: \"Svelte\",\n    icon: TbBrandSvelte,\n  },\n  angular: {\n    name: \"Angular\",\n    icon: TbBrandAngular,\n  },\n};\n\ntype Props = {\n  projectId: string;\n};\n\nexport function BaseCodeSnippet(\n  props: Record<Integrations, CodeSnippetData> & {\n    className?: string;\n  }\n) {\n  const [currentIntegration, setCurrentIntegration] = useState<Integrations>(\n    Object.keys(INTEGRATIONS)[0] as Integrations\n  );\n\n  const onCopyClick = () => {\n    toast.success(\"Successfully copied code snippet!\");\n    navigator.clipboard.writeText(props[currentIntegration].code);\n  };\n\n  return (\n    <div className={twMerge(\"relative\", props.className)}>\n      <div className=\"absolute w-full\">\n        <div className=\"flex space-x-2 p-3\">\n          <div className=\"h-3 w-3 rounded-full bg-[#FF5F56]\" />\n          <div className=\"h-3 w-3 rounded-full bg-[#FFBD2E]\" />\n          <div className=\"h-3 w-3 rounded-full bg-[#27C93F]\" />\n        </div>\n        <div className=\"mt-2 flex w-full overflow-x-auto bg-gray-800\">\n          {Object.entries(INTEGRATIONS).map(([key, { icon: Icon, name }]) => (\n            // biome-ignore lint/a11y/useKeyWithClickEvents:>\n            // biome-ignore lint/a11y/useFocusableInteractive: <explanation>\n            <div\n              key={name}\n              // biome-ignore lint/a11y/useSemanticElements: <explanation>\n              role=\"button\"\n              onClick={() => setCurrentIntegration(key as Integrations)}\n              className={clsx(\n                \"flex cursor-pointer items-center px-3 py-2 font-semibold text-white transition-colors ease-in-out hover:bg-gray-900\",\n                key === currentIntegration && \"bg-gray-900\"\n              )}\n            >\n              <Icon className=\"mr-2\" />\n              {name}\n            </div>\n          ))}\n        </div>\n      </div>\n\n      <button\n        type=\"button\"\n        title=\"Copy code snippet\"\n        aria-label=\"Copy code snippet\"\n        onClick={onCopyClick}\n        className=\"absolute right-6 top-24 hidden rounded-lg border border-gray-300 p-3 text-white transition-colors ease-in-out hover:bg-gray-800 active:bg-gray-700 md:block\"\n      >\n        <FaCopy />\n      </button>\n\n      <div\n        // biome-ignore lint/security/noDangerouslySetInnerHtml:>\n        dangerouslySetInnerHTML={{ __html: props[currentIntegration].html }}\n      />\n    </div>\n  );\n}\n\nexport function CodeSnippet({ projectId }: Props) {\n  const { data, isLoading } = trpc.project.getCodeSnippet.useQuery({\n    projectId,\n  });\n\n  if (isLoading) {\n    return (\n      <div className=\"flex items-center justify-center\">\n        <LoadingSpinner height=\"2rem\" width=\"2rem\" />\n      </div>\n    );\n  }\n  if (!data) return null;\n\n  return <BaseCodeSnippet {...data} />;\n}\n"
  },
  {
    "path": "apps/web/src/components/CodeSnippetModalButton.tsx",
    "content": "import { Dialog } from \"@headlessui/react\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { useTracking } from \"lib/tracking\";\nimport { Code, Copy } from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport { useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { BsCodeSlash } from \"react-icons/bs\";\nimport { CodeSnippet } from \"./CodeSnippet\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"./DropdownMenu\";\nimport { Button } from \"./ui/button\";\n\nfunction CodeSnippetModal({\n  isOpen,\n  onClose,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n}) {\n  const projectId = useRouter().query.projectId as string;\n\n  return (\n    <Dialog open={isOpen} onClose={onClose} className=\"relative z-50\">\n      {/* The backdrop, rendered as a fixed sibling to the panel container */}\n      <div className=\"fixed inset-0 bg-black/70\" aria-hidden=\"true\" />\n\n      {/* Full-screen container to center the panel */}\n      <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n        {/* The actual dialog panel  */}\n        <Dialog.Panel className=\"mx-auto w-full max-w-4xl\">\n          <CodeSnippet projectId={projectId} />\n        </Dialog.Panel>\n      </div>\n    </Dialog>\n  );\n}\n\nexport function CodeSnippetModalButton() {\n  const trackEvent = useTracking();\n  const projectId = useProjectId();\n  const [isOpen, setIsOpen] = useState(false);\n\n  const onCopyProjectId = async () => {\n    toast.promise(navigator.clipboard.writeText(projectId), {\n      loading: \"Copying to clipboard...\",\n      error: \"Failed to copy to clipboard\",\n      success: \"Copied Project ID to clipboard\",\n    });\n  };\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger\n        asChild\n        // all other events are prevented by radix :(\n        onPointerDown={() => {\n          trackEvent(\"Dashboard Code Clicked\");\n        }}\n      >\n        <Button size=\"icon\" variant=\"secondary\" title=\"\">\n          <BsCodeSlash size={20} />\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent side=\"bottom\" align=\"end\">\n        <DropdownMenuItem onClick={onCopyProjectId}>\n          <Copy className=\"mr-2 h-4 w-4\" />\n          Copy Project ID\n        </DropdownMenuItem>\n        <DropdownMenuItem onClick={() => setIsOpen(true)}>\n          <Code className=\"mr-2 h-4 w-4\" />\n          Generate Code Snippet\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n      <CodeSnippetModal isOpen={isOpen} onClose={() => setIsOpen(false)} />\n    </DropdownMenu>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/CreateAPIKeyModal.tsx",
    "content": "import { TRPCClientError } from \"@trpc/client\";\nimport { TRPC_ERROR_CODES_BY_KEY } from \"@trpc/server/rpc\";\nimport { useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { Modal } from \"./Modal\";\nimport { Input } from \"./ui/input\";\n\ntype Props = {\n  onClose: () => void;\n  isOpen: boolean;\n  projectId: string;\n};\n\nexport const CreateAPIKeyModal = ({ onClose, isOpen }: Props) => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [name, setName] = useState<string>(\"\");\n  const trimmedName = name.trim();\n\n  return (\n    <Modal\n      isOpen={isOpen}\n      onClose={onClose}\n      title=\"Create new API Key\"\n      confirmText=\"Create\"\n      onConfirm={async () => {\n        if (!trimmedName) {\n          toast.error(\"Name is required\");\n          return;\n        }\n        try {\n          setName(\"\");\n          toast.success(\"API Key created\");\n          onClose();\n        } catch (e) {\n          toast.error(\n            e instanceof TRPCClientError &&\n              e.shape.code === TRPC_ERROR_CODES_BY_KEY.FORBIDDEN\n              ? e.message\n              : \"Error creating API Key\"\n          );\n        }\n      }}\n    >\n      <label className=\"mb-1 block text-pink-50\" htmlFor=\"name\">\n        Name\n      </label>\n      <Input\n        name=\"name\"\n        ref={inputRef}\n        type=\"text\"\n        value={name}\n        onChange={(e) => setName(e.target.value)}\n        placeholder=\"Name of the Application\"\n      />\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/CreateEnvironmentModal.tsx",
    "content": "import { TRPCClientError } from \"@trpc/client\";\nimport { TRPC_ERROR_CODES_BY_KEY } from \"@trpc/server/rpc\";\nimport { useTracking } from \"lib/tracking\";\nimport { useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { Modal } from \"./Modal\";\nimport { Input } from \"./ui/input\";\n\ntype Props = {\n  onClose: () => void;\n  isOpen: boolean;\n  projectId: string;\n};\n\nexport const CreateEnvironmentModal = ({\n  onClose,\n  isOpen,\n  projectId,\n}: Props) => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const ctx = trpc.useContext();\n  const [name, setName] = useState<string>(\"\");\n  const trimmedName = name.trim();\n  const { mutateAsync } = trpc.environments.addEnvironment.useMutation({\n    onSuccess() {\n      ctx.flags.getFlags.invalidate({ projectId });\n    },\n  });\n  const trackEvent = useTracking();\n\n  return (\n    <Modal\n      isOpen={isOpen}\n      onClose={onClose}\n      title=\"Create new Environment\"\n      confirmText=\"Create\"\n      onConfirm={async () => {\n        if (!trimmedName) {\n          toast.error(\"Name is required\");\n          return;\n        }\n        try {\n          await mutateAsync({\n            name,\n            projectId,\n          });\n          setName(\"\");\n          toast.success(\"Environment created\");\n          trackEvent(\"Environment Created\");\n          onClose();\n        } catch (e) {\n          toast.error(\n            e instanceof TRPCClientError &&\n              e.shape.code === TRPC_ERROR_CODES_BY_KEY.FORBIDDEN\n              ? e.message\n              : \"Error creating environment\"\n          );\n        }\n      }}\n    >\n      <label className=\"mb-1 block text-pink-50\" htmlFor=\"name\">\n        Name\n      </label>\n      <Input\n        name=\"name\"\n        ref={inputRef}\n        value={name}\n        onChange={(e) => setName(e.target.value)}\n        type=\"text\"\n        placeholder=\"production\"\n      />\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/CreateProjectModal.tsx",
    "content": "import { useTracking } from \"lib/tracking\";\nimport { useSession } from \"next-auth/react\";\nimport { useRouter } from \"next/router\";\nimport { type ChangeEvent, useRef, useState } from \"react\";\nimport toast from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { Modal } from \"./Modal\";\nimport { Input } from \"./ui/input\";\n\ntype Props = {\n  onClose: () => void;\n};\n\nexport const CreateProjectModal = ({ onClose }: Props) => {\n  const router = useRouter();\n  const projectName = useRef(\"\");\n  const [isValidName, setIsValidName] = useState(true);\n  const trpcContext = trpc.useContext();\n  const session = useSession();\n  const trackEvent = useTracking();\n\n  const { mutateAsync: createProjectTRPC } =\n    trpc.project.createProject.useMutation({\n      onSuccess() {\n        toast.success(\"Project created\");\n        trpcContext.project.getProjectData.invalidate();\n        trpcContext.user.getProjects.invalidate();\n      },\n    });\n\n  const createProject = async () => {\n    if (projectName.current.length < 3) {\n      setIsValidName(false);\n      return;\n    }\n    const project = await createProjectTRPC({\n      projectName: projectName.current,\n    });\n\n    onClose();\n    if (!project) return;\n\n    await session.update({\n      projectIds: [...(session.data?.user?.projectIds ?? []), project.id],\n      lastOpenProjectId: project.id,\n    });\n    trackEvent(\"Project Created\");\n    router.push(`/projects/${project.id}`);\n  };\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    projectName.current = e.currentTarget.value;\n    setIsValidName(projectName.current.length >= 3);\n  };\n\n  return (\n    <Modal\n      onClose={onClose}\n      isOpen\n      onConfirm={createProject}\n      title=\"Create a new Project\"\n      confirmText=\"Create\"\n      size=\"full\"\n    >\n      <Input\n        type=\"text\"\n        placeholder=\"Project Name\"\n        required\n        onChange={handleChange}\n      />\n      {!isValidName && (\n        <div className=\"pt-4 text-red-600\">\n          Please enter a name with atleast 3 characters{\" \"}\n        </div>\n      )}\n    </Modal>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/DashboardButton.tsx",
    "content": "import type { ComponentPropsWithRef } from \"react\";\nimport { Button } from \"./ui/button\";\n\ntype Props = ComponentPropsWithRef<\"button\">;\n\nexport function DashboardButton({ className, ...props }: Props) {\n  return <Button {...props} />;\n}\n"
  },
  {
    "path": "apps/web/src/components/DashboardHeader.tsx",
    "content": "import { useTracking } from \"lib/tracking\";\nimport { CodeSnippetModalButton } from \"./CodeSnippetModalButton\";\n\ntype Props = {\n  title: string;\n};\n\nexport function DashboardHeader({ title }: Props) {\n  const _trackEvent = useTracking();\n  return (\n    <div className=\"mb-4 flex items-center justify-between\">\n      <h1 className=\"text-3xl font-bold\">{title}</h1>\n      <div className=\"flex space-x-2\">\n        <CodeSnippetModalButton />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/DashboardSection.tsx",
    "content": "import { twMerge } from \"tailwind-merge\";\n\nexport function DashboardSection({\n  children,\n  className,\n}: {\n  children: React.ReactNode;\n  className?: string;\n}) {\n  return (\n    <section\n      className={twMerge(\"rounded-lg bg-secondary p-6 h-full\", className)}\n    >\n      {children}\n    </section>\n  );\n}\n\nexport function DashboardSectionTitle({\n  children,\n  className,\n}: {\n  children: React.ReactNode;\n  className?: string;\n}) {\n  return (\n    <h2 className={twMerge(\"text-xl font-semibold\", className)}>{children}</h2>\n  );\n}\n\nexport function DashboardSectionSubtitle({\n  children,\n  className,\n}: {\n  children: React.ReactNode;\n  className?: string;\n}) {\n  return (\n    <h3 className={twMerge(\"text-sm text-pink-50/80\", className)}>\n      {children}\n    </h3>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/DeleteProjectModal.tsx",
    "content": "import { useProjectId } from \"lib/hooks/useProjectId\";\nimport { useSession } from \"next-auth/react\";\nimport { useRouter } from \"next/router\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { Modal } from \"./Modal\";\n\ntype Props = {\n  isOpen: boolean;\n  onClose: () => void;\n};\n\nexport function DeleteProjectModal({ isOpen, onClose }: Props) {\n  const router = useRouter();\n  const projectId = useProjectId();\n  const trpcContext = trpc.useContext();\n  const { data: session, status, update } = useSession();\n\n  const { mutate: deleteProject } = trpc.project.deleteProject.useMutation({\n    async onSuccess() {\n      if (!session?.user?.projectIds) return;\n\n      toast.success(\"Project deleted\");\n      onClose();\n\n      const newProjectIds = session?.user?.projectIds.filter(\n        (id) => id !== projectId\n      );\n\n      await update({\n        projectIds: newProjectIds,\n        lastOpenProjectId: newProjectIds?.[0],\n      });\n\n      await router.push(\"/projects\");\n\n      trpcContext.project.getProjectData.invalidate();\n      trpcContext.user.getProjects.invalidate();\n    },\n  });\n\n  return (\n    <Modal\n      title=\"Delete project\"\n      confirmText=\"Delete project\"\n      isOpen={isOpen}\n      onClose={onClose}\n      onConfirm={() => {\n        if (!projectId || status !== \"authenticated\") return;\n        deleteProject({ projectId });\n      }}\n    >\n      <p className=\"text-white\">\n        Are you sure that you want to delete this Project? <br /> You will be\n        unable to recover it afterwards!\n      </p>\n    </Modal>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/DevtoolsArrow.tsx",
    "content": "import { AnimatePresence, motion } from \"framer-motion\";\nimport { useTracking } from \"lib/tracking\";\nimport { CornerRightDown } from \"lucide-react\";\n\nimport { useEffect, useState } from \"react\";\n\nconst DEVTOOLS_ID = \"abby-devtools-collapsed\";\n\nexport function useDevtoolsPosition() {\n  const [devtoolsPosition, setDevtoolsPosition] = useState<DOMRect | null>(\n    null\n  );\n  const trackEvent = useTracking();\n\n  useEffect(() => {\n    const devtools = document.getElementById(DEVTOOLS_ID);\n\n    if (!devtools) return;\n\n    const resizeObserver = new ResizeObserver((entries) => {\n      if (!entries[0]) return;\n\n      setDevtoolsPosition(devtools.getBoundingClientRect());\n      // we only need to set it once\n      resizeObserver.disconnect();\n    });\n\n    resizeObserver.observe(devtools);\n\n    setDevtoolsPosition(devtools.getBoundingClientRect());\n\n    const devtoolsAnalytics = () => {\n      trackEvent(\"Devtools Opened\");\n    };\n    devtools.addEventListener(\"click\", devtoolsAnalytics);\n\n    return () => {\n      resizeObserver.disconnect();\n      devtools.removeEventListener(\"click\", devtoolsAnalytics);\n    };\n  }, [trackEvent]);\n\n  // listen to window resize\n  useEffect(() => {\n    const onResize = () => {\n      const devtools = document.getElementById(DEVTOOLS_ID);\n\n      if (!devtools) return;\n\n      setDevtoolsPosition(devtools.getBoundingClientRect());\n    };\n\n    window.addEventListener(\"resize\", onResize);\n\n    return () => {\n      window.removeEventListener(\"resize\", onResize);\n    };\n  }, []);\n\n  return devtoolsPosition;\n}\n\nexport function DevtoolsArrow() {\n  const trackEvent = useTracking();\n  const devtoolsPosition = useDevtoolsPosition();\n\n  useEffect(() => {\n    const onMessage = (e: MessageEvent) => {\n      const messageType = e.data.type;\n      if (!messageType?.startsWith(\"abby:\")) return;\n\n      switch (messageType) {\n        case \"abby:update-flag\": {\n          trackEvent(\"Devtools Interaction\", {\n            props: {\n              type: \"Flag Updated\",\n            },\n          });\n          break;\n        }\n        case \"abby:select-variant\": {\n          trackEvent(\"Devtools Interaction\", {\n            props: {\n              type: \"Variant Selected\",\n            },\n          });\n          break;\n        }\n      }\n    };\n\n    window.addEventListener(\"message\", onMessage);\n\n    return () => {\n      window.removeEventListener(\"message\", onMessage);\n    };\n  }, [trackEvent]);\n\n  return (\n    <AnimatePresence>\n      {devtoolsPosition && (\n        <motion.div\n          initial={{ opacity: 0, scale: 0.5 }}\n          animate={{ opacity: 1, scale: 1 }}\n          exit={{ opacity: 0, scale: 0.5 }}\n          className=\"flex items-center rounded-md bg-ab_primary-background p-1 font-mono text-xl text-ab_accent-background\"\n          style={{\n            zIndex: 9999,\n            position: \"fixed\",\n            top: (devtoolsPosition?.top ?? 0) - 42,\n            left: (devtoolsPosition?.left ?? 0) - 115,\n          }}\n        >\n          Try me out <CornerRightDown className=\"mt-3\" />\n        </motion.div>\n      )}\n    </AnimatePresence>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Divider.tsx",
    "content": "import { twMerge } from \"tailwind-merge\";\n\nexport function Divider({ className }: { className?: string }) {\n  return (\n    <div\n      className={twMerge(\n        \"mx-auto h-[2px] max-w-xs bg-ab_accent-background\",\n        className\n      )}\n    />\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Dropdown.tsx",
    "content": "import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"lib/utils\";\nimport type React from \"react\";\nimport { BsThreeDotsVertical } from \"react-icons/bs\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n  triggerIcon?: React.ReactNode;\n  children: React.ReactNode;\n  className?: string;\n};\n\nexport const Dropdown = ({ triggerIcon: Icon, children, className }: Props) => {\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        <button\n          type=\"button\"\n          className={cn(\n            \"inline-flex h-[35px] w-[35px] items-center justify-center rounded-md bg-transparent text-pink-50 outline-none hover:bg-gray-800 focus:bg-gray-800\",\n            className\n          )}\n        >\n          {Icon ?? <BsThreeDotsVertical />}\n        </button>\n      </DropdownMenu.Trigger>\n\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          align=\"end\"\n          className=\"min-w-[220px] space-y-1 rounded-md bg-gray-800 p-[5px] py-2 shadow-lg will-change-[opacity,transform] data-[side=bottom]:animate-slideUpAndFade data-[side=left]:animate-slideRightAndFade data-[side=right]:animate-slideLeftAndFade data-[side=top]:animate-slideDownAndFade\"\n          sideOffset={5}\n        >\n          {children}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n};\n\ntype ItemProps = {\n  children: React.ReactNode;\n  shortcut?: string;\n} & DropdownMenu.MenuItemProps;\n\nexport const Item = ({\n  children,\n  shortcut,\n  className,\n  ...itemProps\n}: ItemProps) => (\n  <DropdownMenu.Item\n    className={twMerge(\n      \"data-[highlighted]:text-100 group relative flex h-[25px] w-full cursor-pointer select-none items-center rounded-[3px] px-[5px] pl-[25px] text-[14px] leading-none text-pink-50 outline-none data-[disabled]:pointer-events-none data-[highlighted]:bg-gray-600 data-[disabled]:text-pink-50/20\",\n      className\n    )}\n    {...itemProps}\n  >\n    {children}\n    {shortcut && (\n      <div className=\"ml-auto pl-[20px] text-inherit group-data-[disabled]:text-inherit group-data-[highlighted]:text-white\">\n        {shortcut}\n      </div>\n    )}\n  </DropdownMenu.Item>\n);\n\nItem.displayName = \"DropdownItem\";\n"
  },
  {
    "path": "apps/web/src/components/DropdownMenu.tsx",
    "content": "\"use client\";\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean;\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto h-4 w-4\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n  DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubContent\n    ref={ref}\n    className={cn(\n      \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n      className\n    )}\n    {...props}\n  />\n));\nDropdownMenuSubContent.displayName =\n  DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <DropdownMenuPrimitive.Portal>\n    <DropdownMenuPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        className\n      )}\n      {...props}\n    />\n  </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n  DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-current\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn(\n      \"px-2 py-1.5 text-sm font-semibold\",\n      inset && \"pl-8\",\n      className\n    )}\n    {...props}\n  />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n      {...props}\n    />\n  );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n};\n"
  },
  {
    "path": "apps/web/src/components/Editor.tsx",
    "content": "import TextAlign from \"@tiptap/extension-text-align\";\nimport {\n  EditorContent,\n  type Editor as TipTapEditor,\n  useEditor,\n} from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport clsx from \"clsx\";\nimport {\n  AlignCenter,\n  AlignJustify,\n  AlignLeft,\n  AlignRight,\n  Bold,\n  Heading1,\n  Heading2,\n  Heading3,\n  Italic,\n  Pilcrow,\n  Strikethrough,\n} from \"lucide-react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./Tooltip\";\n\ntype Props = {\n  className?: string;\n  content?: string;\n  onUpdate?: (html: string) => void;\n};\n\nconst getMenuButtonClass = ({\n  roundCorners = \"none\",\n  isActive = false,\n}: {\n  roundCorners?: \"left\" | \"both\" | \"right\" | \"none\";\n  isActive: boolean;\n}) =>\n  twMerge(\n    \"bg-primary px-3 py-1 text-primary-foreground hover:bg-pink-500 hover:text-white\",\n    clsx(isActive && \"bg-pink-600 text-white\", {\n      \"rounded-l-md\": roundCorners === \"left\",\n      \"rounded-r-md\": roundCorners === \"right\",\n      \"rounded-md\": roundCorners === \"both\",\n      \"\": roundCorners === \"none\",\n    })\n  );\n\nconst MenuBar = ({ editor }: { editor: TipTapEditor | null }) => {\n  if (!editor) {\n    return null;\n  }\n\n  return (\n    <div className=\"flex divide-x-[1px] divide-ab_primary-background\">\n      <Tooltip>\n        <TooltipContent>\n          <span>Heading 1</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() =>\n              editor.chain().focus().toggleHeading({ level: 1 }).run()\n            }\n            className={getMenuButtonClass({\n              roundCorners: \"left\",\n              isActive: editor.isActive(\"heading\", { level: 1 }),\n            })}\n          >\n            <Heading1 />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Heading 2</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() =>\n              editor.chain().focus().toggleHeading({ level: 2 }).run()\n            }\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"heading\", { level: 2 }),\n            })}\n          >\n            <Heading2 />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Heading 3</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() =>\n              editor.chain().focus().toggleHeading({ level: 3 }).run()\n            }\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"heading\", { level: 3 }),\n            })}\n          >\n            <Heading3 />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Text</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().setParagraph().run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"paragraph\"),\n            })}\n          >\n            <Pilcrow />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <span className=\"bg-primary p-2\" />\n      <Tooltip>\n        <TooltipContent>\n          <span>Bold</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().toggleBold().run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"bold\"),\n            })}\n          >\n            <Bold />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Italic</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().toggleItalic().run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"italic\"),\n            })}\n          >\n            <Italic />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Strikethrough</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().toggleStrike().run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive(\"strike\"),\n            })}\n          >\n            <Strikethrough />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <span className=\"bg-primary p-2\" />\n      <Tooltip>\n        <TooltipContent>\n          <span>Align Left</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().setTextAlign(\"left\").run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive({ textAlign: \"left\" }),\n            })}\n          >\n            <AlignLeft />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Align Center</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().setTextAlign(\"center\").run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive({ textAlign: \"center\" }),\n            })}\n          >\n            <AlignCenter />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Align Right</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().setTextAlign(\"right\").run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive({ textAlign: \"right\" }),\n            })}\n          >\n            <AlignRight />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n      <Tooltip>\n        <TooltipContent>\n          <span>Align Justify</span>\n        </TooltipContent>\n\n        <TooltipTrigger asChild>\n          <button\n            type=\"button\"\n            onClick={() => editor.chain().focus().setTextAlign(\"justify\").run()}\n            className={getMenuButtonClass({\n              isActive: editor.isActive({ textAlign: \"justify\" }),\n              roundCorners: \"right\",\n            })}\n          >\n            <AlignJustify />\n          </button>\n        </TooltipTrigger>\n      </Tooltip>\n    </div>\n  );\n};\n\nexport const Editor = ({ className, content, onUpdate }: Props) => {\n  const editor = useEditor({\n    extensions: [\n      StarterKit.configure({\n        orderedList: {\n          HTMLAttributes: {\n            class: \"list-decimal list-outside\",\n          },\n        },\n        bulletList: {\n          HTMLAttributes: {\n            class: \"list-disc list-outside\",\n          },\n        },\n      }),\n      TextAlign.configure({\n        types: [\"heading\", \"paragraph\"],\n      }),\n    ],\n    editorProps: {\n      attributes: {\n        class:\n          \"prose-invert prose-base leading-none my-5 focus:outline-none border-pink-50/60 border rounded-lg py-3 px-2 h-64 overflow-y-auto\",\n      },\n    },\n    content,\n    onUpdate: ({ editor }) => {\n      onUpdate?.(editor.getHTML());\n    },\n  });\n\n  return (\n    <>\n      <MenuBar editor={editor} />\n      <div className=\"h-64\">\n        <EditorContent className={className} editor={editor} />\n      </div>\n    </>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/EventCounter.tsx",
    "content": "import { AnimatePresence, motion } from \"framer-motion\";\nimport { trpc } from \"utils/trpc\";\n\nexport function EventCounter() {\n  const { data } = trpc.events.getEventCount.useQuery();\n\n  return (\n    <div className=\"p-8 text-xl font-bold text-primary mx-auto flex space-x-1\">\n      <AnimatePresence mode=\"popLayout\">\n        <motion.span\n          initial={{ y: 20, opacity: 0 }}\n          animate={{ y: 0, opacity: 1 }}\n          exit={{ y: -20, opacity: 0 }}\n          transition={{ duration: 0.3 }}\n          aria-live=\"polite\"\n        >\n          {new Intl.NumberFormat(\"en\", { notation: \"compact\" }).format(\n            data ?? 0\n          )}\n        </motion.span>\n      </AnimatePresence>\n      <span className=\"w-full text-white\">\n        Events processed and counting...\n      </span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Feature.tsx",
    "content": "import type { LucideIcon } from \"lucide-react\";\nimport type { IconType } from \"react-icons\";\n\ntype Props = {\n  children: React.ReactNode;\n  title: string;\n  subtitle: string;\n  icon: IconType | LucideIcon;\n};\n\nexport function Feature({ children, icon: Icon, subtitle, title }: Props) {\n  return (\n    <div className=\"rounded-xl border bg-accent bg-clip-padding p-6 shadow-sm backdrop-blur-xl backdrop-filter\">\n      <div className=\"mr-auto flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-r from-pink-500 to-pink-400 text-xl text-accent-foreground\">\n        <Icon />\n      </div>\n      <h3 className=\"mt-4 text-sm font-semibold text-pink-500\">{title}</h3>\n      <h2 className=\"my-2 text-xl font-semibold text-accent-foreground\">\n        {subtitle}\n      </h2>\n      <p className=\"text-accent-foreground\">{children}</p>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/FeatureFlag.tsx",
    "content": "import {} from \"components/ui/popover\";\nimport dayjs from \"dayjs\";\nimport { P, match } from \"ts-pattern\";\n\nimport type { FeatureFlagHistory, FeatureFlagType } from \"@prisma/client\";\nimport {} from \"components/Tooltip\";\nimport { Button } from \"components/ui/button\";\nimport { Label } from \"components/ui/label\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport { getEnvironmentStyle } from \"lib/environment-styles\";\nimport { cn } from \"lib/utils\";\nimport { Pencil, Settings } from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport { useMemo, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { type RouterOutputs, trpc } from \"utils/trpc\";\nimport { ChangeFlagForm, type FlagFormValues } from \"./AddFeatureFlagModal\";\nimport { Modal } from \"./Modal\";\n\ndayjs.extend(relativeTime);\n\nexport const getHistoryEventDescription = (event: FeatureFlagHistory) => {\n  return match(event)\n    .with(\n      {\n        newValue: P.not(P.nullish),\n        oldValue: null,\n      },\n      () => \"created\" as const\n    )\n    .with(\n      {\n        newValue: P.not(P.nullish),\n        oldValue: P.not(P.nullish),\n      },\n      () => \"updated\" as const\n    )\n    .run();\n};\n\nconst ConfirmUpdateModal = ({\n  isOpen,\n  onClose,\n  currentValue,\n  type,\n  description,\n  projectId,\n  flagName,\n  flagValueId,\n  environmentName,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  currentValue: string;\n  type: FeatureFlagType;\n  description: string;\n  projectId: string;\n  flagName: string;\n  flagValueId: string;\n  environmentName: string;\n}) => {\n  const [state, setState] = useState<FlagFormValues>({\n    name: flagName,\n    value: currentValue,\n    type,\n  });\n  const trpcContext = trpc.useContext();\n  const envStyle = getEnvironmentStyle(environmentName);\n\n  const { mutate: updateFlag } = trpc.flags.updateFlag.useMutation({\n    onSuccess(_, { value, flagValueId }) {\n      trpcContext.flags.getFlags.setData({ projectId, types: [] }, (prev) => {\n        if (!prev) return prev;\n\n        const flagToUpdate = prev.flags.find((flag) =>\n          flag.values.some((value) => value.id === flagValueId)\n        );\n        if (!flagToUpdate) return;\n\n        const valueToUpdate = flagToUpdate.values.find(\n          (value) => value.id === flagValueId\n        );\n        if (!valueToUpdate) return;\n\n        valueToUpdate.value = value.toString();\n        return prev;\n      });\n\n      trpcContext.flags.getFlags.invalidate({ projectId });\n      onClose();\n    },\n    onError() {\n      toast.error(`Failed to update ${type === \"BOOLEAN\" ? \"flag\" : \"value\"}`);\n    },\n  });\n\n  return (\n    <Modal\n      title={`Update ${type === \"BOOLEAN\" ? \"flag\" : \"value\"}`}\n      confirmText={`Update ${type === \"BOOLEAN\" ? \"flag\" : \"value\"}`}\n      onConfirm={() => updateFlag({ ...state, flagValueId })}\n      isOpen={isOpen}\n      onClose={onClose}\n      size=\"base\"\n    >\n      <div className=\"space-y-6\">\n        <div className=\"flex items-center gap-2\">\n          <div className={cn(\"h-2 w-2 rounded-full\", envStyle.icon)} />\n          <span className={cn(\"text-sm font-medium\", envStyle.text)}>\n            {environmentName}\n          </span>\n        </div>\n\n        <div className=\"space-y-4\">\n          <div>\n            <Label>Current Value</Label>\n            <code\n              className={cn(\n                \"mt-1.5 block w-full px-3 py-2 rounded-md font-mono text-sm\",\n                envStyle.bg,\n                envStyle.text\n              )}\n            >\n              {currentValue}\n            </code>\n          </div>\n\n          <div>\n            <Label>New Value</Label>\n            <ChangeFlagForm\n              key={flagValueId}\n              initialValues={{\n                name: flagName,\n                value: currentValue,\n                type,\n              }}\n              onChange={(newState) => setState(newState)}\n              errors={{}}\n              canChangeType={false}\n              isRemoteConfig={type !== \"BOOLEAN\"}\n            />\n          </div>\n\n          {description && (\n            <div className=\"pt-6 mt-6 border-t border-border\">\n              <Label className=\"block mb-2 text-sm text-muted-foreground\">\n                Description\n              </Label>\n              <div\n                className=\"prose-sm prose dark:prose-invert\"\n                // biome-ignore lint/security/noDangerouslySetInnerHtml: <explanation>\n                dangerouslySetInnerHTML={{ __html: description }}\n              />\n            </div>\n          )}\n        </div>\n      </div>\n    </Modal>\n  );\n};\n\nexport const FeatureFlag = ({\n  flag,\n  projectId,\n  environmentName,\n  flagValueId,\n  type,\n  minimal = false,\n}: {\n  flag: RouterOutputs[\"flags\"][\"getFlags\"][\"flags\"][number];\n  projectId: string;\n  environmentName: string;\n  flagValueId: string;\n  type: FeatureFlagType;\n  minimal?: boolean;\n}) => {\n  const router = useRouter();\n  const [isUpdateModalOpen, setIsUpdateModalOpen] = useState(false);\n  const flagValue = useMemo(() => {\n    return flag.values.find((value) => value.id === flagValueId)?.value;\n  }, [flag.values, flagValueId]);\n\n  const envStyle = getEnvironmentStyle(environmentName);\n\n  const getJSONPreview = (value: string) => {\n    try {\n      const parsed = JSON.parse(value);\n      if (typeof parsed === \"object\") {\n        if (Array.isArray(parsed)) {\n          return `[${parsed.length} items]`;\n        }\n        const keys = Object.keys(parsed);\n        if (keys.length === 0) return \"{ }\";\n        return `{ ${keys[0]}: ..., ${keys.length > 1 ? `+${keys.length - 1} more` : \"\"} }`;\n      }\n      return value;\n    } catch {\n      return value;\n    }\n  };\n\n  return (\n    <>\n      <div\n        className={cn(\n          \"relative rounded-lg transition-all duration-200\",\n          minimal ? \"\" : \"w-full\",\n          envStyle.border,\n          envStyle.bg\n        )}\n      >\n        {!minimal && (\n          <Button\n            variant=\"ghost\"\n            className=\"absolute right-2 top-2\"\n            size=\"sm\"\n            onClick={() =>\n              router.push(`/projects/${projectId}/flags/${flagValueId}`)\n            }\n          >\n            <Settings className=\"w-4 h-4\" />\n          </Button>\n        )}\n        <div className={cn(\"space-y-4 p-4\", minimal ? \"\" : \"pr-12\")}>\n          <div className=\"space-y-3\">\n            {match(type)\n              .with(\"BOOLEAN\", () => (\n                <div className=\"flex items-center justify-between space-x-2\">\n                  <Button\n                    variant=\"outline\"\n                    className=\"justify-between flex-1 group\"\n                    onClick={() => setIsUpdateModalOpen(true)}\n                  >\n                    <div className=\"flex items-center gap-2\">\n                      <span className={cn(\"text-sm\", envStyle.text)}>\n                        Current value:\n                      </span>\n                      <span\n                        className={cn(\n                          \"text-xs font-medium px-2 py-0.5 rounded-full\",\n                          flagValue === \"true\"\n                            ? \"bg-green-500/10 text-green-600\"\n                            : \"bg-muted text-muted-foreground\"\n                        )}\n                      >\n                        {flagValue === \"true\" ? \"Enabled\" : \"Disabled\"}\n                      </span>\n                    </div>\n                    <Pencil className=\"w-3.5 h-3.5\" />\n                  </Button>\n                </div>\n              ))\n              .with(\"NUMBER\", () => (\n                <div className=\"space-y-2\">\n                  <Button\n                    variant=\"outline\"\n                    className=\"justify-between w-full group\"\n                    onClick={() => setIsUpdateModalOpen(true)}\n                  >\n                    <div className=\"flex items-center gap-2\">\n                      <span className={cn(\"text-sm\", envStyle.text)}>\n                        Current value:\n                      </span>\n                      <code\n                        className={cn(\n                          \"px-2 py-1 rounded font-mono\",\n                          envStyle.bg,\n                          envStyle.text\n                        )}\n                      >\n                        {flagValue}\n                      </code>\n                    </div>\n                    <Pencil className=\"w-3.5 h-3.5 opacity-0 group-hover:opacity-100 transition-opacity\" />\n                  </Button>\n                </div>\n              ))\n              .with(\"STRING\", () => (\n                <div className=\"space-y-2\">\n                  <Button\n                    variant=\"outline\"\n                    className=\"justify-between w-full group\"\n                    onClick={() => setIsUpdateModalOpen(true)}\n                  >\n                    <div className=\"flex items-center gap-2\">\n                      <span className={cn(\"text-sm\", envStyle.text)}>\n                        Current value:\n                      </span>\n                      <code\n                        className={cn(\n                          \"px-2 py-1 rounded font-mono max-w-[150px] truncate\",\n                          envStyle.bg,\n                          envStyle.text\n                        )}\n                      >\n                        {flagValue || \"\"}\n                      </code>\n                    </div>\n                    <Pencil className=\"w-3.5 h-3.5 opacity-0 group-hover:opacity-100 transition-opacity\" />\n                  </Button>\n                </div>\n              ))\n              .with(\"JSON\", () => (\n                <div className=\"space-y-2\">\n                  <Button\n                    variant=\"outline\"\n                    className=\"items-center justify-between w-full group\"\n                    onClick={() => setIsUpdateModalOpen(true)}\n                  >\n                    <div className=\"flex items-center gap-2\">\n                      <span className={cn(\"text-sm\", envStyle.text)}>\n                        Current value:\n                      </span>\n                      <code\n                        className={cn(\n                          \"px-2 py-1 rounded font-mono text-xs\",\n                          envStyle.bg,\n                          envStyle.text\n                        )}\n                      >\n                        {getJSONPreview(flagValue || \"\")}\n                      </code>\n                    </div>\n                    <Pencil className=\"w-3.5 h-3.5 opacity-0 group-hover:opacity-100 transition-opacity\" />\n                  </Button>\n                </div>\n              ))\n              .exhaustive()}\n          </div>\n        </div>\n      </div>\n\n      <ConfirmUpdateModal\n        isOpen={isUpdateModalOpen}\n        onClose={() => setIsUpdateModalOpen(false)}\n        currentValue={flagValue ?? \"\"}\n        type={type}\n        description={flag.description ?? \"\"}\n        projectId={projectId}\n        flagName={flag.name}\n        flagValueId={flagValueId}\n        environmentName={environmentName}\n      />\n    </>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/FlagIcon.tsx",
    "content": "import type { FeatureFlagType } from \"@prisma/client\";\nimport { Baseline, CurlyBraces, Hash, ToggleLeft } from \"lucide-react\";\nimport { match } from \"ts-pattern\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./Tooltip\";\n\ntype Props = {\n  type: FeatureFlagType;\n  className?: string;\n};\n\nexport function FlagIcon({ type, ...iconProps }: Props) {\n  return (\n    <>\n      <Tooltip>\n        <TooltipContent>\n          <span>\n            This Flag has the type <code className=\"lowercase\">{type}</code>\n          </span>\n        </TooltipContent>\n        <TooltipTrigger>\n          {match(type)\n            .with(\"BOOLEAN\", () => <ToggleLeft {...iconProps} />)\n            .with(\"NUMBER\", () => <Hash {...iconProps} />)\n            .with(\"STRING\", () => <Baseline {...iconProps} />)\n            .with(\"JSON\", () => <CurlyBraces {...iconProps} />)\n            .exhaustive()}\n        </TooltipTrigger>\n      </Tooltip>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/FlagPage.tsx",
    "content": "import type { FeatureFlagType } from \"@prisma/client\";\nimport type { inferRouterOutputs } from \"@trpc/server\";\nimport { AddFeatureFlagModal } from \"components/AddFeatureFlagModal\";\nimport { CreateEnvironmentModal } from \"components/CreateEnvironmentModal\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"components/DropdownMenu\";\nimport { Editor } from \"components/Editor\";\nimport { FeatureFlag } from \"components/FeatureFlag\";\nimport { Modal } from \"components/Modal\";\nimport {} from \"components/Tooltip\";\nimport { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"components/ui/card\";\nimport { EnvironmentBadge } from \"components/ui/environment-badge\";\nimport { Input } from \"components/ui/input\";\nimport Fuse from \"fuse.js\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport {\n  ChevronRight,\n  EditIcon,\n  FileEditIcon,\n  Search,\n  Sparkle,\n  TrashIcon,\n} from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { AiOutlinePlus } from \"react-icons/ai\";\nimport { BsThreeDotsVertical } from \"react-icons/bs\";\nimport type { appRouter } from \"server/trpc/router/_app\";\nimport { trpc } from \"utils/trpc\";\n\nconst EditTitleModal = ({\n  flagId,\n  isOpen,\n  onClose,\n  title,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  title: string;\n  flagId: string;\n}) => {\n  const [newTitle, setNewTitle] = useState(title);\n  const trpcContext = trpc.useContext();\n  const { mutate: updateTitle } = trpc.flags.updateFlagTitle.useMutation({\n    onSuccess() {\n      toast.success(\"Successfully updated the title\");\n      trpcContext.flags.getFlags.invalidate();\n      onClose();\n    },\n    onError() {\n      toast.error(\"Failed to update the title\");\n    },\n  });\n  return (\n    <Modal\n      title=\"Update Title\"\n      confirmText=\"Save\"\n      onConfirm={() => updateTitle({ flagId, title: newTitle })}\n      isOpen={isOpen}\n      onClose={onClose}\n      subtitle=\"The title is used to identify the flag in the UI.\"\n    >\n      <Input\n        value={newTitle}\n        onChange={(e) => setNewTitle(e.target.value)}\n        placeholder=\"MyFlag\"\n      />\n    </Modal>\n  );\n};\n\nconst EditDescriptionModal = ({\n  isOpen,\n  onClose,\n  flagId,\n  description,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  flagId: string;\n  description: string;\n}) => {\n  const [newDescription, setNewDescription] = useState(description);\n  const trpcContext = trpc.useContext();\n  const { mutate: updateDescription } =\n    trpc.flags.updateDescription.useMutation({\n      onSuccess() {\n        toast.success(\"Successfully updated description\");\n        trpcContext.flags.getFlags.invalidate();\n        onClose();\n      },\n      onError() {\n        toast.error(\"Failed to update description\");\n      },\n    });\n\n  return (\n    <Modal\n      title=\"Update Description\"\n      confirmText=\"Save\"\n      onConfirm={() =>\n        updateDescription({ flagId, description: newDescription })\n      }\n      size=\"full\"\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <Editor\n        className=\"w-full\"\n        content={newDescription}\n        onUpdate={setNewDescription}\n      />\n    </Modal>\n  );\n};\n\nconst DeleteFlagModal = ({\n  isOpen,\n  onClose,\n  projectId,\n  flagName,\n  type,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  projectId: string;\n  flagName: string;\n  type: FeatureFlagType;\n}) => {\n  const trpcContext = trpc.useContext();\n  const { mutate: deleteFlag } = trpc.flags.removeFlag.useMutation({\n    onSuccess() {\n      toast.success(`Deleted ${type === \"BOOLEAN\" ? \"flag\" : \"config\"}`);\n      trpcContext.flags.getFlags.invalidate();\n      onClose();\n    },\n    onError() {\n      toast.error(`Failed to delete ${type === \"BOOLEAN\" ? \"flag\" : \"config\"}`);\n    },\n  });\n\n  return (\n    <Modal\n      title=\"Delete Flag\"\n      confirmText=\"Delete\"\n      onConfirm={() => deleteFlag({ name: flagName, projectId })}\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <p>\n        Are you sure that you want to delete the Flag <b>{flagName}</b>?\n      </p>\n    </Modal>\n  );\n};\n\nexport const FeatureFlagPageContent = ({\n  data,\n  type,\n}: {\n  data: NonNullable<inferRouterOutputs<typeof appRouter>[\"flags\"][\"getFlags\"]>;\n  type: \"Flags\" | \"Remote Config\";\n}) => {\n  const searchQueryRef = useRef<string | null>();\n  const [isCreateFlagModalOpen, setIsCreateFlagModalOpen] = useState(false);\n  const [activeFlagInfo, setActiveFlagInfo] = useState<{\n    id: string;\n    action: \"editDescription\" | \"editName\" | \"delete\";\n  } | null>(null);\n\n  const [flags, setFlags] = useState(data.flags);\n  const [isCreateEnvironmentModalOpen, setIsCreateEnvironmentModalOpen] =\n    useState(false);\n  const createFlagRemovalPRMutation =\n    trpc.flags.createFlagRemovalPR.useMutation();\n  const projectId = useProjectId();\n  const router = useRouter();\n\n  const fuse = useMemo(\n    () => new Fuse(data.flags, { keys: [\"name\"] }),\n    [data.flags]\n  );\n\n  useEffect(() => {\n    if (!searchQueryRef.current) {\n      setFlags(data.flags);\n      return;\n    }\n    const results = fuse.search(searchQueryRef.current);\n    setFlags(results.map((result) => result.item));\n  }, [fuse.search, data.flags]);\n\n  const onSearch = () => {\n    const query = searchQueryRef.current;\n    if (!query) {\n      setFlags(data.flags);\n      return;\n    }\n\n    const results = fuse.search(query);\n    setFlags(results.map((result) => result.item));\n  };\n\n  const activeFlag = data.flags.find((flag) => flag.id === activeFlagInfo?.id);\n\n  if (data.environments.length === 0)\n    return (\n      <div className=\"flex flex-col items-center justify-center mt-48\">\n        <h1 className=\"text-2xl font-semibold\">\n          You don't have any environments set up!\n        </h1>\n        <h2>\n          You need to have at least one environment to set up{\" \"}\n          {type === \"Flags\" ? \"feature flags\" : \"remote config\"}\n        </h2>\n        <Button\n          className=\"mt-4\"\n          onClick={() => setIsCreateEnvironmentModalOpen(true)}\n        >\n          Create Environment\n        </Button>\n        <CreateEnvironmentModal\n          isOpen={isCreateEnvironmentModalOpen}\n          onClose={() => setIsCreateEnvironmentModalOpen(false)}\n          projectId={projectId}\n        />\n      </div>\n    );\n\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"flex items-center justify-between\">\n        <div className=\"flex items-center gap-6\">\n          <div className=\"relative w-[300px]\">\n            <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n            <Input\n              type=\"search\"\n              placeholder=\"Search flags...\"\n              className=\"w-full pl-8\"\n              onChange={(e) => {\n                searchQueryRef.current = e.target.value;\n                onSearch();\n              }}\n            />\n          </div>\n          <div className=\"flex flex-col gap-2\">\n            <span className=\"text-sm font-medium text-muted-foreground\">\n              Available Environments\n            </span>\n            <div className=\"flex gap-2\">\n              {data.environments.map((env) => (\n                <EnvironmentBadge key={env.id} name={env.name} size=\"default\" />\n              ))}\n            </div>\n          </div>\n        </div>\n        <div className=\"flex gap-2\">\n          <Button size=\"sm\" onClick={() => setIsCreateFlagModalOpen(true)}>\n            <AiOutlinePlus className=\"w-4 h-4 mr-2\" />\n            Add {type === \"Flags\" ? \"Flag\" : \"Config\"}\n          </Button>\n        </div>\n      </div>\n\n      <div className=\"grid gap-4\">\n        {flags.map((currentFlag) => (\n          <Card\n            key={currentFlag.id}\n            className=\"relative overflow-hidden transition-all duration-200 group/flag hover:shadow-md hover:border-primary/20\"\n          >\n            <div className=\"absolute top-0 right-0 h-full w-1.5 bg-gradient-to-b from-primary/20 to-primary/5\" />\n            <CardHeader className=\"pb-3\">\n              <div className=\"flex items-center justify-between\">\n                <div className=\"flex items-center gap-3\">\n                  <div className=\"flex flex-col\">\n                    <div className=\"flex items-center gap-3\">\n                      <CardTitle className=\"text-base font-semibold transition-colors group-hover/flag:text-primary\">\n                        {currentFlag.name}\n                      </CardTitle>\n                      {currentFlag.type !== \"BOOLEAN\" && (\n                        <span className=\"px-2 py-0.5 text-xs rounded-md bg-blue-500/10 text-blue-500\">\n                          {currentFlag.type.toLowerCase()}\n                        </span>\n                      )}\n                    </div>\n                    {currentFlag.description && (\n                      <p className=\"text-sm text-muted-foreground mt-1.5 line-clamp-1\">\n                        {currentFlag.description.replace(/<[^>]*>/g, \"\")}\n                      </p>\n                    )}\n                  </div>\n                </div>\n                <DropdownMenu>\n                  <DropdownMenuTrigger asChild>\n                    <Button\n                      variant=\"ghost\"\n                      size=\"sm\"\n                      className=\"relative z-10 w-8 h-8 p-0\"\n                      onClick={(e) => e.stopPropagation()}\n                    >\n                      <span className=\"sr-only\">Open menu</span>\n                      <BsThreeDotsVertical className=\"w-4 h-4\" />\n                    </Button>\n                  </DropdownMenuTrigger>\n                  <DropdownMenuContent align=\"end\">\n                    <DropdownMenuItem\n                      onClick={(e) => {\n                        e.stopPropagation();\n                        setActiveFlagInfo({\n                          id: currentFlag.id,\n                          action: \"editName\",\n                        });\n                      }}\n                    >\n                      <EditIcon className=\"w-4 h-4 mr-2\" />\n                      Edit Name\n                    </DropdownMenuItem>\n                    <DropdownMenuItem\n                      onClick={(e) => {\n                        e.stopPropagation();\n                        setActiveFlagInfo({\n                          id: currentFlag.id,\n                          action: \"editDescription\",\n                        });\n                      }}\n                    >\n                      <FileEditIcon className=\"w-4 h-4 mr-2\" />\n                      Edit Description\n                    </DropdownMenuItem>\n                    <DropdownMenuItem\n                      disabled={!data.hasGithubIntegration}\n                      onClick={async (e) => {\n                        e.stopPropagation();\n                        const url = await toast.promise(\n                          createFlagRemovalPRMutation.mutateAsync({\n                            flagId: currentFlag.id,\n                          }),\n                          {\n                            loading: \"Creating removal PR...\",\n                            success: \"Successfully created removal PR\",\n                            error: \"Failed to create removal PR\",\n                          }\n                        );\n                        window.open(url, \"_blank\");\n                      }}\n                    >\n                      <Sparkle className=\"w-4 h-4 mr-2\" />\n                      Create Removal PR\n                    </DropdownMenuItem>\n                    <DropdownMenuItem\n                      className=\"text-destructive focus:text-destructive\"\n                      onClick={(e) => {\n                        e.stopPropagation();\n                        setActiveFlagInfo({\n                          id: currentFlag.id,\n                          action: \"delete\",\n                        });\n                      }}\n                    >\n                      <TrashIcon className=\"w-4 h-4 mr-2\" />\n                      Delete {type === \"Flags\" ? \"Flag\" : \"Config\"}\n                    </DropdownMenuItem>\n                  </DropdownMenuContent>\n                </DropdownMenu>\n              </div>\n            </CardHeader>\n            <CardContent>\n              <div className=\"grid gap-6\">\n                <div className=\"grid grid-cols-[repeat(auto-fill,minmax(250px,1fr))] gap-4\">\n                  {currentFlag.values\n                    .sort(\n                      (a, b) =>\n                        a.environment.sortIndex - b.environment.sortIndex\n                    )\n                    .map((flagValue) => (\n                      <div\n                        key={flagValue.flagId + flagValue.environment.id}\n                        className=\"space-y-2\"\n                      >\n                        <div className=\"flex items-center justify-between\">\n                          <EnvironmentBadge\n                            name={flagValue.environment.name}\n                            size=\"default\"\n                          />\n                          <Button\n                            variant=\"ghost\"\n                            size=\"sm\"\n                            className=\"px-2 text-xs h-7 bg-muted/50 hover:bg-muted group/configure\"\n                            onClick={() =>\n                              router.push(\n                                `/projects/${projectId}/flags/${flagValue.id}`\n                              )\n                            }\n                          >\n                            Configure\n                            <ChevronRight className=\"ml-1 h-3 w-3 group-hover/configure:translate-x-0.5 transition-transform\" />\n                          </Button>\n                        </div>\n                        <FeatureFlag\n                          flag={currentFlag}\n                          projectId={projectId}\n                          environmentName={flagValue.environment.name}\n                          flagValueId={flagValue.id}\n                          type={currentFlag.type}\n                          minimal\n                        />\n                      </div>\n                    ))}\n                </div>\n              </div>\n            </CardContent>\n          </Card>\n        ))}\n      </div>\n\n      <AddFeatureFlagModal\n        isOpen={isCreateFlagModalOpen}\n        onClose={() => setIsCreateFlagModalOpen(false)}\n        projectId={projectId}\n        isRemoteConfig={type === \"Remote Config\"}\n      />\n      <CreateEnvironmentModal\n        isOpen={isCreateEnvironmentModalOpen}\n        onClose={() => setIsCreateEnvironmentModalOpen(false)}\n        projectId={projectId}\n      />\n      {activeFlag && (\n        <>\n          <EditTitleModal\n            key={activeFlag.id}\n            flagId={activeFlag.id}\n            title={activeFlag.name ?? \"\"}\n            isOpen={activeFlagInfo?.action === \"editName\"}\n            onClose={() => setActiveFlagInfo(null)}\n          />\n          <EditDescriptionModal\n            key={activeFlag.id}\n            flagId={activeFlag.id}\n            description={activeFlag.description ?? \"\"}\n            isOpen={activeFlagInfo?.action === \"editDescription\"}\n            onClose={() => setActiveFlagInfo(null)}\n          />\n          <DeleteFlagModal\n            flagName={activeFlag.name}\n            projectId={projectId}\n            isOpen={activeFlagInfo?.action === \"delete\"}\n            onClose={() => setActiveFlagInfo(null)}\n            type={activeFlag.type}\n          />\n        </>\n      )}\n    </div>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/Footer.tsx",
    "content": "import { DOCS_URL } from \"@tryabby/core\";\nimport { Github } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { BsDiscord, BsLinkedin } from \"react-icons/bs\";\nimport { RiTwitterXLine } from \"react-icons/ri\";\n\nconst GITHUB_URL = \"https://github.com/tryabby/abby\";\nconst LINKEDIN_URL = \"https://www.linkedin.com/company/tryabby/\";\nconst TWITTER_URL = \"https://twitter.com/tryabby\";\nexport const DISCORD_INVITE_URL = \"https://discord.gg/nk7wKf7Pv2\";\n\nexport function Footer() {\n  return (\n    <footer className=\"bg-ab_accent-background text-ab_accent-foreground\">\n      <div className=\"container px-6 py-6 md:px-16 md:py-12\">\n        <div className=\"grid grid-cols-1 gap-8 md:grid-cols-4\">\n          <div>\n            <h1 className=\"mb-3 text-2xl font-bold\">Abby</h1>\n            <h2 className=\"mb-8\">\n              Feature Flagging and Remote Config for developers. Fully type-safe\n              and open source.\n            </h2>\n          </div>\n          <div className=\"flex flex-col gap-y-4 md:gap-0\">\n            <Link\n              href=\"/integrations\"\n              className=\"mb-2 text-2xl font-bold md:mb-3\"\n            >\n              Integrations\n            </Link>\n            <Link href={\"/integrations/react\"}>React</Link>\n            <Link href={\"/integrations/nextjs\"}>Next.js</Link>\n            <Link href={\"/integrations/svelte\"}>Svelte</Link>\n            <Link href={\"/integrations/angular\"}>Angular</Link>\n          </div>\n          <div className=\"flex flex-col gap-y-4 md:gap-0\">\n            <h1 className=\"mb-2 text-2xl font-bold md:mb-3\">Links</h1>\n            <Link href={\"/tips-and-insights\"}>Blog</Link>\n            <Link href={DOCS_URL}>Documentation</Link>\n            <Link href={GITHUB_URL}>Github</Link>\n            <Link href={DISCORD_INVITE_URL}>Discord</Link>\n          </div>\n          <div className=\"flex flex-col gap-y-4 md:gap-0\">\n            <h1 className=\"mb-2 text-2xl font-bold md:mb-3\">Legal</h1>\n            <Link href=\"/imprint\">Imprint</Link>\n            <Link href=\"/privacy\">Privacy</Link>\n            <Link href=\"/terms\">Terms</Link>\n          </div>\n        </div>\n      </div>\n      <div className=\"container\">\n        <div className=\"flex flex-col justify-between gap-y-4 border-t border-gray-600 px-6 py-6  sm:flex-row md:px-16\">\n          <p>© {new Date().getFullYear()} Abby. All rights reserved.</p>\n          <div className=\"flex items-center space-x-4\">\n            <a href={GITHUB_URL} aria-label=\"Github\">\n              <Github />\n            </a>\n            <a href={LINKEDIN_URL}>\n              <BsLinkedin size={24} aria-label=\"LinkedIn\" />\n            </a>\n            <a href={TWITTER_URL}>\n              <RiTwitterXLine size={24} aria-label=\"Twitter / X\" />\n            </a>\n            <a href={DISCORD_INVITE_URL} aria-label=\"Discord\">\n              <BsDiscord size={24} />\n            </a>\n          </div>\n        </div>\n      </div>\n    </footer>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Input.tsx",
    "content": "import * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nexport interface InputProps\n  extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ className, ...props }, ref) => {\n    return (\n      <input\n        className={cn(\n          \"flex h-10 w-full rounded-md border border-slate-300 bg-transparent px-3 py-2 text-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n          \"dark:border-gray-600 dark:text-slate-50 dark:focus:ring-gray-500 dark:focus:ring-offset-gray-800\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"
  },
  {
    "path": "apps/web/src/components/Integrations.tsx",
    "content": "import { DOCS_URL } from \"@tryabby/core\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { cn } from \"lib/utils\";\nimport Link from \"next/link\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n  SiAngular,\n  SiNextdotjs,\n  SiReact,\n  SiRemix,\n  SiSvelte,\n} from \"react-icons/si\";\n\nexport const INTEGRATIONS = [\n  {\n    name: \"Next.js\",\n    logo: <SiNextdotjs />,\n    docsUrlSlug: \"nextjs\",\n    logoFill: \"#fff\",\n    description: \"Feature Flags, Remote Config, and A/B Testing for Next.js\",\n    npmPackage: \"next\",\n    additionalFeatures: [\n      \"Server Side Rendering\",\n      \"Incremental Static Regeneration\",\n      \"Easy to use Hooks\",\n    ],\n  },\n  {\n    name: \"React\",\n    logo: <SiReact />,\n    docsUrlSlug: \"react\",\n    logoFill: \"#61DAFB\",\n    description: \"Feature Flags, Remote Config, and A/B Testing for React\",\n    npmPackage: \"react\",\n    additionalFeatures: [\"Easy to use Hooks\"],\n  },\n  {\n    name: \"Svelte\",\n    logo: <SiSvelte />,\n    docsUrlSlug: \"svelte\",\n    logoFill: \"#FF3E00\",\n    description:\n      \"Feature Flags, Remote Config, and A/B Testing for Svelte & Sveltekit\",\n    npmPackage: \"svelte\",\n    additionalFeatures: [\"Sveltekit Support\"],\n  },\n  {\n    name: \"Remix\",\n    logo: <SiRemix />,\n    docsUrlSlug: \"remix\",\n    logoFill: \"#eaf2fe\",\n    description: \"Feature Flags, Remote Config, and A/B Testing for Remix \",\n    npmPackage: \"remix\",\n    additionalFeatures: [\"Server Side Rendering\", \"Easy to use Hooks\"],\n  },\n  {\n    name: \"Angular\",\n    logo: <SiAngular />,\n    docsUrlSlug: \"angular\",\n    logoFill: \"#DD0031\",\n    description: \"Feature Flags, Remote Config, and A/B Testing for Angular\",\n    npmPackage: \"angular\",\n  },\n] satisfies Array<{\n  name: string;\n  logo: React.ReactNode;\n  logoFill: string;\n  docsUrlSlug: string;\n  description: string;\n  npmPackage: string;\n  additionalFeatures?: Array<string>;\n}>;\n\nexport const Integrations = () => {\n  const [currentIntegrationIndex, setCurrentIntegrationIndex] = useState(0);\n  const intervalRef = useRef<NodeJS.Timeout>();\n  const currentIntegration = INTEGRATIONS[currentIntegrationIndex];\n\n  useEffect(() => {\n    intervalRef.current = setInterval(() => {\n      setCurrentIntegrationIndex((index) =>\n        index === INTEGRATIONS.length - 1 ? 0 : index + 1\n      );\n    }, 2000);\n\n    return () => clearInterval(intervalRef.current);\n  }, []);\n\n  if (!currentIntegration) {\n    return null;\n  }\n\n  return (\n    <div className=\"container px-6 md:px-16\">\n      <div className=\"flex flex-col items-center justify-center space-x-3 text-center text-4xl font-bold md:flex-row md:items-start\">\n        <h2>Feature Flags for </h2>\n        <div className=\"relative w-32\">\n          <AnimatePresence>\n            {INTEGRATIONS.map(\n              (integration, index) =>\n                index === currentIntegrationIndex && (\n                  <motion.p\n                    key={integration.name}\n                    className=\"absolute left-0 top-0\"\n                    style={{ color: integration.logoFill }}\n                    initial={{ opacity: 0, y: 50 }}\n                    animate={{ opacity: 1, y: 0 }}\n                    exit={{ opacity: 0, y: -50 }}\n                  >\n                    {integration.name}\n                  </motion.p>\n                )\n            )}\n          </AnimatePresence>\n        </div>\n      </div>\n      <div className=\"mx-auto my-24 flex max-w-md justify-between\">\n        {INTEGRATIONS.map((integration, index) => (\n          <div key={integration.name}>\n            <button\n              type=\"button\"\n              onClick={() => {\n                setCurrentIntegrationIndex(index);\n                clearInterval(intervalRef.current);\n              }}\n              data-active={index === currentIntegrationIndex}\n              className={cn(\n                \"cursor-pointer bg-none text-5xl opacity-50 grayscale transition-all duration-300 ease-in-out hover:opacity-100 hover:grayscale-0\",\n                \"data-[active=true]:opacity-100 data-[active=true]:grayscale-0\"\n              )}\n              style={{ color: integration.logoFill }}\n            >\n              {integration.logo}\n            </button>\n          </div>\n        ))}\n      </div>\n      <div className=\"flex items-center\">\n        <Link\n          href={`${DOCS_URL}integrations/${currentIntegration.docsUrlSlug}`}\n          className=\"mx-auto block min-w-[200px] rounded-lg bg-accent px-4 py-2 text-center font-semibold uppercase text-accent-foreground transition-transform duration-200 ease-in-out hover:scale-110\"\n        >\n          {currentIntegration.name} Docs\n        </Link>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/JSONEditor.tsx",
    "content": "import { Editor } from \"@monaco-editor/react\";\n\ntype Props = {\n  value: string;\n  onChange: (value: string) => void;\n};\n\nexport function JSONEditor({ onChange, value }: Props) {\n  return (\n    <Editor\n      defaultLanguage=\"json\"\n      theme=\"vs-dark\"\n      value={value}\n      onChange={(e) => onChange(e ?? \"\")}\n      className=\"min-h-[300px]\"\n      options={{ padding: { top: 20 } }}\n    />\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Layout.tsx",
    "content": "import { DOCS_URL } from \"@tryabby/core\";\nimport { Button } from \"components/ui/button\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { useTracking } from \"lib/tracking\";\nimport { Book, HelpCircle, Mail, Video } from \"lucide-react\";\nimport { NextSeo } from \"next-seo\";\nimport Link from \"next/link\";\nimport type { ReactNode } from \"react\";\nimport { FaDiscord } from \"react-icons/fa\";\nimport { twMerge } from \"tailwind-merge\";\nimport { trpc } from \"../utils/trpc\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"./DropdownMenu\";\nimport { DISCORD_INVITE_URL } from \"./Footer\";\nimport ProjectSwitcher from \"./ProjectSwitcher\";\nimport { AppNav } from \"./app/AppNav\";\nimport { UserNav } from \"./app/UserNav\";\n\nexport const Layout = ({ children }: { children: ReactNode }) => {\n  const trackEvent = useTracking();\n  const currentProjectId = useProjectId();\n  const { data } = trpc.user.getProjects.useQuery();\n\n  const currentProject = data?.projects.find(\n    ({ project }) => project.id === currentProjectId\n  );\n\n  return (\n    <>\n      <NextSeo title={currentProject?.project.name} />\n      <div className={twMerge(\"dark flex h-screen flex-col bg-background\")}>\n        <nav className=\"px-8 py-3 border-b border-border lg:px-10\">\n          <div className=\"flex items-center justify-between\">\n            <div className=\"flex space-x-8\">\n              {!currentProject ? null : (\n                <>\n                  <ProjectSwitcher />\n                  <AppNav className=\"hidden md:flex\" />\n                </>\n              )}\n            </div>\n            <div className=\"flex items-center space-x-4\">\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button\n                    size=\"icon\"\n                    variant=\"ghost\"\n                    className=\"hidden md:flex\"\n                    // all other events are prevented by radix :(\n                    onPointerDown={() => {\n                      trackEvent(\"Dashboard Help Clicked\");\n                    }}\n                    title=\"\"\n                  >\n                    <HelpCircle />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent side=\"bottom\" align=\"end\">\n                  <DropdownMenuItem disabled>Need help?</DropdownMenuItem>\n                  <Link href={DOCS_URL}>\n                    <DropdownMenuItem>\n                      <Book className=\"w-4 h-4 mr-2\" />\n                      Documentation\n                    </DropdownMenuItem>\n                  </Link>\n                  <Link href=\"mailto:tim@tryabby.com\">\n                    <DropdownMenuItem>\n                      <Mail className=\"w-4 h-4 mr-2\" />\n                      Send a Mail\n                    </DropdownMenuItem>\n                  </Link>\n                  <Link href=\"https://cal.com/cstrnt/abby-help\">\n                    <DropdownMenuItem>\n                      <Video className=\"w-4 h-4 mr-2\" />\n                      Book a free Call\n                    </DropdownMenuItem>\n                  </Link>\n                  <Link href={DISCORD_INVITE_URL}>\n                    <DropdownMenuItem>\n                      <FaDiscord className=\"w-4 h-4 mr-2\" />\n                      Join our Discord\n                    </DropdownMenuItem>\n                  </Link>\n                </DropdownMenuContent>\n              </DropdownMenu>\n              <UserNav />\n            </div>\n          </div>\n          <AppNav\n            className=\"min-w-full py-3 mt-3 overflow-x-auto md:hidden\"\n            linkClassName=\"flex-none\"\n          />\n        </nav>\n        <main className=\"relative flex-1 w-full overflow-x-hidden overflow-y-auto text-white\">\n          <div className=\"h-full p-8 lg:p-10\">{children}</div>\n        </main>\n      </div>\n    </>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/LoadingSpinner.tsx",
    "content": "import { twMerge } from \"tailwind-merge\";\n\nexport function LoadingSpinner({\n  height,\n  width,\n  className,\n}: {\n  height?: string;\n  width?: string;\n  className?: string;\n}) {\n  return (\n    <svg\n      className={twMerge(\n        \"-ml-1 mr-3 h-5 w-5 animate-spin text-white\",\n        className\n      )}\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      style={{ height, width }}\n    >\n      <title>Loading Spinner</title>\n      <circle\n        className=\"opacity-25\"\n        cx=\"12\"\n        cy=\"12\"\n        r=\"10\"\n        stroke=\"currentColor\"\n        strokeWidth=\"4\"\n      />\n      <path\n        className=\"opacity-75\"\n        fill=\"currentColor\"\n        d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n      />\n    </svg>\n  );\n}\n\nexport const FullPageLoadingSpinner = () => (\n  <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n    <LoadingSpinner className=\"h-8 w-8\" />\n  </div>\n);\n"
  },
  {
    "path": "apps/web/src/components/Logo.tsx",
    "content": "type Props = {\n  as?: React.ElementType;\n};\n\nexport default function Logo({ as: Component = \"span\" }: Props) {\n  return (\n    <Component className=\"font-logo text-3xl font-semibold\">Abby</Component>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/MarketingLayout.tsx",
    "content": "import clsx from \"clsx\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { cn } from \"lib/utils\";\nimport { ArrowUpCircle } from \"lucide-react\";\nimport { NextSeo } from \"next-seo\";\nimport { useRouter } from \"next/router\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { getSeo } from \"seo/SeoDescriptions\";\nimport { Footer } from \"./Footer\";\nimport { Navbar } from \"./Navbar\";\n\nexport type MarketingLayoutProps = PropsWithChildren<{\n  isMarkdown?: boolean;\n  seoTitle?: string;\n  seoDescription?: string;\n}>;\n\nexport function MarketingLayout({\n  children,\n  isMarkdown,\n  seoTitle,\n  seoDescription,\n}: MarketingLayoutProps) {\n  const router = useRouter();\n  const pageName = router.asPath;\n  const { metaTitle, metaDescription } = getSeo(pageName, \"Marketing\");\n  const [showScrollToTop, setShowScrollToTop] = useState(false);\n\n  useEffect(() => {\n    const handleScroll = () => {\n      if (window.scrollY > window.innerHeight / 2) {\n        setShowScrollToTop(true);\n      } else {\n        setShowScrollToTop(false);\n      }\n    };\n\n    window.addEventListener(\"scroll\", handleScroll);\n\n    return () => {\n      window.removeEventListener(\"scroll\", handleScroll);\n    };\n  }, []);\n\n  return (\n    <>\n      <NextSeo\n        title={seoTitle ?? metaTitle}\n        description={seoDescription ?? metaDescription}\n      />\n      <main\n        className={cn(\n          \"max-w-screen flex min-h-screen flex-col overflow-x-hidden bg-ab_primary-background text-ab_primary-foreground\"\n        )}\n      >\n        <Navbar />\n        <section\n          className={clsx(\n            \"flex-1 pt-6\",\n            isMarkdown && \"container w-full px-6 py-6 md:px-16\"\n          )}\n        >\n          {isMarkdown ? (\n            <div className=\"prose max-w-full dark:prose-invert lg:prose-lg\">\n              {children}\n            </div>\n          ) : (\n            children\n          )}\n        </section>\n        <Footer />\n        <AnimatePresence>\n          {showScrollToTop && (\n            <motion.button\n              initial={{ opacity: 0 }}\n              animate={{ opacity: 1 }}\n              exit={{ opacity: 0 }}\n              className=\"fixed bottom-4 left-4 z-50 hidden rounded-full bg-ab_primary-background p-2 text-ab_accent-background md:block\"\n              title=\"Scroll to top\"\n              onClick={() => {\n                window.scrollTo({ top: 0, behavior: \"smooth\" });\n              }}\n            >\n              <ArrowUpCircle className=\"h-8 w-8\" />\n            </motion.button>\n          )}\n        </AnimatePresence>\n      </main>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Modal.tsx",
    "content": "import {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogTitle,\n} from \"components/ui/dialog\";\nimport { cn } from \"lib/utils\";\nimport { Loader2 } from \"lucide-react\";\nimport { Button } from \"./ui/button\";\n\ntype Props = {\n  onClose: () => void;\n  isOpen: boolean;\n  children: React.ReactNode;\n  title: string;\n  subtitle?: string;\n  cancelText?: string;\n  confirmText?: string;\n  onConfirm?: () => void | Promise<void>;\n  size?: \"base\" | \"full\";\n  isConfirming?: boolean;\n  isConfirmButtonDisabled?: boolean;\n};\n\nexport const Modal = ({\n  onClose,\n  isOpen,\n  children,\n  title,\n  cancelText,\n  confirmText,\n  onConfirm,\n  size = \"base\",\n  isConfirming = false,\n  isConfirmButtonDisabled = false,\n  subtitle,\n}: Props) => {\n  const handleConfirm = async () => {\n    await onConfirm?.();\n  };\n\n  return (\n    <Dialog\n      open={isOpen}\n      onOpenChange={(e) => {\n        if (!e) onClose();\n      }}\n    >\n      <DialogContent className={cn(size === \"full\" && \"sm:max-w-[980px]\")}>\n        <DialogTitle> {title} </DialogTitle>\n        <DialogDescription>{subtitle}</DialogDescription>\n        <div className=\"my-6 text-pink-50\">{children}</div>\n\n        <DialogFooter>\n          <Button variant=\"secondary\" onClick={onClose}>\n            {cancelText ?? \"Cancel\"}\n          </Button>\n          <Button\n            type=\"button\"\n            onClick={handleConfirm}\n            disabled={isConfirming || isConfirmButtonDisabled}\n          >\n            {isConfirming && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n            {confirmText ?? \"Confirm\"}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n};\n"
  },
  {
    "path": "apps/web/src/components/Navbar/index.tsx",
    "content": "import { Menu, Transition } from \"@headlessui/react\";\nimport { DOCS_URL } from \"@tryabby/core\";\nimport clsx from \"clsx\";\nimport Logo from \"components/Logo\";\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n} from \"components/ui/navigation-menu\";\n\nimport { cn } from \"lib/utils\";\nimport { ExternalLink, Star } from \"lucide-react\";\nimport { useSession } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport * as React from \"react\";\nimport { Fragment } from \"react\";\nimport { GiHamburgerMenu } from \"react-icons/gi\";\nimport { trpc } from \"utils/trpc\";\n\ntype NavItem = {\n  title: string;\n} & (\n  | { href: string; isExternal?: boolean }\n  | {\n      subItems: {\n        title: string;\n        subTitle: string;\n        href: string;\n        isExternal?: boolean;\n      }[];\n    }\n);\n\nconst NAV_ITEMS: Array<NavItem> = [\n  {\n    title: \"Features\",\n    href: \"/#features\",\n  },\n  {\n    title: \"Pricing\",\n    href: \"/#pricing\",\n  },\n  {\n    title: \"Developer\",\n    subItems: [\n      {\n        title: \"Devtools\",\n        subTitle: \"Painless Debugging\",\n        href: \"/devtools\",\n      },\n      {\n        title: \"Integrations\",\n        subTitle: \"SDKs for React, Next.js, and More\",\n        href: \"/integrations\",\n      },\n      {\n        title: \"Documentation\",\n        subTitle: \"Developers API Reference\",\n        href: DOCS_URL,\n        isExternal: true,\n      },\n    ],\n  },\n  {\n    title: \"Learn More\",\n    subItems: [\n      {\n        title: \"Tips & Insights\",\n        subTitle: \"Learn how to use Abby\",\n        href: \"/tips-and-insights\",\n      },\n      {\n        title: \"Contact Us\",\n        subTitle: \"Get in touch with us\",\n        href: \"/contact\",\n      },\n    ],\n  },\n];\n\nfunction MobileNav() {\n  const { data, status } = useSession();\n\n  return (\n    <Menu>\n      <Menu.Button\n        aria-label=\"Open the navigation menu\"\n        className=\"flex h-12 w-12 items-center justify-center space-x-2 rounded-lg font-medium transition-colors duration-200 ease-in-out hover:bg-pink-300/40 lg:hidden\"\n      >\n        <GiHamburgerMenu />\n      </Menu.Button>\n      <Transition\n        enter=\"transition duration-100 ease-out\"\n        enterFrom=\"transform scale-95 opacity-0\"\n        enterTo=\"transform scale-100 opacity-100\"\n        leave=\"transition duration-75 ease-out\"\n        leaveFrom=\"transform scale-100 opacity-100\"\n        leaveTo=\"transform scale-95 opacity-0\"\n        as={Fragment}\n      >\n        <Menu.Items\n          className={cn(\n            \"absolute right-6 top-[80px] z-10 flex w-[calc(100%-3rem)] flex-col space-y-4 rounded-lg p-4 shadow-xl\",\n            \"border border-ab_accent-background bg-ab_primary-background text-ab_primary-foreground\"\n          )}\n        >\n          {NAV_ITEMS.flatMap((i) => (\"subItems\" in i ? i.subItems : i)).map(\n            ({ href, title, isExternal }) => (\n              <Menu.Item key={href}>\n                {({ active }) => (\n                  <Link\n                    className={clsx(\n                      \"flex items-center space-x-2 rounded-lg p-2\",\n                      active &&\n                        \"bg-ab_accent-background text-ab_accent-foreground\"\n                    )}\n                    href={href ?? \"\"}\n                  >\n                    <span>{title}</span>\n                    {isExternal && <ExternalLink className=\"-mt-1 h-4 w-4\" />}\n                  </Link>\n                )}\n              </Menu.Item>\n            )\n          )}\n          <Menu.Item>\n            {status === \"authenticated\" ? (\n              <NavItem\n                href={`/projects${\n                  data.user?.lastOpenProjectId\n                    ? `/${data.user?.lastOpenProjectId}`\n                    : \"\"\n                }/flags`}\n                isProminent\n                className=\"mr-0\"\n              >\n                Dashboard\n              </NavItem>\n            ) : (\n              <NavItem isProminent href=\"/login\" className=\"mr-0\">\n                Log In\n              </NavItem>\n            )}\n          </Menu.Item>\n        </Menu.Items>\n      </Transition>\n    </Menu>\n  );\n}\n\ntype NavItemProps = {\n  children: React.ReactNode;\n  isProminent?: boolean;\n  className?: string;\n} & (\n  | {\n      href: string;\n      onClick?: never;\n    }\n  | {\n      href?: never;\n      onClick: () => void;\n    }\n);\nfunction NavItem({\n  href,\n  children,\n  onClick,\n  isProminent,\n  className,\n}: NavItemProps) {\n  return (\n    <Link\n      href={href ?? \"\"}\n      onClick={onClick}\n      scroll={false}\n      className={clsx(\n        \"mr-2 flex items-center space-x-2 rounded-lg px-4 py-2 font-medium transition-all duration-200 ease-in-out\",\n        className,\n        isProminent\n          ? \"bg-ab_accent-background text-ab_accent-foreground hover:opacity-90\"\n          : \"hover:bg-pink-300/40\"\n      )}\n    >\n      {children}\n    </Link>\n  );\n}\n\nconst ListItem = React.forwardRef<\n  React.ElementRef<typeof Link>,\n  React.ComponentPropsWithoutRef<typeof Link> & {\n    isExternalLink?: boolean;\n  }\n>(({ className, title, children, isExternalLink, ...props }, ref) => {\n  return (\n    <NavigationMenuLink asChild>\n      <Link\n        ref={ref}\n        className={cn(\n          \"block select-none space-y-1 rounded-md bg-ab_primary-background p-3 leading-none text-ab_primary-foreground no-underline outline-none transition-colors hover:bg-gray-800 hover:text-ab_primary-foreground focus:bg-gray-800 focus:text-ab_primary-foreground\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"flex items-center space-x-2 text-sm font-medium leading-none\">\n          <span>{title}</span>{\" \"}\n          {isExternalLink && (\n            <ExternalLink width={14} height={14} className=\"-mt-1\" />\n          )}\n        </div>\n        <p className=\"line-clamp-2 text-sm leading-snug text-ab_primary-foreground-muted\">\n          {children}\n        </p>\n      </Link>\n    </NavigationMenuLink>\n  );\n});\nListItem.displayName = \"ListItem\";\n\nexport function Navbar() {\n  const { data: userSession, status } = useSession();\n  const { data: starsCount, isLoading: isStarsLoading } =\n    trpc.misc.getStars.useQuery();\n\n  return (\n    <nav className=\"container relative flex items-center justify-between border-b border-b-ab_accent-background px-6 py-6 md:px-16\">\n      <div className=\"flex items-center space-x-4\">\n        <Link href=\"/\" className=\"mr-12\">\n          <Logo />\n        </Link>\n\n        <NavigationMenu className=\"hidden lg:block\">\n          <NavigationMenuList>\n            {NAV_ITEMS.map((item) => (\n              <NavigationMenuItem key={item.title}>\n                {!(\"subItems\" in item) ? (\n                  <Link href={item.href} legacyBehavior passHref>\n                    <NavigationMenuLink className=\"group inline-flex h-10 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-ab_primary-background-hover hover:text-ab_primary-foreground focus:bg-ab_primary-background-hover focus:text-ab_primary-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-ab_primary-background-hover data-[state=open]:bg-ab_primary-background-hover\">\n                      {item.title}\n                    </NavigationMenuLink>\n                  </Link>\n                ) : (\n                  <>\n                    <NavigationMenuTrigger className=\"group inline-flex h-10 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-ab_primary-background-hover hover:text-ab_primary-foreground focus:bg-ab_primary-background-hover focus:text-ab_primary-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-ab_primary-background-hover data-[state=open]:bg-ab_primary-background-hover\">\n                      {item.title}\n                    </NavigationMenuTrigger>\n                    <NavigationMenuContent className=\"min-w-[400px]\">\n                      {item.subItems.map(\n                        ({ href, title, subTitle, isExternal }) => (\n                          <ListItem\n                            key={href}\n                            href={href}\n                            title={title}\n                            isExternalLink={isExternal}\n                          >\n                            {subTitle}\n                          </ListItem>\n                        )\n                      )}\n                    </NavigationMenuContent>\n                  </>\n                )}\n              </NavigationMenuItem>\n            ))}\n          </NavigationMenuList>\n        </NavigationMenu>\n      </div>\n      <div className=\"flex items-center space-x-3\">\n        <Link\n          href=\"https://github.com/tryabby/abby\"\n          className=\"flex h-full items-center justify-center space-x-2 rounded-lg border-2 border-ab_primary-foreground px-4 py-2 font-medium transition-colors duration-200 ease-out hover:bg-pink-300/50\"\n        >\n          <Star className=\"h-5 w-5\" />\n          <span>{isStarsLoading ? \"0\" : `${starsCount}`}</span>\n        </Link>\n        {status === \"authenticated\" ? (\n          <NavItem\n            href={`/projects${\n              userSession.user?.lastOpenProjectId\n                ? `/${userSession.user?.lastOpenProjectId}`\n                : \"\"\n            }/flags`}\n            isProminent\n            className=\"hidden lg:flex\"\n          >\n            Dashboard\n          </NavItem>\n        ) : (\n          <NavItem isProminent href=\"/login\" className=\"hidden lg:flex\">\n            Log In\n          </NavItem>\n        )}\n        <MobileNav />\n      </div>\n    </nav>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Pricing.tsx",
    "content": "import clsx from \"clsx\";\nimport { cn } from \"lib/utils\";\nimport { Info } from \"lucide-react\";\nimport { useSession } from \"next-auth/react\";\n\nimport { useTracking } from \"lib/tracking\";\nimport Link from \"next/link\";\nimport { Fragment, useState } from \"react\";\nimport { AiOutlineCheckCircle } from \"react-icons/ai\";\nimport { getLimitByPlan } from \"server/common/plans\";\nimport type { Plan } from \"types/plausible-events\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./Tooltip\";\nimport { Label } from \"./ui/label\";\nimport { Switch } from \"./ui/switch\";\n\ntype PricingElementProps = {\n  price: string;\n  title: string;\n  subtitle: string;\n  features: string[];\n  isFeatured?: boolean;\n  priceSuffix?: string;\n  ctaText?: string;\n  href: string;\n  isFull?: boolean;\n  planName: Plan;\n};\n\nfunction PricingElement({\n  features,\n  price,\n  title,\n  priceSuffix,\n  ctaText,\n  href,\n  isFull,\n  planName,\n}: PricingElementProps) {\n  const trackEvent = useTracking();\n\n  return (\n    <div\n      className={cn(\n        \"rounded-2xl border border-ab_accent-background px-4 py-16\",\n        isFull && \"lg:col-span-3 lg:grid lg:grid-cols-3 lg:border-solid lg:py-8\"\n      )}\n    >\n      <div>\n        <p className=\"text-4xl font-extrabold\">\n          {price} <span className=\"text-sm font-normal\">{priceSuffix}</span>\n        </p>\n        <h2\n          className={cn(\"mb-3 mt-6 text-xl font-semibold\", isFull && \"lg:my-3\")}\n        >\n          {title}\n        </h2>\n        {/* <p className={cn(\"te h-32\", isFull && \"lg:h-auto\")}>{subtitle}</p> */}\n      </div>\n      <div\n        className={cn(\n          \"flex flex-col\",\n          isFull &&\n            \"lg:col-span-2 lg:ml-8 lg:grid lg:grid-cols-2 lg:items-center\"\n        )}\n      >\n        <Link\n          href={href}\n          className={cn(\n            \"my-6 w-full rounded-xl border px-4 py-2 transition-colors duration-200 ease-in-out\",\n            \"border-ab_accent-background hover:bg-ab_accent-background\",\n            isFull && \"lg:order-2 lg:w-64 lg:justify-self-center\"\n          )}\n          onClick={() =>\n            trackEvent(\"Plan Selected\", { props: { Plan: planName } })\n          }\n        >\n          {ctaText ?? `Choose ${title}`}\n        </Link>\n        <ul className=\"grid grid-cols-[auto,1fr] gap-2\">\n          {features.map((feature, i) => {\n            return (\n              <Fragment key={feature}>\n                <AiOutlineCheckCircle className={clsx(\"text-xl\")} />\n                <span\n                  suppressHydrationWarning\n                  className={clsx(\n                    \"flex items-center\",\n                    i === 0 ? \"font-semibold\" : \"te\"\n                  )}\n                >\n                  {feature}\n                  {i === 0 && (\n                    <Tooltip>\n                      <TooltipTrigger aria-label=\"Show more information\">\n                        <Info size={14} className=\"ml-1\" />\n                      </TooltipTrigger>\n                      <TooltipContent>\n                        <p className=\"max-w-xs text-sm\">\n                          This number includes the events that are used for A/B\n                          testing analytics as well as the amount of requests to\n                          our servers.\n                        </p>\n                      </TooltipContent>\n                    </Tooltip>\n                  )}\n                </span>\n              </Fragment>\n            );\n          })}\n        </ul>\n      </div>\n    </div>\n  );\n}\n\nexport function PricingTable() {\n  const [useEuro, setUseEuro] = useState(false);\n  const session = useSession();\n  const basePlan = getLimitByPlan(null);\n  const startupPlan = getLimitByPlan(\"STARTUP\");\n  const proPlan = getLimitByPlan(\"PRO\");\n\n  return (\n    <div>\n      <div className=\"my-6 flex items-center justify-center\">\n        <div className=\"flex items-center space-x-2\">\n          <Label htmlFor=\"currency\">USD ($)</Label>\n          <Switch\n            id=\"currency\"\n            checked={useEuro}\n            onCheckedChange={setUseEuro}\n          />\n          <Label htmlFor=\"currency\">Euro (€)</Label>\n        </div>\n      </div>\n      <div className=\"mx-auto grid max-w-md grid-cols-1 gap-y-4 md:max-w-3xl md:grid-cols-2 md:gap-x-4 md:gap-y-12 xl:max-w-none xl:grid-cols-4\">\n        <PricingElement\n          href={session.status === \"authenticated\" ? \"/projects\" : \"/signup\"}\n          price=\"Free\"\n          title=\"Starter\"\n          planName=\"HOBBY\"\n          subtitle=\"Good for IndieHackers that want to get started with Feature Flags & Remote Config. No Credit card required\"\n          features={[\n            `${basePlan.eventsPerMonth.toLocaleString()} Events / month`,\n            `${basePlan.tests} A/B Test`,\n            `${basePlan.flags} Feature Flags / Remote Configs`,\n            `${basePlan.environments} Environments`,\n          ]}\n        />\n        <PricingElement\n          href={session.status === \"authenticated\" ? \"/projects\" : \"/signup\"}\n          price={`${useEuro ? \"\" : \"$\"}12${useEuro ? \"€\" : \"\"}`}\n          title=\"Startup\"\n          subtitle=\"Optimal for startups & small businesses that want to dive deeper with Feature Flags & Remote Config\"\n          planName=\"STARTUP\"\n          features={[\n            `${startupPlan.eventsPerMonth.toLocaleString()} Events / month`,\n            `${startupPlan.tests} A/B Tests`,\n            `${startupPlan.flags} Feature Flags / Remote Configs`,\n            `${startupPlan.environments} Environments`,\n          ]}\n          priceSuffix=\"/mo per Project\"\n          isFeatured\n        />\n        <PricingElement\n          href={session.status === \"authenticated\" ? \"/projects\" : \"/signup\"}\n          price={`${useEuro ? \"\" : \"$\"}89${useEuro ? \"€\" : \"\"}`}\n          title=\"Pro\"\n          planName=\"PRO\"\n          subtitle=\"Perfect for growing companies that want to scale their Feature Flags & Remote Config and get more insights\"\n          features={[\n            `${proPlan.eventsPerMonth.toLocaleString()} Events / month`,\n            `${proPlan.tests} A/B Tests`,\n            `${proPlan.flags} Feature Flags / Remote Configs`,\n            `${proPlan.environments} Environments`,\n          ]}\n          priceSuffix=\"/mo per Project\"\n        />\n        <PricingElement\n          href={\"/contact\"}\n          price=\"Talk to us!\"\n          title=\"Enterprise\"\n          planName=\"ENTERPRISE\"\n          subtitle=\"For even the biggest enterprise companies.\"\n          ctaText=\"Contact us\"\n          features={[\n            \"Unlimited Events / month\",\n            \"Unlimited Tests\",\n            \"Unlimited Feature Flags / Remote Configs\",\n            \"Unlimited Environments\",\n          ]}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Progress.tsx",
    "content": "import { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n  currentValue: number;\n  maxValue: number;\n};\n\nexport function Progress({ currentValue, maxValue }: Props) {\n  const currentValuePercentage = Math.min((currentValue / maxValue) * 100, 100);\n  return (\n    // biome-ignore lint/a11y/useFocusableInteractive: <explanation>\n    <div\n      className=\"relative h-6 w-full rounded-full bg-background\"\n      role=\"progressbar\"\n      aria-valuemin={0}\n      aria-valuemax={100}\n      aria-valuenow={currentValuePercentage}\n    >\n      <div\n        className={twMerge(\"h-full rounded-full bg-primary text-center\")}\n        style={{ width: `${currentValuePercentage}%` }}\n      />\n      <span\n        className={twMerge(\n          \"absolute left-1/2 top-1/2 -translate-y-1/2 transform text-xs font-medium leading-none\",\n          currentValuePercentage > 50 ? \"text-secondary\" : \"text-primary\"\n        )}\n      >\n        {currentValuePercentage.toFixed(2)}%\n      </span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/ProjectSwitcher.tsx",
    "content": "\"use client\";\n\nimport {\n  CaretSortIcon,\n  CheckIcon,\n  PlusCircledIcon,\n} from \"@radix-ui/react-icons\";\nimport * as React from \"react\";\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"components/ui/avatar\";\nimport { Button } from \"components/ui/button\";\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n} from \"components/ui/command\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n  DialogTrigger,\n} from \"components/ui/dialog\";\nimport { Input } from \"components/ui/input\";\nimport { Label } from \"components/ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"components/ui/popover\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { cn } from \"lib/utils\";\nimport { useSession } from \"next-auth/react\";\nimport { useRouter } from \"next/router\";\nimport { trpc } from \"utils/trpc\";\n\ntype PopoverTriggerProps = React.ComponentPropsWithoutRef<\n  typeof PopoverTrigger\n>;\n\ninterface ProjectSwitcherProps extends PopoverTriggerProps {}\n\nexport default function ProjectSwitcher({ className }: ProjectSwitcherProps) {\n  const currentProjectId = useProjectId();\n  const [projectName, setProjectName] = React.useState(\"\");\n  const { data: projects } = trpc.user.getProjects.useQuery();\n  const trpcContext = trpc.useContext();\n\n  const currentProject = projects?.projects.find(\n    ({ project }) => project.id === currentProjectId\n  );\n\n  const createProject = trpc.project.createProject.useMutation({\n    onSuccess: () => {\n      trpcContext.user.getProjects.invalidate();\n    },\n  });\n\n  const { update: sessionUpdate, data } = useSession();\n  const router = useRouter();\n  const [open, setOpen] = React.useState(false);\n  const [showNewProjectDialog, setShowNewProjectDialog] = React.useState(false);\n\n  const onCreateProject = async () => {\n    if (!projectName) return;\n    const newProject = await createProject.mutateAsync({ projectName });\n    await sessionUpdate({\n      lastOpenProjectId: newProject.id,\n      projectIds: (data?.user?.projectIds ?? []).concat(newProject.id),\n    });\n    setShowNewProjectDialog(false);\n    router.push({\n      ...router,\n      query: { ...router.query, projectId: newProject.id },\n    });\n  };\n\n  return (\n    <Dialog open={showNewProjectDialog} onOpenChange={setShowNewProjectDialog}>\n      <Popover open={open} onOpenChange={setOpen}>\n        <PopoverTrigger asChild>\n          <Button\n            variant=\"outline\"\n            // biome-ignore lint/a11y/useSemanticElements: <explanation>\n            role=\"combobox\"\n            aria-expanded={open}\n            aria-label=\"Select a team\"\n            className={cn(\"w-[200px] justify-between\", className)}\n          >\n            <Avatar className=\"mr-2 h-5 w-5\">\n              <AvatarImage\n                src={`https://avatar.vercel.sh/${currentProject?.project.id}.png`}\n                alt={currentProject?.project.name}\n              />\n              <AvatarFallback>SC</AvatarFallback>\n            </Avatar>\n            <p className=\"truncate\">{currentProject?.project.name}</p>\n            <CaretSortIcon className=\"ml-auto h-4 w-4 shrink-0 opacity-50\" />\n          </Button>\n        </PopoverTrigger>\n        <PopoverContent className=\"w-[200px] p-0\">\n          <Command>\n            <CommandList>\n              <CommandInput\n                placeholder=\"Search team...\"\n                className=\"border-transparent focus:border-transparent focus:outline-none focus:ring-0\"\n              />\n              <CommandEmpty>No team found.</CommandEmpty>\n\n              {projects?.projects.map(({ project }) => (\n                <CommandItem\n                  key={project.id}\n                  onSelect={async () => {\n                    if (project.id === currentProjectId) return;\n\n                    await sessionUpdate({\n                      lastOpenProjectId: project.id,\n                    });\n\n                    router.push({\n                      ...router,\n                      query: { ...router.query, projectId: project.id },\n                    });\n                    setOpen(false);\n                  }}\n                  className=\"text-sm\"\n                >\n                  <Avatar className=\"mr-2 h-5 w-5\">\n                    <AvatarImage\n                      src={`https://avatar.vercel.sh/${project.id}.png`}\n                      alt={project.name}\n                      className=\"grayscale\"\n                    />\n                    <AvatarFallback>SC</AvatarFallback>\n                  </Avatar>\n                  {project.name}\n                  <CheckIcon\n                    className={cn(\n                      \"ml-auto h-4 w-4\",\n                      currentProject?.project.id === project.id\n                        ? \"opacity-100\"\n                        : \"opacity-0\"\n                    )}\n                  />\n                </CommandItem>\n              ))}\n            </CommandList>\n            <CommandSeparator />\n            <CommandList>\n              <CommandGroup>\n                <DialogTrigger asChild>\n                  <CommandItem\n                    onSelect={() => {\n                      setOpen(false);\n                      setShowNewProjectDialog(true);\n                    }}\n                  >\n                    <PlusCircledIcon className=\"mr-2 h-5 w-5\" />\n                    Create Project\n                  </CommandItem>\n                </DialogTrigger>\n              </CommandGroup>\n            </CommandList>\n          </Command>\n        </PopoverContent>\n      </Popover>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>Create Project</DialogTitle>\n          <DialogDescription>\n            Add a new project to your account.\n          </DialogDescription>\n        </DialogHeader>\n        <div>\n          <div className=\"space-y-4 py-2 pb-4\">\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"name\">Project name</Label>\n              <Input\n                id=\"name\"\n                placeholder=\"Acme Inc.\"\n                value={projectName}\n                onChange={(e) => setProjectName(e.target.value)}\n              />\n            </div>\n          </div>\n        </div>\n        <DialogFooter>\n          <Button\n            variant=\"outline\"\n            onClick={() => setShowNewProjectDialog(false)}\n          >\n            Cancel\n          </Button>\n          <Button\n            type=\"submit\"\n            disabled={!projectName}\n            onClick={onCreateProject}\n          >\n            Continue\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/RadioGroup.tsx",
    "content": "import {\n  RadioGroup,\n  RadioGroupItem as RadixRadioGroupItem,\n} from \"components/ui/radio-group\";\n\nexport type RadioGroupItem = {\n  label: string;\n  value: string;\n};\n\ntype ArrayLike<T> = Array<T> | ReadonlyArray<T>;\n\ntype Props = {\n  items: ArrayLike<RadioGroupItem>;\n  value: RadioGroupItem[\"value\"];\n  onChange: (value: RadioGroupItem[\"value\"]) => void;\n  isLoading?: boolean;\n  label?: string;\n};\n\nexport function RadioGroupComponent({ items, onChange, value }: Props) {\n  return (\n    <RadioGroup\n      onValueChange={onChange}\n      className=\"flex space-x-4\"\n      defaultValue={value}\n    >\n      {items.map((item) => (\n        <div key={item.value} className=\"flex items-center space-x-2\">\n          <RadixRadioGroupItem value={item.value} id={item.value} />\n          <div>{item.label}</div>\n        </div>\n      ))}\n    </RadioGroup>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/RadioSelect.tsx",
    "content": "import * as RadioGroup from \"@radix-ui/react-radio-group\";\nimport { cn } from \"lib/utils\";\nimport React from \"react\";\n\ntype RadioSelectProps<T extends string> = {\n  options: Array<{ label: string | React.ReactNode; value: T }>;\n  onChange: (value: T) => void;\n  initialValue?: T;\n  isDisabled?: boolean;\n};\n\nexport function RadioSelect<T extends string = string>({\n  options,\n  onChange,\n  initialValue,\n  isDisabled,\n}: RadioSelectProps<T>) {\n  const [selected, setSelected] = React.useState(\n    initialValue ?? options[0]?.value\n  );\n  return (\n    <RadioGroup.Root\n      className=\"flex gap-2.5\"\n      value={selected}\n      aria-label=\"View density\"\n      onValueChange={(newValue) => {\n        setSelected(newValue as T);\n        onChange(newValue as T);\n      }}\n      disabled={isDisabled}\n    >\n      {options.map((option) => (\n        <RadioGroup.Item\n          key={option.value}\n          value={option.value}\n          disabled={isDisabled}\n          title={\n            isDisabled\n              ? \"You can't change the type of a flag after the creation\"\n              : \"\"\n          }\n          className={cn(\n            \"flex h-[150px] flex-1 items-center justify-center gap-2.5 rounded-md border-2 border-white border-opacity-20 opacity-30 px-2.5 py-1.5 text-sm font-medium text-white disabled:opacity-40\",\n            selected === option.value &&\n              \"border-green-600 border-opacity-100 opacity-100 text-pink-100\"\n          )}\n        >\n          {option.label}\n        </RadioGroup.Item>\n      ))}\n    </RadioGroup.Root>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/RemoveUserModal.tsx",
    "content": "import type { User } from \"@prisma/client\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { Modal } from \"./Modal\";\n\ntype Props = {\n  isOpen: boolean;\n  onClose: () => void;\n  user?: User;\n};\n\nexport function RemoveUserModal({ isOpen, onClose, user }: Props) {\n  const projectId = useProjectId();\n  const trpcContext = trpc.useContext();\n\n  const { mutate: removeUser } = trpc.project.removeUser.useMutation({\n    onSuccess() {\n      toast.success(\"User removed\");\n      onClose();\n      trpcContext.project.getProjectData.invalidate();\n      trpcContext.user.getProjects.invalidate();\n    },\n  });\n\n  return (\n    <Modal\n      title=\"Remove user\"\n      confirmText=\"Remove User\"\n      isOpen={isOpen}\n      onClose={onClose}\n      onConfirm={() => {\n        if (!user) return;\n        removeUser({ userId: user.id, projectId });\n      }}\n    >\n      <p className=\"text-white\">\n        Are you sure that you want to remove\n        <pre className=\"mx-1 inline rounded-md bg-gray-900 p-1\">\n          {user?.email}\n        </pre>\n        ?\n        <br />\n        <br />\n        You will need to re-invite them to the project if you change your mind.\n      </p>\n    </Modal>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Select.tsx",
    "content": "import { Listbox, Transition } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { Fragment } from \"react\";\nimport { AiOutlineCheck } from \"react-icons/ai\";\nimport { HiOutlineSelector } from \"react-icons/hi\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\n\nexport type SelectItem = {\n  label: string;\n  value: string;\n};\n\ntype ArrayLike<T> = Array<T> | ReadonlyArray<T>;\n\ntype Props = {\n  items: ArrayLike<SelectItem>;\n  value: SelectItem[\"value\"];\n  onChange: (value: SelectItem[\"value\"]) => void;\n  isLoading?: boolean;\n  label?: string;\n};\n\nexport function Select({ items, onChange, value, isLoading, label }: Props) {\n  const currentItem = items.find((item) => item.value === value);\n  return (\n    <Listbox value={value} onChange={onChange}>\n      {({ open }) => (\n        <>\n          {label && (\n            <Listbox.Label className=\"block text-sm font-medium\">\n              {label}\n            </Listbox.Label>\n          )}\n          <div className=\"relative mt-1\">\n            <Listbox.Button className=\"font relative w-full cursor-default rounded-md border border-gray-600 bg-gray-800 py-2 pl-3 pr-10 text-left font-semibold shadow-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500\">\n              {isLoading ? (\n                <LoadingSpinner />\n              ) : (\n                <span className=\"ml-3 block truncate\">\n                  {currentItem?.label}\n                </span>\n              )}\n              <HiOutlineSelector className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2\" />\n            </Listbox.Button>\n\n            <Transition\n              show={open}\n              as={Fragment}\n              enter=\"transition duration-100 ease-out\"\n              enterFrom=\"transform scale-95 opacity-0\"\n              enterTo=\"transform scale-100 opacity-100\"\n              leave=\"transition duration-75 ease-out\"\n              leaveFrom=\"transform scale-100 opacity-100\"\n              leaveTo=\"transform scale-95 opacity-0\"\n            >\n              <Listbox.Options className=\"absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-gray-800 py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none\">\n                {items.map((item) => (\n                  <Listbox.Option\n                    key={item.value}\n                    className={({ active }) =>\n                      clsx(\n                        active ? \"bg-gray-700 text-white\" : \"\",\n                        \"relative cursor-pointer select-none py-2 pl-3 pr-9\"\n                      )\n                    }\n                    value={item.value}\n                  >\n                    {({ selected, active }) => (\n                      <>\n                        <div className=\"flex items-center\">\n                          <span\n                            className={clsx(\n                              selected ? \"font-semibold\" : \"font-normal\",\n                              \"ml-3 block truncate\"\n                            )}\n                          >\n                            {item.label}\n                          </span>\n                        </div>\n\n                        {selected ? (\n                          <span\n                            className={clsx(\n                              active ? \"text-white\" : \"text-blue-400\",\n                              \"absolute inset-y-0 right-0 flex items-center pr-4\"\n                            )}\n                          >\n                            <AiOutlineCheck\n                              className=\"h-5 w-5\"\n                              aria-hidden=\"true\"\n                            />\n                          </span>\n                        ) : null}\n                      </>\n                    )}\n                  </Listbox.Option>\n                ))}\n              </Listbox.Options>\n            </Transition>\n          </div>\n        </>\n      )}\n    </Listbox>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/SignupButton.tsx",
    "content": "import { useAbby } from \"lib/abby\";\nimport Link from \"next/link\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function SignupButton({ className }: { className?: string }) {\n  const { variant, onAct } = useAbby(\"SignupButton\");\n  return (\n    <div className=\"flex flex-col items-center\">\n      <Link\n        href=\"/login\"\n        onClick={() => onAct()}\n        className={twMerge(\n          \"mt-12 rounded-xl bg-ab_accent-background px-6 py-2 text-xl font-semibold text-ab_accent-foreground no-underline transition-transform duration-150 ease-in-out hover:scale-110\",\n          className\n        )}\n      >\n        {variant === \"A\" && \"Test Now\"}\n        {variant === \"B\" && \"Sign Up for Free\"}\n      </Link>\n      <span className=\"mt-4 text-xs\">\n        Free forever. No Credit Card required\n      </span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Test/CreateTestSection.tsx",
    "content": "import { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader } from \"components/ui/card\";\nimport { Input } from \"components/ui/input\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"components/ui/tooltip\";\nimport produce from \"immer\";\nimport { cn } from \"lib/utils\";\nimport { RotateCcw } from \"lucide-react\";\nimport { PieChart, Plus, Trash2 } from \"lucide-react\";\nimport {\n  type Dispatch,\n  type SetStateAction,\n  useEffect,\n  useRef,\n  useState,\n} from \"react\";\n\ntype Props = {\n  testName: string;\n  setTestName: (name: string) => void;\n  variants: Array<{ name: string; weight: number; id: string }>;\n  setVariants: Dispatch<\n    SetStateAction<\n      {\n        name: string;\n        weight: number;\n        id: string;\n      }[]\n    >\n  >;\n};\n\nexport const DEFAULT_NEW_VARIANT_PREFIX = \"New Variant \";\n\n/**\n * Searches through a list of variants, that start with the default variant name,\n * and determines the currently largest number behind the prefix\n *\n * @example\n * [\"New Variant 4\", \"New Variant 1\", \"Other Variant 5\"] -> 4\n */\nfunction getMaxDefaultVariantNameIndex(variants: Props[\"variants\"]): number {\n  const variantsIndexes = variants\n    .filter((variant) => variant.name.startsWith(DEFAULT_NEW_VARIANT_PREFIX))\n    .map((defaultVariant) => {\n      const index = /[0-9]+/.exec(defaultVariant.name)?.[0];\n\n      if (!index) {\n        return 0;\n      }\n\n      return Number.parseInt(index);\n    });\n\n  if (variantsIndexes.length === 0) {\n    return 0;\n  }\n\n  return Math.max(...variantsIndexes);\n}\n\nconst WeightPresets = {\n  \"Equal Split\": (count: number) => {\n    if (count === 3) {\n      return [33.3, 33.3, 33.3];\n    }\n    const weight = Number((100 / count).toFixed(2));\n    const weights = Array(count).fill(0);\n\n    // Distribute weights evenly and handle remainder\n    let remaining = 100;\n    for (let i = 0; i < count - 1; i++) {\n      weights[i] = weight;\n      remaining -= weight;\n    }\n    weights[count - 1] = Number(remaining.toFixed(2));\n\n    return weights;\n  },\n  \"Champion/Challenger\": (count: number) => {\n    if (count < 2) return [100];\n    const challenger = 10;\n    const remaining = Number((90 / (count - 1)).toFixed(2));\n\n    // Handle remainder to ensure 100% total\n    const weights = Array(count).fill(remaining);\n    weights[count - 1] = challenger;\n\n    // Adjust last non-challenger weight to make sum exactly 100\n    const sum = weights.reduce((a, b) => a + b, 0);\n    if (sum !== 100) {\n      weights[count - 2] = Number(\n        (weights[count - 2] + (100 - sum)).toFixed(2)\n      );\n    }\n\n    return weights;\n  },\n  \"Progressive Split\": (count: number) => {\n    if (count < 2) return [100];\n    const total = (count * (count + 1)) / 2;\n    const weights = Array(count)\n      .fill(0)\n      .map((_, i) => Number((((i + 1) * 100) / total).toFixed(2)));\n\n    // Handle rounding by adjusting last weight\n    const sum = weights.reduce((a, b) => a + b, 0);\n    if (sum !== 100) {\n      weights[count - 1] = Number(\n        ((weights[count - 1] ?? 0) + (100 - sum)).toFixed(2)\n      );\n    }\n\n    return weights;\n  },\n};\n\n// Distribution color palette using tailwind colors that work well in both modes\nconst WEIGHT_COLORS = [\n  \"bg-blue-500/90 dark:bg-blue-400/90\",\n  \"bg-emerald-500/90 dark:bg-emerald-400/90\",\n  \"bg-indigo-500/90 dark:bg-indigo-400/90\",\n  \"bg-amber-500/90 dark:bg-amber-400/90\",\n  \"bg-rose-500/90 dark:bg-rose-400/90\",\n];\n\nconst PRESET_DESCRIPTIONS = {\n  \"Equal Split\": {\n    description: \"Distributes traffic evenly between all variants\",\n    example: \"e.g., 33.3% / 33.3% / 33.3%\",\n  },\n  \"Champion/Challenger\": {\n    description: \"90% to existing variant, 10% to the new variant\",\n    example: \"e.g., 45% / 45% / 10%\",\n  },\n  \"Progressive Split\": {\n    description: \"Gradually increases weight for each variant\",\n    example: \"e.g., 17% / 33% / 50%\",\n  },\n};\n\nexport function CreateTestSection({\n  setTestName,\n  testName,\n  setVariants,\n  variants,\n}: Props) {\n  const [selectedPreset, setSelectedPreset] = useState<\n    keyof typeof WeightPresets | undefined\n  >(undefined);\n  const [isDirty, setIsDirty] = useState(false);\n  const [showError, setShowError] = useState(false);\n  const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const updateWeights = (weights: number[]) => {\n    setVariants((current) =>\n      current.map((variant, i) => ({\n        ...variant,\n        weight: Number(weights[i]?.toFixed(2)),\n      }))\n    );\n    setIsDirty(true);\n  };\n\n  const addVariant = () => {\n    const maxVariantIndex = getMaxDefaultVariantNameIndex(variants);\n    setVariants(\n      produce(variants, (draft) => {\n        draft.push({\n          id: crypto.randomUUID(),\n          name: `${DEFAULT_NEW_VARIANT_PREFIX}${maxVariantIndex + 1}`,\n          weight: 1,\n        });\n      })\n    );\n    setIsDirty(true);\n  };\n\n  const removeVariant = (index: number) => {\n    setVariants(\n      produce(variants, (draft) => {\n        draft.splice(index, 1);\n        // Rebalance weights after removing\n        const equalWeight = Number((100 / draft.length).toFixed(2));\n        const remainder = Number(\n          (100 - equalWeight * (draft.length - 1)).toFixed(2)\n        );\n        draft.forEach((v, i) => {\n          v.weight = i === draft.length - 1 ? remainder : equalWeight;\n        });\n      })\n    );\n    setIsDirty(true);\n  };\n\n  const handleWeightChange = (index: number, value: string) => {\n    setVariants(\n      produce(variants, (draft) => {\n        if (!draft[index]) return;\n        draft[index].weight = Number.parseFloat(\n          Number.parseFloat(value).toFixed(2)\n        );\n      })\n    );\n    setIsDirty(true);\n  };\n\n  const weightSum = Number(\n    variants.reduce((sum, { weight }) => sum + weight, 0).toFixed(2)\n  );\n  const isValidWeightSum = Math.abs(weightSum - 100) <= 0.1;\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setShowError(!isValidWeightSum);\n    }, 500);\n\n    return () => clearTimeout(timer);\n  }, [isValidWeightSum]);\n\n  const applyPreset = (preset: keyof typeof WeightPresets) => {\n    const weights = WeightPresets[preset](variants.length);\n    updateWeights(weights);\n    setSelectedPreset(preset);\n  };\n\n  const onRevert = () => {\n    setVariants(variants);\n    setTestName(testName);\n    setSelectedPreset(undefined);\n    setIsDirty(false);\n  };\n\n  const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setTestName(e.target.value);\n    setIsDirty(true);\n  };\n\n  const handleVariantNameChange = (\n    e: React.ChangeEvent<HTMLInputElement>,\n    index: number\n  ) => {\n    setVariants(\n      produce(variants, (draft) => {\n        if (!draft[index]) return;\n        draft[index].name = e.target.value;\n      })\n    );\n    setIsDirty(true);\n  };\n\n  return (\n    <section ref={containerRef} className=\"flex flex-col w-full space-y-6\">\n      <Card>\n        <CardHeader>\n          <h2 className=\"text-lg font-semibold\">Settings</h2>\n        </CardHeader>\n        <CardContent>\n          <div className=\"space-y-4\">\n            <div>\n              <label htmlFor=\"testName\" className=\"text-sm font-medium\">\n                Test Name:\n              </label>\n              <Input\n                id=\"testName\"\n                value={testName}\n                onChange={handleNameChange}\n                className=\"mt-1.5\"\n                placeholder=\"My A/B Test\"\n              />\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      <Card>\n        <CardHeader>\n          <div className=\"flex items-center justify-between\">\n            <h2 className=\"text-lg font-semibold\">Variants</h2>\n            <div className=\"flex items-center gap-2\">\n              <TooltipProvider>\n                <Tooltip>\n                  <TooltipTrigger asChild>\n                    <Select\n                      value={selectedPreset}\n                      onValueChange={(value) =>\n                        applyPreset(value as keyof typeof WeightPresets)\n                      }\n                    >\n                      <SelectTrigger className=\"w-[250px]\">\n                        <SelectValue placeholder=\"Choose distribution...\" />\n                      </SelectTrigger>\n                      <SelectContent>\n                        {Object.keys(WeightPresets).map((preset) => (\n                          <SelectItem\n                            key={preset}\n                            value={preset}\n                            className=\"flex items-center\"\n                          >\n                            <div className=\"flex items-center gap-2\">\n                              <PieChart className=\"w-4 h-4 text-muted-foreground\" />\n                              <div className=\"flex flex-col\">\n                                <span>{preset}</span>\n                                <span className=\"text-xs text-muted-foreground\">\n                                  {\n                                    PRESET_DESCRIPTIONS[\n                                      preset as keyof typeof PRESET_DESCRIPTIONS\n                                    ].example\n                                  }\n                                </span>\n                              </div>\n                            </div>\n                          </SelectItem>\n                        ))}\n                      </SelectContent>\n                    </Select>\n                  </TooltipTrigger>\n                  <TooltipContent>\n                    {selectedPreset\n                      ? PRESET_DESCRIPTIONS[\n                          selectedPreset as keyof typeof PRESET_DESCRIPTIONS\n                        ].description\n                      : \"Choose a preset weight distribution\"}\n                  </TooltipContent>\n                </Tooltip>\n              </TooltipProvider>\n            </div>\n          </div>\n        </CardHeader>\n        <CardContent>\n          <div className=\"space-y-4\">\n            {variants.map(({ name, weight, id }, i) => (\n              <div\n                key={id}\n                className={cn(\n                  \"grid grid-cols-[1fr_120px_40px] items-center gap-4\",\n                  focusedIndex === i ? \"relative\" : \"\"\n                )}\n              >\n                <Input\n                  value={name}\n                  onChange={(e) => handleVariantNameChange(e, i)}\n                  onFocus={() => setFocusedIndex(i)}\n                  onBlur={() => setFocusedIndex(null)}\n                  placeholder=\"Variant name\"\n                  className={cn(\n                    \"transition-shadow duration-200\",\n                    focusedIndex === i\n                      ? \"ring-2 ring-primary ring-offset-2\"\n                      : \"\"\n                  )}\n                />\n                <div className=\"relative\">\n                  <Input\n                    value={weight}\n                    onChange={(e) => handleWeightChange(i, e.target.value)}\n                    onFocus={() => setFocusedIndex(i)}\n                    onBlur={() => {\n                      setFocusedIndex(null);\n                    }}\n                    inputMode=\"decimal\"\n                    className={cn(\n                      \"pr-14 transition-shadow duration-200\", // Increased padding for keyboard hints\n                      focusedIndex === i\n                        ? \"ring-2 ring-primary ring-offset-2\"\n                        : \"\"\n                    )}\n                    type=\"number\"\n                    min={1}\n                    max={100}\n                    step={1}\n                    data-index={i}\n                  />\n                  <div\n                    className={cn(\n                      \"absolute right-3 top-1/2 -translate-y-1/2 transition-colors duration-200 flex items-center gap-1\",\n                      focusedIndex === i\n                        ? \"text-primary\"\n                        : \"text-muted-foreground\"\n                    )}\n                  >\n                    <span>%</span>\n                  </div>\n                </div>\n                <TooltipProvider>\n                  <Tooltip>\n                    <TooltipTrigger asChild>\n                      <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        className={cn(\n                          \"h-10 w-10 transition-colors duration-200\",\n                          focusedIndex === i\n                            ? \"hover:bg-destructive hover:text-destructive-foreground\"\n                            : \"hover:bg-destructive/10 hover:text-destructive\"\n                        )}\n                        disabled={variants.length <= 2}\n                        onClick={() => removeVariant(i)}\n                      >\n                        <Trash2 className=\"w-4 h-4\" />\n                      </Button>\n                    </TooltipTrigger>\n                    <TooltipContent side=\"left\">Remove variant</TooltipContent>\n                  </Tooltip>\n                </TooltipProvider>\n              </div>\n            ))}\n\n            <div className=\"relative\">\n              <div className=\"h-2.5 w-full overflow-hidden rounded-full bg-muted/50 mt-4\">\n                {variants.map((option, i) => {\n                  return (\n                    <div\n                      key={option.id}\n                      className={cn(\n                        \"h-full float-left transition-all duration-500 ease-in-out cursor-pointer group relative\",\n                        WEIGHT_COLORS[i % WEIGHT_COLORS.length],\n                        focusedIndex === i\n                          ? \"ring-2 ring-primary ring-offset-2\"\n                          : \"\"\n                      )}\n                      style={{\n                        width: `${option.weight}%`,\n                      }}\n                      title={`${option.name}: ${option.weight.toFixed(2)}%`}\n                    />\n                  );\n                })}\n              </div>\n            </div>\n\n            <div className=\"flex items-center justify-between pt-2\">\n              <div className=\"text-sm\">\n                {showError && (\n                  <p className=\"text-red-400\">\n                    Weights must add up to 100% (currently{\" \"}\n                    {weightSum.toFixed(2)}%)\n                  </p>\n                )}\n              </div>\n              <div className=\"flex items-center gap-2\">\n                {isDirty && (\n                  <Button\n                    onClick={onRevert}\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    className=\"hover:bg-muted\"\n                  >\n                    <RotateCcw className=\"w-4 h-4\" />\n                  </Button>\n                )}\n\n                <Button\n                  onClick={addVariant}\n                  disabled={variants.length >= 5}\n                  variant=\"outline\"\n                  className=\"gap-2\"\n                >\n                  <Plus className=\"w-4 h-4\" /> Add Variant\n                </Button>\n              </div>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n      <div className=\"sr-only\" aria-live=\"polite\">\n        {isDirty &&\n          `Changes pending. ${variants.length} variants with total weight: ${weightSum.toFixed(2)}%`}\n      </div>\n    </section>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Test/Metrics.tsx",
    "content": "import { DonutChart } from \"components/charts/Donut\";\nimport type { ProjectClientEvents } from \"pages/projects/[projectId]\";\nimport type { ClientOption } from \"server/trpc/router/project\";\n\nconst Metrics = ({\n  actEvents,\n  options,\n}: {\n  actEvents: ProjectClientEvents;\n  options: ClientOption[];\n}) => {\n  const labels = options.map((option) => option.identifier);\n\n  return (\n    <div className=\"h-full w-full\">\n      <DonutChart\n        totalVisits={actEvents.reduce((acc, e) => acc + e._count._all, 0)}\n        variants={labels}\n        events={actEvents}\n        totalText=\"Conversions\"\n      />\n    </div>\n  );\n};\n\nexport { Metrics };\n"
  },
  {
    "path": "apps/web/src/components/Test/Section.tsx",
    "content": "import type { Test } from \"@prisma/client\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { Modal } from \"components/Modal\";\nimport { TitleEdit } from \"components/TitleEdit\";\nimport { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"components/ui/card\";\nimport { useFeatureFlag } from \"lib/abby\";\nimport { cn } from \"lib/utils\";\nimport { ChevronRight, TrashIcon } from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport type { ProjectClientEvents } from \"pages/projects/[projectId]\";\nimport { type ReactNode, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { BiInfoCircle } from \"react-icons/bi\";\nimport type { ClientOption } from \"server/trpc/router/project\";\nimport { trpc } from \"utils/trpc\";\nimport { Metrics } from \"./Metrics\";\nimport { Serves } from \"./Serves\";\nimport Weights from \"./Weights\";\n\nfunction getBestVariant({\n  absPings,\n  options,\n}: {\n  absPings: number;\n  options: ClientOption[];\n}) {\n  const bestVariant = options.reduce(\n    (accumulator, option) => {\n      const pings = absPings * option.chance;\n      if (pings > accumulator.pings) {\n        return {\n          pings,\n          identifier: option.identifier,\n        };\n      }\n      return accumulator;\n    },\n    { pings: 0, identifier: \"\" }\n  );\n\n  return bestVariant;\n}\n\nconst DeleteTestModal = ({\n  isOpen,\n  onClose,\n  testId,\n  testName,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  testId: string;\n  testName: string;\n}) => {\n  const trpcContext = trpc.useContext();\n  const { mutate: deleteTest } = trpc.tests.delete.useMutation({\n    onSuccess() {\n      toast.success(\"Deleted test\");\n      trpcContext.project.invalidate();\n      onClose();\n    },\n    onError() {\n      toast.error(\"Failed to delete test\");\n    },\n  });\n\n  return (\n    <Modal\n      title=\"Delete Test\"\n      confirmText=\"Delete\"\n      onConfirm={() => deleteTest({ testId })}\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <p>\n        Are you sure that you want to delete the Test <b>{testName}</b>?\n      </p>\n      <p>All events associated Events to that Test will be removed</p>\n    </Modal>\n  );\n};\n\nexport const MetricCard = ({\n  title,\n  children,\n  tooltip,\n  className,\n}: {\n  title: string;\n  children: ReactNode;\n  tooltip?: string | ReactNode;\n  className?: string;\n}) => {\n  return (\n    <Card className={cn(\"relative overflow-hidden\", className)}>\n      <CardHeader className=\"pb-2\">\n        <div className=\"flex items-center justify-between\">\n          <CardTitle className=\"text-sm font-medium\">{title}</CardTitle>\n          {tooltip && (\n            <Popover.Root>\n              <Popover.Trigger asChild>\n                <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 p-0\">\n                  <BiInfoCircle className=\"h-4 w-4\" />\n                </Button>\n              </Popover.Trigger>\n              <Popover.Portal>\n                <Popover.Content\n                  className=\"w-[260px] rounded-md bg-popover p-4 text-popover-foreground shadow-md\"\n                  sideOffset={5}\n                >\n                  {tooltip}\n                  <Popover.Arrow className=\"fill-popover\" />\n                </Popover.Content>\n              </Popover.Portal>\n            </Popover.Root>\n          )}\n        </div>\n      </CardHeader>\n      <CardContent>{children}</CardContent>\n    </Card>\n  );\n};\n\nconst Section = ({\n  name,\n  options = [],\n  actEvents,\n  pingEvents,\n  id,\n}: Test & {\n  options: ClientOption[];\n  pingEvents: ProjectClientEvents;\n  actEvents: ProjectClientEvents;\n}) => {\n  const router = useRouter();\n  const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n  const trpcContext = trpc.useContext();\n  const showAdvancedTestStats = useFeatureFlag(\"AdvancedTestStats\");\n\n  const bestVariant = getBestVariant({\n    absPings: actEvents.length + pingEvents.length,\n    options,\n  }).identifier;\n\n  const { mutate: updateTestName } = trpc.tests.updateName.useMutation({\n    onSuccess() {\n      toast.success(\"Updated name\");\n      trpcContext.project.invalidate();\n    },\n    onError() {\n      toast.error(\"Failed to update name\");\n    },\n  });\n\n  return (\n    <Card className=\"relative overflow-hidden transition-all duration-200 group/test hover:shadow-md hover:border-primary/20\">\n      <div className=\"absolute top-0 right-0 h-full w-1.5 bg-gradient-to-b from-primary/20 to-primary/5\" />\n      <CardHeader className=\"pb-3\">\n        <div className=\"flex items-center justify-between\">\n          <TitleEdit\n            title={name}\n            onSave={(newName) => updateTestName({ name: newName, testId: id })}\n          />\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"h-8 w-8 p-0\"\n            onClick={() => setIsDeleteModalOpen(true)}\n          >\n            <TrashIcon className=\"h-4 w-4\" />\n          </Button>\n        </div>\n      </CardHeader>\n      <CardContent>\n        <div className=\"grid gap-4 md:grid-cols-3\">\n          <MetricCard\n            title=\"Weight Distribution\"\n            tooltip=\"The weights define the chances for your defined variants to be served. This means that if you have 2 variants with a weight of 50%, each variant will be served 50% of the time.\"\n          >\n            <Weights options={options} />\n          </MetricCard>\n          <MetricCard\n            title=\"Visits\"\n            tooltip=\"A visit means that a user has visited a page where the A/B test takes place. Think of it like a page visit on a website.\"\n          >\n            <Serves options={options} pingEvents={pingEvents} />\n          </MetricCard>\n          <MetricCard\n            title=\"Conversions\"\n            tooltip={\n              <p>\n                A conversion is triggered when the{\" \"}\n                <code className=\"px-1 py-0.5 rounded-md bg-muted\">onAct</code>{\" \"}\n                is called in your code.\n              </p>\n            }\n          >\n            <Metrics options={options} actEvents={actEvents} />\n          </MetricCard>\n        </div>\n\n        <div className=\"mt-4 flex items-center justify-between\">\n          {bestVariant && (\n            <p className=\"text-sm text-muted-foreground\">\n              The variant{\" \"}\n              <span className=\"font-medium text-foreground\">{bestVariant}</span>{\" \"}\n              is currently performing best\n            </p>\n          )}\n          {showAdvancedTestStats && (\n            <Button\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"ml-auto\"\n              onClick={() =>\n                router.push(`/projects/${router.query.projectId}/tests/${id}`)\n              }\n            >\n              View Details\n              <ChevronRight className=\"ml-1 h-3 w-3\" />\n            </Button>\n          )}\n        </div>\n      </CardContent>\n      <DeleteTestModal\n        isOpen={isDeleteModalOpen}\n        onClose={() => setIsDeleteModalOpen(false)}\n        testId={id}\n        testName={name}\n      />\n    </Card>\n  );\n};\n\nexport default Section;\n"
  },
  {
    "path": "apps/web/src/components/Test/Serves.tsx",
    "content": "import { DonutChart } from \"components/charts/Donut\";\nimport type { ProjectClientEvents } from \"pages/projects/[projectId]\";\nimport type { ClientOption } from \"server/trpc/router/project\";\n\nconst Serves = ({\n  pingEvents,\n  options,\n}: {\n  pingEvents: ProjectClientEvents;\n  options: ClientOption[];\n}) => {\n  const labels = options.map((option) => option.identifier);\n\n  return (\n    <div className=\"h-full w-full\">\n      <DonutChart\n        totalVisits={pingEvents.reduce((acc, e) => acc + e._count._all, 0)}\n        variants={labels}\n        events={pingEvents}\n        totalText=\"Visits\"\n      />\n    </div>\n  );\n};\n\nexport { Serves };\n"
  },
  {
    "path": "apps/web/src/components/Test/Weights.tsx",
    "content": "import { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport {\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n} from \"components/ui/tooltip\";\nimport { cn } from \"lib/utils\";\nimport { PieChart, RotateCcw } from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport type { ClientOption } from \"server/trpc/router/project\";\nimport { trpc } from \"utils/trpc\";\n\n// Distribution color palette using tailwind colors that work well in both modes\nconst WEIGHT_COLORS = [\n  \"bg-blue-500/90 dark:bg-blue-400/90\",\n  \"bg-emerald-500/90 dark:bg-emerald-400/90\",\n  \"bg-indigo-500/90 dark:bg-indigo-400/90\",\n  \"bg-amber-500/90 dark:bg-amber-400/90\",\n  \"bg-rose-500/90 dark:bg-rose-400/90\",\n];\n\nconst WeightPresets = {\n  \"Equal Split\": (count: number) => {\n    const weight = Number((100 / count).toFixed(2));\n    const weights = Array(count).fill(0);\n\n    // Distribute weights evenly and handle remainder\n    let remaining = 100;\n    for (let i = 0; i < count - 1; i++) {\n      weights[i] = weight;\n      remaining -= weight;\n    }\n    weights[count - 1] = Number(remaining.toFixed(2));\n\n    return weights;\n  },\n  \"Champion/Challenger\": (count: number) => {\n    if (count < 2) return [100];\n    const challenger = 10;\n    const remaining = Number((90 / (count - 1)).toFixed(2));\n\n    // Handle remainder to ensure 100% total\n    const weights = Array(count).fill(remaining);\n    weights[count - 1] = challenger;\n\n    // Adjust last non-challenger weight to make sum exactly 100\n    const sum = weights.reduce((a, b) => a + b, 0);\n    if (sum !== 100) {\n      weights[count - 2] = Number(\n        (weights[count - 2] + (100 - sum)).toFixed(2)\n      );\n    }\n\n    return weights;\n  },\n  \"Progressive Split\": (count: number) => {\n    if (count < 2) return [100];\n    const total = (count * (count + 1)) / 2;\n    const weights = Array(count)\n      .fill(0)\n      .map((_, i) => Number((((i + 1) * 100) / total).toFixed(2)));\n\n    // Handle rounding by adjusting last weight\n    const sum = weights.reduce((a, b) => a + b, 0);\n    if (sum !== 100) {\n      weights[count - 1] = Number(\n        ((weights[count - 1] ?? 0) + (100 - sum)).toFixed(2)\n      );\n    }\n\n    return weights;\n  },\n};\n\nconst PRESET_DESCRIPTIONS = {\n  \"Equal Split\": {\n    description: \"Distributes traffic evenly between all variants\",\n    example: \"e.g., 33.3% / 33.3% / 33.3%\",\n  },\n  \"Champion/Challenger\": {\n    description: \"90% to existing variant, 10% to the new variant\",\n    example: \"e.g., 45% / 45% / 10%\",\n  },\n  \"Progressive Split\": {\n    description: \"Gradually increases weight for each variant\",\n    example: \"e.g., 17% / 33% / 50%\",\n  },\n};\n\nconst PresetItem = ({\n  preset,\n  isSelected,\n  onSelect,\n}: {\n  preset: string;\n  isSelected: boolean;\n  onSelect: () => void;\n}) => (\n  <SelectItem\n    key={preset}\n    value={preset}\n    className=\"flex items-center\"\n    onKeyDown={(e) => {\n      if (e.key === \"Enter\") {\n        onSelect();\n      }\n    }}\n  >\n    <div className=\"flex items-center gap-2 group\">\n      <PieChart\n        className={cn(\n          \"h-4 w-4 transition-colors\",\n          isSelected\n            ? \"text-primary\"\n            : \"text-muted-foreground group-hover:text-primary\"\n        )}\n      />\n      <div className=\"flex flex-col text-left\">\n        <span>{preset}</span>\n        <span className=\"text-xs text-muted-foreground\">\n          {\n            PRESET_DESCRIPTIONS[preset as keyof typeof PRESET_DESCRIPTIONS]\n              .example\n          }\n        </span>\n      </div>\n    </div>\n  </SelectItem>\n);\n\nconst Weights = ({ options }: { options: ClientOption[] }) => {\n  const router = useRouter();\n  const trpcContext = trpc.useContext();\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const initialWeights = useMemo(\n    () =>\n      options.map((option) =>\n        Number((Number.parseFloat(option.chance.toString()) * 100).toFixed(2))\n      ),\n    [options]\n  );\n\n  const [weights, setWeights] = useState(initialWeights);\n  const [selectedPreset, setSelectedPreset] = useState<\n    keyof typeof WeightPresets | undefined\n  >(undefined);\n  const [isDirty, setIsDirty] = useState(false);\n  const [showError, setShowError] = useState(false);\n  const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n  const { mutateAsync } = trpc.tests.updateWeights.useMutation();\n\n  const updateWeight = (indexToUpdate: number, value: string) => {\n    setWeights((currentWeights) => {\n      const updatedWeights = [...currentWeights];\n      updatedWeights[indexToUpdate] = Number.parseFloat(\n        Number.parseFloat(value).toFixed(2)\n      );\n      return updatedWeights;\n    });\n    setIsDirty(true);\n  };\n\n  const applyPreset = (preset: keyof typeof WeightPresets) => {\n    const newWeights = WeightPresets[preset](options.length);\n    setWeights(newWeights.map((w) => Number(w.toFixed(2))));\n    setSelectedPreset(preset);\n    setIsDirty(true);\n  };\n\n  const weightsSum = Number(\n    weights.reduce((sum, curr) => sum + curr, 0).toFixed(2)\n  );\n  const isValidWeightSum = Math.abs(weightsSum - 100) <= 0.1;\n\n  // Add debounced error display\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setShowError(!isValidWeightSum);\n    }, 500);\n\n    return () => clearTimeout(timer);\n  }, [isValidWeightSum]);\n\n  // Force Select UI to update when reverting\n  useEffect(() => {\n    if (!isDirty) {\n      setSelectedPreset(undefined);\n    }\n  }, [isDirty]);\n\n  const onSave = async () => {\n    try {\n      if (!options.length || !options[0]) throw new Error();\n\n      await mutateAsync({\n        testId: options[0].testId,\n        weights: weights.flatMap((weight, index) => {\n          if (!options[index]) return [];\n          return {\n            variantId: options[index].id,\n            weight: weight / 100,\n          };\n        }),\n      });\n\n      await trpcContext.project.getProjectData.invalidate({\n        projectId: router.query.projectId as string,\n      });\n\n      setIsDirty(false);\n      toast.success(\"Weights saved\");\n    } catch (e) {\n      console.error(e);\n      toast.error(\"Could not update weights\");\n    }\n  };\n\n  const onRevert = () => {\n    setWeights(initialWeights);\n    setSelectedPreset(undefined); // Ensure preset is cleared\n    setIsDirty(false);\n  };\n\n  // Add tooltip content for revert button\n  const getRevertTooltipContent = () => {\n    return (\n      <div className=\"space-y-2\">\n        <p className=\"text-sm font-medium\">Original weights:</p>\n        <div className=\"space-y-1\">\n          {options.map((option, i) => (\n            <div\n              key={option.id}\n              className=\"flex items-center justify-between gap-4 text-sm\"\n            >\n              <span className=\"text-muted-foreground\">\n                {option.identifier}:\n              </span>\n              <span className=\"font-medium\">\n                {initialWeights[i]?.toFixed(2)}%\n              </span>\n            </div>\n          ))}\n        </div>\n      </div>\n    );\n  };\n\n  if (options.length === 0) {\n    return (\n      <div className=\"flex h-full min-h-[100px] items-center justify-center text-sm text-muted-foreground\">\n        Unfortunately, there is no data to display.\n      </div>\n    );\n  }\n\n  return (\n    <div ref={containerRef} className=\"space-y-4\">\n      <div className=\"flex items-center mb-4\">\n        <Select\n          value={selectedPreset}\n          onValueChange={(value) =>\n            applyPreset(value as keyof typeof WeightPresets)\n          }\n        >\n          <SelectTrigger className=\"w-full\">\n            <SelectValue placeholder=\"Choose distribution...\" />\n          </SelectTrigger>\n          <SelectContent>\n            {Object.keys(WeightPresets).map((preset) => (\n              <PresetItem\n                key={preset}\n                preset={preset}\n                isSelected={preset === selectedPreset}\n                onSelect={() =>\n                  applyPreset(preset as keyof typeof WeightPresets)\n                }\n              />\n            ))}\n          </SelectContent>\n        </Select>\n      </div>\n\n      {options.map((option, index) => (\n        <div key={option.id} className=\"space-y-2\">\n          <div className=\"flex items-center justify-between gap-3\">\n            <span\n              className={cn(\n                \"text-sm font-medium transition-colors duration-200\",\n                focusedIndex === index ? \"text-primary\" : \"\"\n              )}\n            >\n              {option.identifier}\n            </span>\n            <div className=\"relative w-[100px]\">\n              <Input\n                type=\"number\"\n                min=\"1\"\n                max=\"100\"\n                step=\"1\"\n                inputMode=\"decimal\"\n                value={weights[index]}\n                onChange={(e) => updateWeight(index, e.target.value)}\n                onFocus={() => setFocusedIndex(index)}\n                onBlur={() => setFocusedIndex(null)}\n                className={cn(\n                  \"pr-3 transition-shadow duration-200\", // Increased padding for keyboard hints\n                  focusedIndex === index\n                    ? \"ring-2 ring-primary ring-offset-2\"\n                    : \"\"\n                )}\n              />\n              <div\n                className={cn(\n                  \"absolute right-3 top-1/2 -translate-y-1/2 transition-colors duration-200 flex items-center gap-1\",\n                  focusedIndex === index\n                    ? \"text-primary\"\n                    : \"text-muted-foreground\"\n                )}\n              >\n                <span>%</span>\n              </div>\n            </div>\n          </div>\n        </div>\n      ))}\n\n      <div className=\"relative\">\n        <div className=\"h-2.5 w-full overflow-hidden rounded-full bg-muted/50 mt-4\">\n          {options.map((option, i) => {\n            const curentWeight = weights[i];\n            const initialWeight = initialWeights[i];\n            if (!curentWeight || !initialWeight) return null;\n            return (\n              <div\n                key={option.id}\n                className={cn(\n                  \"h-full float-left transition-all duration-500 ease-in-out cursor-pointer group relative\",\n                  WEIGHT_COLORS[i % WEIGHT_COLORS.length],\n                  focusedIndex === i ? \"ring-2 ring-primary ring-offset-2\" : \"\"\n                )}\n                style={{\n                  width: `${curentWeight}%`,\n                }}\n                title={`${option.identifier}: ${curentWeight.toFixed(2)}%`}\n              >\n                {isDirty && (\n                  <div\n                    className=\"absolute inset-0 opacity-20 bg-muted-foreground\"\n                    style={{\n                      width: `${initialWeight}%`,\n                      left: curentWeight > initialWeight ? 0 : \"auto\",\n                      right: curentWeight <= initialWeight ? 0 : \"auto\",\n                      borderRight:\n                        curentWeight > initialWeight\n                          ? \"2px dashed currentColor\"\n                          : \"none\",\n                      borderLeft:\n                        curentWeight <= initialWeight\n                          ? \"2px dashed currentColor\"\n                          : \"none\",\n                    }}\n                  />\n                )}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n\n      <div className=\"sr-only\" aria-live=\"polite\">\n        {isDirty && `Changes pending. Total weight: ${weightsSum.toFixed(2)}%`}\n      </div>\n\n      <div className=\"flex items-center justify-between pt-2\">\n        <div className=\"text-sm\">\n          {showError && (\n            <p className=\"text-destructive\">\n              Weights must add up to 100% (currently {weightsSum.toFixed(2)}%)\n            </p>\n          )}\n        </div>\n        <div className=\"flex gap-2\">\n          {isDirty && (\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <Button\n                    onClick={onRevert}\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    className=\"hover:bg-muted\"\n                  >\n                    <RotateCcw className=\"w-4 h-4\" />\n                  </Button>\n                </TooltipTrigger>\n                <TooltipContent side=\"left\" className=\"p-4\">\n                  {getRevertTooltipContent()}\n                </TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n          )}\n          <Button\n            onClick={onSave}\n            disabled={!isValidWeightSum || !isDirty}\n            size=\"sm\"\n          >\n            Save\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default Weights;\n"
  },
  {
    "path": "apps/web/src/components/TitleEdit.tsx",
    "content": "import { useState } from \"react\";\nimport { AiOutlineEdit, AiOutlineSave } from \"react-icons/ai\";\nimport { Button } from \"./ui/button\";\n\ntype Props = {\n  title: string;\n  onSave: (title: string) => void | Promise<void>;\n};\n\nexport function TitleEdit({ onSave, title }: Props) {\n  const [value, setValue] = useState(title);\n  const [isTitleInEdit, setIsTitleInEdit] = useState(false);\n\n  const updateTitle = async () => {\n    setIsTitleInEdit(false);\n    await onSave(value);\n  };\n  return (\n    <div className=\"flex items-center space-x-2\">\n      {isTitleInEdit ? (\n        <>\n          <input\n            type=\"text\"\n            className=\"rounded-lg border-border bg-background\"\n            value={value}\n            onChange={(e) => {\n              setValue(e.target.value);\n            }}\n            onKeyDown={(e) => {\n              if (e.key === \"Enter\" && e.metaKey) {\n                updateTitle();\n              }\n            }}\n          />\n          <Button\n            title=\"Save\"\n            className=\"bg-transparent\"\n            onClick={updateTitle}\n            variant=\"ghost\"\n          >\n            <AiOutlineSave />\n          </Button>\n        </>\n      ) : (\n        <>\n          <h2 className=\"font-bold text-primary\">{value}</h2>\n          <Button\n            size=\"icon\"\n            title=\"Save\"\n            variant=\"ghost\"\n            onClick={() => setIsTitleInEdit(true)}\n          >\n            <AiOutlineEdit />\n          </Button>\n        </>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Toggle.tsx",
    "content": "import { useId } from \"react\";\nimport { Switch } from \"./ui/switch\";\nexport function Toggle({\n  label,\n  onChange,\n  isChecked,\n}: {\n  isChecked?: boolean;\n  label: string;\n  onChange: (value: boolean) => void;\n}) {\n  const id = useId();\n  return (\n    <div className=\"flex items-center space-x-2\">\n      <Switch\n        id={id}\n        checked={isChecked}\n        onCheckedChange={(checked) => onChange(checked)}\n      />\n      <label\n        htmlFor={id}\n        className=\"cursor-pointer text-sm font-medium leading-none text-gray-300 peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n      >\n        {label}\n      </label>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/Tooltip.tsx",
    "content": "\"use client\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = ({ ...props }) => <TooltipPrimitive.Root {...props} />;\nTooltip.displayName = TooltipPrimitive.Tooltip.displayName;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Portal>\n    <TooltipPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 overflow-hidden rounded-md border border-slate-100 bg-white px-3 py-1.5 text-sm text-slate-700 shadow-md animate-in fade-in-50 data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1 dark:border-slate-800 dark:bg-slate-800 dark:text-slate-200\",\n        className\n      )}\n      {...props}\n    />\n  </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"
  },
  {
    "path": "apps/web/src/components/UsedBy.tsx",
    "content": "import Image from \"next/image\";\nimport Link from \"next/link\";\nimport DynabaseLogo from \"../../public/img/companies/dynabase.svg\";\nimport IgusLogo from \"../../public/img/companies/igus.svg\";\n\nimport RBTXLogo from \"../../public/img/companies/rbtx.svg\";\n\nconst COMPANIES = [\n  {\n    name: \"igus\",\n    logo: IgusLogo,\n    companyUrl: \"https://www.igus.com/\",\n  },\n  {\n    name: \"RBTX\",\n    logo: RBTXLogo,\n    companyUrl: \"https://rbtx.com/\",\n  },\n  {\n    name: \"Dynabase\",\n    logo: DynabaseLogo,\n    companyUrl: \"https://dynabase.de/\",\n  },\n] satisfies Array<{\n  logo: React.ReactNode;\n  name: string;\n  companyUrl: string;\n}>;\n\nexport function UsedBy() {\n  return (\n    <div className=\"container px-6 md:px-16\">\n      <h1 className=\"text-center text-4xl font-bold\">\n        Beloved by engineering teams at:\n      </h1>\n\n      <div className=\"mx-auto mt-24 grid grid-cols-1 items-center justify-between sm:grid-cols-2 md:grid-cols-4 \">\n        {COMPANIES.map((company) => (\n          <Link\n            key={company.name}\n            href={company.companyUrl}\n            className={\n              \"aspect-video h-20 cursor-pointer justify-self-center opacity-50 grayscale transition-all duration-300 ease-in-out hover:opacity-100 hover:grayscale-0\"\n            }\n          >\n            <Image\n              src={company.logo}\n              alt={company.name}\n              className=\"h-full w-full object-contain\"\n            />\n          </Link>\n        ))}\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/UserAuthForm.tsx",
    "content": "\"use client\";\n\nimport type * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport { Label } from \"components/ui/label\";\nimport { signIn } from \"next-auth/react\";\nimport { useForm } from \"react-hook-form\";\nimport { FaGithub, FaGoogle } from \"react-icons/fa\";\n\ninterface UserAuthFormProps extends React.HTMLAttributes<HTMLDivElement> {\n  callbackUrl?: string;\n  customButtonText?: string;\n}\n\nexport function UserAuthForm({\n  className,\n  callbackUrl,\n  customButtonText,\n  ...props\n}: UserAuthFormProps) {\n  const { register, handleSubmit, formState } = useForm<{ email: string }>();\n\n  return (\n    <div className={cn(\"grid gap-6\", className)} {...props}>\n      <form\n        onSubmit={handleSubmit(({ email }) => {\n          signIn(\"email\", {\n            email,\n            callbackUrl,\n          });\n        })}\n      >\n        <div className=\"grid gap-2\">\n          <div className=\"grid gap-1\">\n            <Label className=\"sr-only\" htmlFor=\"email\">\n              Email\n            </Label>\n            <Input\n              id=\"email\"\n              placeholder=\"name@example.com\"\n              type=\"email\"\n              autoCapitalize=\"none\"\n              autoComplete=\"email\"\n              autoCorrect=\"off\"\n              {...register(\"email\", {\n                required: \"Please enter an email\",\n              })}\n            />\n            {formState.errors.email && (\n              <p className=\"mb-3 text-center text-xs text-red-500\">\n                {formState.errors.email.message}\n              </p>\n            )}\n          </div>\n          <Button>{customButtonText ?? \"Sign In with Email\"}</Button>\n        </div>\n      </form>\n      <div className=\"relative\">\n        <div className=\"absolute inset-0 flex items-center\">\n          <span className=\"w-full border-t\" />\n        </div>\n        <div className=\"relative flex justify-center text-xs uppercase\">\n          <span className=\"bg-background px-2 text-muted-foreground\">\n            Or continue with\n          </span>\n        </div>\n      </div>\n      <div className=\"flex flex-col space-y-4\">\n        <Button\n          variant=\"outline\"\n          type=\"button\"\n          onClick={() => {\n            signIn(\"google\", {\n              callbackUrl,\n            });\n          }}\n        >\n          <FaGoogle className=\"mr-2 h-4 w-4\" />\n          Google\n        </Button>\n        <Button\n          variant=\"outline\"\n          type=\"button\"\n          onClick={() => {\n            signIn(\"github\", {\n              callbackUrl,\n            });\n          }}\n        >\n          <FaGithub className=\"mr-2 h-4 w-4\" />\n          Github\n        </Button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/UserInfo.tsx",
    "content": "import {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"components/DropdownMenu\";\nimport { LogOut, User } from \"lucide-react\";\nimport { signOut, useSession } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { Avatar } from \"./Avatar\";\n\nconst UserInfo = () => {\n  const { data: sessionData } = useSession();\n\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <button\n          type=\"button\"\n          className=\"grid w-full grid-cols-[auto,1fr] space-x-2 rounded-md p-1 transition-colors duration-200 hover:bg-background\"\n        >\n          <Avatar\n            imageUrl={sessionData?.user?.image}\n            userName={sessionData?.user?.name as string}\n          />\n          <div className=\"grid grid-cols-1 items-start text-left font-bold\">\n            <div>{sessionData?.user?.name}</div>\n            <div\n              className=\"truncate text-sm font-normal text-gray-400\"\n              title={sessionData?.user?.email ?? \"\"}\n            >\n              {sessionData?.user?.email}\n            </div>\n          </div>\n        </button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent\n        className=\"w-[calc(320px-5rem)] shadow-lg\"\n        sideOffset={12}\n      >\n        <DropdownMenuItem className=\"cursor-pointer space-x-2\" asChild>\n          <Link href=\"/profile\">\n            <User />\n            <span>Profile</span>\n          </Link>\n        </DropdownMenuItem>\n        <DropdownMenuItem className=\"cursor-pointer space-x-2\" asChild>\n          <button type=\"button\" onClick={() => signOut()} className=\"w-full\">\n            <LogOut />\n            <span>Log Out</span>\n          </button>\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n};\n\nexport { UserInfo };\n"
  },
  {
    "path": "apps/web/src/components/analytics/EventGraph.tsx",
    "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { CartesianGrid, Line, LineChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"components/ui/card\";\nimport {\n  type ChartConfig,\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n} from \"components/ui/chart\";\nimport dayjs from \"dayjs\";\nimport { getFormattingByInterval } from \"lib/events\";\n\ntype EventList = Array<{\n  date: string;\n  [key: string]: string;\n}>;\n\nexport function EventGraph({\n  events,\n  variants,\n  subtitle,\n  title,\n  interval,\n}: {\n  events: EventList;\n  variants: string[];\n  title: string;\n  subtitle: string;\n  interval: string;\n}) {\n  const chartConfig = React.useMemo(() => {\n    const variantsConfig = variants.reduce(\n      (acc, variant, index) => {\n        acc[variant] = {\n          label: variant,\n          color: `hsl(var(--chart-${index + 1}))`,\n        };\n        return acc;\n      },\n      {} as Record<string, { label: string; color: string }>\n    ) as Record<string, { label: string; color: string }>;\n\n    return {\n      ...variantsConfig,\n    } satisfies ChartConfig;\n  }, [variants]);\n\n  return (\n    <Card>\n      <CardHeader className=\"flex items-center gap-2 space-y-0 border-b py-5 sm:flex-row\">\n        <div className=\"grid flex-1 gap-1 text-center sm:text-left\">\n          <CardTitle>{title}</CardTitle>\n          <CardDescription>{subtitle}</CardDescription>\n        </div>\n      </CardHeader>\n      <CardContent className=\"px-2 pt-4 sm:px-6 sm:pt-6\">\n        <ChartContainer\n          config={chartConfig}\n          className=\"aspect-auto h-[250px] w-full\"\n        >\n          <LineChart data={events} accessibilityLayer syncId=\"events\">\n            <defs>\n              {variants.map((variant) => (\n                <linearGradient\n                  key={variant}\n                  id={`fill${variant}`}\n                  x1=\"0\"\n                  y1=\"0\"\n                  x2=\"0\"\n                  y2=\"1\"\n                >\n                  <stop\n                    offset=\"5%\"\n                    stopColor={`var(--color-${variant})`}\n                    stopOpacity={0.8}\n                  />\n                  <stop\n                    offset=\"95%\"\n                    stopColor={`var(--color-${variant})`}\n                    stopOpacity={0.1}\n                  />\n                </linearGradient>\n              ))}\n            </defs>\n            <CartesianGrid vertical={false} />\n            <XAxis\n              dataKey=\"date\"\n              // tickLine={false}\n              // axisLine={false}\n              tickMargin={8}\n              minTickGap={32}\n              tickFormatter={(value) => {\n                return dayjs(value).format(getFormattingByInterval(interval));\n              }}\n            />\n            <YAxis />\n            <ChartTooltip\n              labelFormatter={(value) => {\n                return dayjs(value).format(getFormattingByInterval(interval));\n              }}\n              content={<ChartTooltipContent indicator=\"line\" />}\n            />\n            {variants.map((variant) => (\n              <Line\n                key={variant}\n                dataKey={variant}\n                type=\"monotone\"\n                fill={`url(#fill${variant})`}\n                stroke={`var(--color-${variant})`}\n                strokeWidth={2}\n                dot={false}\n              />\n            ))}\n\n            <ChartLegend content={<ChartLegendContent />} />\n          </LineChart>\n        </ChartContainer>\n      </CardContent>\n    </Card>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/app/AppNav.tsx",
    "content": "import Link from \"next/link\";\n\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { cn } from \"lib/utils\";\nimport { useRouter } from \"next/router\";\n\nconst getItemClassName = (isActive: boolean) =>\n  cn(\n    \"flex-none text-sm font-medium transition-colors hover:text-primary\",\n    !isActive && \"text-muted-foreground\"\n  );\nexport function AppNav({\n  className,\n  linkClassName,\n  ...props\n}: React.HTMLAttributes<HTMLElement> & {\n  linkClassName?: string;\n}) {\n  const currentProjectId = useProjectId();\n  const router = useRouter();\n\n  return (\n    <nav\n      className={cn(\"flex items-center space-x-4 lg:space-x-6\", className)}\n      {...props}\n    >\n      <Link\n        href={`/projects/${currentProjectId}/flags`}\n        className={cn(\n          getItemClassName(\n            router.pathname.endsWith(\"/projects/[projectId]/flags\")\n          ),\n          linkClassName\n        )}\n      >\n        Flags\n      </Link>\n      <Link\n        href={`/projects/${currentProjectId}/remote-config`}\n        className={cn(\n          getItemClassName(\n            router.pathname.endsWith(\"/projects/[projectId]/remote-config\")\n          ),\n          linkClassName\n        )}\n      >\n        Remote Config\n      </Link>\n      <Link\n        href={`/projects/${currentProjectId}/environments`}\n        className={cn(\n          getItemClassName(\n            router.pathname.endsWith(\"/projects/[projectId]/environments\")\n          ),\n          linkClassName\n        )}\n      >\n        Environments\n      </Link>\n      <Link\n        href={`/projects/${currentProjectId}`}\n        className={cn(\n          getItemClassName(router.pathname.endsWith(\"/projects/[projectId]\")),\n          linkClassName\n        )}\n      >\n        A/B Tests\n      </Link>\n      <Link\n        href={`/projects/${currentProjectId}/settings`}\n        className={cn(\n          getItemClassName(\n            router.pathname.endsWith(\"/projects/[projectId]/settings\")\n          ),\n          linkClassName\n        )}\n      >\n        Settings\n      </Link>\n    </nav>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/app/UserNav.tsx",
    "content": "import { DOCS_URL } from \"@tryabby/core\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"components/DropdownMenu\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"components/ui/avatar\";\nimport { Button } from \"components/ui/button\";\nimport { signOut, useSession } from \"next-auth/react\";\nimport Link from \"next/link\";\n\nexport function UserNav() {\n  const { data } = useSession();\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button variant=\"ghost\" className=\"relative h-8 w-8 rounded-full\">\n          <Avatar className=\"h-8 w-8\">\n            <AvatarImage src={data?.user?.image} alt={data?.user?.name ?? \"\"} />\n            <AvatarFallback>{data?.user?.name?.slice(0, 2)}</AvatarFallback>\n          </Avatar>\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent className=\"w-56\" align=\"end\" forceMount>\n        <DropdownMenuLabel className=\"font-normal\">\n          <div className=\"flex flex-col space-y-1\">\n            <p className=\"text-sm font-medium leading-none\">\n              {data?.user?.name}\n            </p>\n            <p className=\"text-xs leading-none text-muted-foreground\">\n              {data?.user?.email}\n            </p>\n          </div>\n        </DropdownMenuLabel>\n        <DropdownMenuSeparator />\n        <DropdownMenuGroup>\n          <DropdownMenuItem asChild>\n            <Link href=\"/profile\">Profile</Link>\n          </DropdownMenuItem>\n          <DropdownMenuItem asChild>\n            <Link href=\"/profile\">API Keys</Link>\n          </DropdownMenuItem>\n          <DropdownMenuItem asChild>\n            <Link href={DOCS_URL}>Docs</Link>\n          </DropdownMenuItem>\n          <DropdownMenuItem asChild>\n            <Link href=\"/\">Home</Link>\n          </DropdownMenuItem>\n        </DropdownMenuGroup>\n        <DropdownMenuSeparator />\n        <DropdownMenuItem\n          onClick={() => {\n            signOut({\n              callbackUrl: \"/\",\n            });\n          }}\n        >\n          Log out\n        </DropdownMenuItem>\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/charts/Donut.tsx",
    "content": "\"use client\";\nimport { Label, Pie, PieChart } from \"recharts\";\n\nimport { DOCS_URL } from \"@tryabby/core\";\nimport { Card, CardContent, CardFooter } from \"components/ui/card\";\nimport {\n  type ChartConfig,\n  ChartContainer,\n  ChartLegend,\n  ChartLegendContent,\n  ChartTooltip,\n  ChartTooltipContent,\n} from \"components/ui/chart\";\nimport Link from \"next/link\";\nimport type { ProjectClientEvents } from \"pages/projects/[projectId]\";\nimport { useMemo } from \"react\";\n\nexport function DonutChart({\n  totalVisits,\n  variants,\n  events,\n  totalText,\n}: {\n  totalVisits: number;\n  totalText: string;\n  variants: string[];\n  events: ProjectClientEvents;\n}) {\n  const chartConfig = useMemo(\n    () =>\n      ({\n        visitors: {\n          label: \"Visitors\",\n        },\n        ...variants.reduce((acc, v, i) => {\n          acc[v] = {\n            label: v,\n            color: `hsl(var(--chart-${i + 1}))`,\n          };\n          return acc;\n        }, {} as ChartConfig),\n      }) satisfies ChartConfig,\n    [variants]\n  );\n\n  const chartData = useMemo(() => {\n    return events.map((event) => ({\n      variant: event.selectedVariant,\n      events: event._count._all,\n      fill: `var(--color-${event.selectedVariant})`,\n    }));\n  }, [events]);\n\n  const hasNoData = useMemo(\n    () => chartData.length === 0 || chartData.every((e) => e.events === 0),\n    [chartData]\n  );\n  return (\n    <Card className=\"flex flex-col shadow-none w-full h-full\">\n      <CardContent className=\"flex-1 pb-0 h-full\">\n        {hasNoData ? (\n          <p className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 leading-none text-muted-foreground text-sm text-center\">\n            Unfortunatly, there is no data to display.\n            <br />\n            <br />\n            Start by sending events from your app.\n            <br />\n            <br />\n            Read more in the{\" \"}\n            <Link href={DOCS_URL} className=\"underline text-primary\">\n              docs\n            </Link>\n            .\n          </p>\n        ) : (\n          <ChartContainer\n            config={chartConfig}\n            className=\"mx-auto aspect-square max-h-[250px]\"\n          >\n            <PieChart>\n              <ChartTooltip\n                cursor={false}\n                content={<ChartTooltipContent hideLabel />}\n              />\n              <Pie\n                data={chartData}\n                dataKey=\"events\"\n                nameKey=\"variant\"\n                innerRadius={60}\n                strokeWidth={5}\n              >\n                <Label\n                  content={({ viewBox }) => {\n                    if (viewBox && \"cx\" in viewBox && \"cy\" in viewBox) {\n                      return (\n                        <text\n                          x={viewBox.cx}\n                          y={viewBox.cy}\n                          textAnchor=\"middle\"\n                          dominantBaseline=\"middle\"\n                        >\n                          <tspan\n                            x={viewBox.cx}\n                            y={viewBox.cy}\n                            className=\"fill-foreground text-3xl font-bold\"\n                          >\n                            {totalVisits.toLocaleString()}\n                          </tspan>\n                          <tspan\n                            x={viewBox.cx}\n                            y={(viewBox.cy || 0) + 24}\n                            className=\"fill-muted-foreground\"\n                          >\n                            {totalText}\n                          </tspan>\n                        </text>\n                      );\n                    }\n                  }}\n                />\n              </Pie>\n              <ChartLegend\n                content={<ChartLegendContent nameKey=\"variant\" />}\n                className=\"-translate-y-2 flex-wrap gap-2 [&>*]:basis-1/4 [&>*]:justify-center\"\n              />\n            </PieChart>\n          </ChartContainer>\n        )}\n      </CardContent>\n      {!hasNoData && (\n        <CardFooter className=\"flex-col gap-2 text-sm\">\n          {/* <div className=\"flex items-center gap-2 font-medium leading-none\">\n          Trending up by 5.2% this month <TrendingUp className=\"h-4 w-4\" />\n        </div> */}\n          <div className=\"leading-none text-muted-foreground\">\n            Showing total visitors for the 30 days\n          </div>\n        </CardFooter>\n      )}\n    </Card>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/flags/FlagRuleEditor.tsx",
    "content": "import type { FeatureFlagType } from \"@prisma/client\";\nimport type { FlagRule, SubFlagRule, ValidatorType } from \"@tryabby/core\";\nimport {\n  type FlagRuleSet,\n  getDisplayNameForOperator,\n  getOperatorsForType,\n} from \"@tryabby/core/schema\";\nimport { JSONEditor } from \"components/JSONEditor\";\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport { Label } from \"components/ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport { Switch } from \"components/ui/switch\";\nimport { ArrowRight, Trash } from \"lucide-react\";\nimport { match } from \"ts-pattern\";\n\nexport function ThenValueInput({\n  flagType,\n  onChange,\n  thenValue,\n}: {\n  flagType: FeatureFlagType;\n  thenValue: FlagRule[\"thenValue\"];\n  onChange: (thenValue: FlagRule[\"thenValue\"]) => void;\n}) {\n  return (\n    <div className=\"w-full\">\n      {match(flagType)\n        .with(\"BOOLEAN\", () => (\n          <div className=\"flex items-center space-x-3\">\n            <Switch\n              checked={thenValue === \"true\"}\n              onCheckedChange={(checked) => {\n                onChange(checked ? \"true\" : \"false\");\n              }}\n            />\n            <Label className=\"text-sm text-muted-foreground\">\n              {thenValue === \"true\" ? \"Enabled\" : \"Disabled\"}\n            </Label>\n          </div>\n        ))\n        .with(\"NUMBER\", () => (\n          <Input\n            className=\"max-w-[200px]\"\n            value={thenValue.toString()}\n            onChange={(e) => onChange(e.target.value)}\n            type=\"number\"\n            placeholder=\"Enter number value\"\n          />\n        ))\n        .with(\"STRING\", () => (\n          <Input\n            className=\"max-w-[300px]\"\n            value={thenValue.toString()}\n            onChange={(e) => onChange(e.target.value)}\n            placeholder=\"Enter string value\"\n          />\n        ))\n        .with(\"JSON\", () => (\n          <div className=\"w-full max-w-[500px]\">\n            <JSONEditor\n              value={thenValue.toString()}\n              onChange={(e) => onChange(e)}\n            />\n          </div>\n        ))\n        .exhaustive()}\n    </div>\n  );\n}\n\ntype FlagRuleEditorProps<T extends FlagRule | SubFlagRule> = {\n  rule: T;\n  onChange: (rule: T) => void;\n  onRemove: () => void;\n  userSchema: Record<string, ValidatorType>;\n  flagType: FeatureFlagType;\n};\n\nexport function FlagRuleEditor<T extends FlagRule | SubFlagRule>({\n  rule,\n  onChange,\n  onRemove,\n  flagType,\n  userSchema,\n}: FlagRuleEditorProps<T>) {\n  return (\n    <div className=\"space-y-6\">\n      <div className=\"grid grid-cols-[2fr_2fr_2fr_auto] gap-4 items-end relative\">\n        <div className=\"absolute -left-10 top-1/2 -translate-y-1/2 w-6 h-px bg-border\" />\n\n        <div className=\"space-y-2\">\n          <Label className=\"text-sm font-medium flex items-center gap-2\">\n            Property\n            <span className=\"text-xs font-normal text-muted-foreground\">\n              ({rule.propertyType})\n            </span>\n          </Label>\n          <Select\n            value={rule.propertyName}\n            onValueChange={(value) => {\n              if (!userSchema[value]) return;\n              onChange({\n                ...rule,\n                propertyName: value,\n                propertyType: userSchema[value].type,\n              });\n            }}\n          >\n            <SelectTrigger className=\"w-full\">\n              <SelectValue placeholder=\"Select property\" />\n            </SelectTrigger>\n            <SelectContent>\n              <div className=\"p-2\">\n                <div className=\"text-xs text-muted-foreground mb-2\">\n                  User Properties\n                </div>\n                {Object.entries(userSchema).map(([key, schema]) => (\n                  <SelectItem\n                    key={key}\n                    value={key}\n                    className=\"flex items-center gap-2\"\n                  >\n                    <span>{key}</span>\n                    <span className=\"text-xs text-muted-foreground ml-1\">\n                      ({schema.type})\n                    </span>\n                  </SelectItem>\n                ))}\n              </div>\n            </SelectContent>\n          </Select>\n        </div>\n\n        <div className=\"space-y-2\">\n          <Label className=\"text-sm font-medium\">Operator</Label>\n          <Select\n            value={rule.operator}\n            onValueChange={(value) =>\n              onChange({\n                ...rule,\n                operator: value as FlagRuleSet[number][\"operator\"],\n              })\n            }\n          >\n            <SelectTrigger className=\"w-full\">\n              <SelectValue placeholder=\"Select operator\" />\n            </SelectTrigger>\n            <SelectContent>\n              <div className=\"p-2\">\n                <div className=\"text-xs text-muted-foreground mb-2\">\n                  Available Operators\n                </div>\n                {getOperatorsForType(rule.propertyType).map((op) => (\n                  <SelectItem key={op} value={op}>\n                    {getDisplayNameForOperator(op)}\n                  </SelectItem>\n                ))}\n              </div>\n            </SelectContent>\n          </Select>\n        </div>\n\n        <div className=\"space-y-2\">\n          <Label className=\"text-sm font-medium\">Value</Label>\n          {rule.propertyType === \"boolean\" ? (\n            <Select\n              value={rule.value.toString()}\n              onValueChange={(value) =>\n                onChange({\n                  ...rule,\n                  value: value === \"true\",\n                })\n              }\n            >\n              <SelectTrigger className=\"w-full\">\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"true\">True</SelectItem>\n                <SelectItem value=\"false\">False</SelectItem>\n              </SelectContent>\n            </Select>\n          ) : rule.propertyType === \"number\" ? (\n            <div className=\"space-y-1.5\">\n              <Input\n                type=\"number\"\n                placeholder=\"Enter number\"\n                value={rule.value as number}\n                onChange={(e) =>\n                  onChange({\n                    ...rule,\n                    value: Number.parseFloat(e.target.value),\n                  })\n                }\n              />\n            </div>\n          ) : (\n            <div className=\"space-y-1.5\">\n              <Input\n                placeholder=\"Enter value\"\n                value={rule.value as string}\n                onChange={(e) => onChange({ ...rule, value: e.target.value })}\n              />\n            </div>\n          )}\n        </div>\n\n        <Button\n          variant=\"ghost\"\n          size=\"icon\"\n          onClick={onRemove}\n          className=\"h-10 w-10 hover:bg-destructive/10 hover:text-destructive\"\n        >\n          <Trash className=\"h-4 w-4\" />\n        </Button>\n      </div>\n\n      {\"thenValue\" in rule && (\n        <>\n          <div className=\"flex items-center gap-4 my-6\">\n            <div className=\"h-px flex-1 bg-border\" />\n            <div className=\"bg-muted rounded-full p-2\">\n              <ArrowRight className=\"h-4 w-4 text-muted-foreground\" />\n            </div>\n            <div className=\"h-px flex-1 bg-border\" />\n          </div>\n\n          <div className=\"space-y-4\">\n            <Label className=\"text-lg font-medium flex items-center gap-2\">\n              Then return\n              <span className=\"text-sm font-normal text-muted-foreground px-2 py-0.5 rounded-full bg-muted\">\n                {flagType.toLowerCase()}\n              </span>\n            </Label>\n            <div className=\"pl-6 pt-2 border-l-2 border-border\">\n              <ThenValueInput\n                flagType={flagType}\n                thenValue={rule.thenValue}\n                onChange={(thenValue) => onChange({ ...rule, thenValue })}\n              />\n            </div>\n          </div>\n        </>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/flags/RuleSetEditor.tsx",
    "content": "\"use client\";\n\nimport type { FeatureFlagType } from \"@prisma/client\";\nimport type { ValidatorType } from \"@tryabby/core\";\nimport type { FlagRuleSet } from \"@tryabby/core/schema\";\nimport { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"components/ui/card\";\nimport { Label } from \"components/ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport { ArrowRight, Plus, Trash } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { FlagRuleEditor, ThenValueInput } from \"./FlagRuleEditor\";\n\nexport function FlagRulesEditor({\n  userSchema,\n  flagValue,\n  flagType,\n  onSave,\n  initialData,\n}: {\n  userSchema: Record<string, ValidatorType>;\n  flagValue: string;\n  flagType: FeatureFlagType;\n  onSave: (ruleSet: FlagRuleSet) => void;\n  initialData?: FlagRuleSet;\n}) {\n  const [ruleSet, setRuleSet] = useState<FlagRuleSet>(initialData ?? []);\n\n  const addRule = () => {\n    setRuleSet([\n      ...ruleSet,\n      {\n        propertyName: \"\",\n        propertyType: \"string\",\n        operator: \"eq\",\n        value: \"\",\n        thenValue: flagValue,\n      },\n    ]);\n  };\n\n  const updateRule = (index: number, rule: FlagRuleSet[number]) => {\n    const newRuleSet = [...ruleSet];\n    newRuleSet[index] = rule;\n    setRuleSet(newRuleSet);\n  };\n\n  const removeRule = (index: number) => {\n    const newRuleSet = [...ruleSet];\n    newRuleSet.splice(index, 1);\n    setRuleSet(newRuleSet);\n  };\n\n  const addGroup = () => {\n    setRuleSet([\n      ...ruleSet,\n      {\n        operator: \"and\",\n        rules: [],\n        thenValue: flagValue,\n      },\n    ]);\n  };\n\n  return (\n    <Card className=\"w-full\">\n      <CardHeader>\n        <CardTitle className=\"flex items-center justify-between\">\n          <div className=\"flex items-center gap-3\">\n            <span>Rule Configuration</span>\n            <span className=\"text-sm font-normal text-muted-foreground bg-muted px-2 py-0.5 rounded-md\">\n              {ruleSet.length} {ruleSet.length === 1 ? \"rule\" : \"rules\"}\n            </span>\n          </div>\n          <Button variant=\"default\" size=\"sm\" onClick={() => onSave(ruleSet)}>\n            Save Changes\n          </Button>\n        </CardTitle>\n      </CardHeader>\n      <CardContent className=\"space-y-6\">\n        {ruleSet.length === 0 ? (\n          <div className=\"flex flex-col items-center justify-center py-8 text-center border-2 border-dashed rounded-lg bg-muted/5\">\n            <div className=\"mb-4 p-4 rounded-full bg-muted/50\">\n              <Plus className=\"h-6 w-6 text-muted-foreground\" />\n            </div>\n            <p className=\"text-sm text-muted-foreground mb-4\">\n              No rules configured yet\n            </p>\n            <p className=\"text-xs text-muted-foreground mb-6 max-w-sm\">\n              Rules allow you to dynamically control flag values based on user\n              properties\n            </p>\n            <div className=\"flex gap-3\">\n              <Button size=\"sm\" variant=\"outline\" onClick={addRule}>\n                <Plus className=\"h-4 w-4 mr-2\" /> Add Single Rule\n              </Button>\n              <Button size=\"sm\" variant=\"outline\" onClick={addGroup}>\n                <Plus className=\"h-4 w-4 mr-2\" /> Add Rule Group\n              </Button>\n            </div>\n          </div>\n        ) : (\n          <>\n            <div className=\"space-y-4\">\n              {ruleSet.map((rule, index) => {\n                if (\"rules\" in rule) {\n                  return (\n                    <Card\n                      // biome-ignore lint/suspicious/noArrayIndexKey: <explanation>\n                      key={index}\n                      className=\"relative border-primary/10 bg-primary/[0.03] shadow-sm\"\n                    >\n                      <div className=\"absolute top-0 left-0 w-1 h-full bg-primary/20 rounded-l-lg\" />\n                      <CardContent className=\"p-6\">\n                        <div className=\"grid gap-6\">\n                          <div className=\"space-y-4\">\n                            <div className=\"flex items-center gap-2\">\n                              <Label className=\"text-lg font-medium flex items-center gap-2\">\n                                If\n                                <Select\n                                  value={rule.operator}\n                                  onValueChange={(value: \"and\" | \"or\") =>\n                                    updateRule(index, {\n                                      ...rule,\n                                      operator: value,\n                                    })\n                                  }\n                                >\n                                  <SelectTrigger className=\"w-[200px] bg-background\">\n                                    <SelectValue />\n                                  </SelectTrigger>\n                                  <SelectContent>\n                                    <SelectItem value=\"and\">\n                                      ALL conditions match\n                                    </SelectItem>\n                                    <SelectItem value=\"or\">\n                                      ANY condition matches\n                                    </SelectItem>\n                                  </SelectContent>\n                                </Select>\n                              </Label>\n                            </div>\n\n                            <div className=\"pl-6 border-l-2 border-primary/20 space-y-4\">\n                              {rule.rules.map((subRule, subRuleIndex) => (\n                                // biome-ignore lint/suspicious/noArrayIndexKey: <explanation>\n                                <div key={subRuleIndex} className=\"relative\">\n                                  <FlagRuleEditor\n                                    rule={subRule}\n                                    onChange={(updatedRule) => {\n                                      const newRules = [...rule.rules];\n                                      newRules[subRuleIndex] = updatedRule;\n                                      updateRule(index, {\n                                        ...rule,\n                                        rules: newRules,\n                                      });\n                                    }}\n                                    onRemove={() => {\n                                      const newRules = [...rule.rules];\n                                      newRules.splice(subRuleIndex, 1);\n                                      updateRule(index, {\n                                        ...rule,\n                                        rules: newRules,\n                                      });\n                                    }}\n                                    userSchema={userSchema}\n                                    flagType={flagType}\n                                  />\n                                </div>\n                              ))}\n                              <Button\n                                variant=\"ghost\"\n                                size=\"sm\"\n                                onClick={() =>\n                                  updateRule(index, {\n                                    ...rule,\n                                    rules: [\n                                      ...rule.rules,\n                                      {\n                                        propertyName: \"\",\n                                        propertyType: \"string\",\n                                        operator: \"eq\",\n                                        value: \"\",\n                                      },\n                                    ],\n                                  })\n                                }\n                                className=\"mt-2\"\n                              >\n                                <Plus className=\"h-4 w-4 mr-2\" /> Add Condition\n                              </Button>\n                            </div>\n                          </div>\n\n                          <div className=\"flex items-center gap-4 my-6\">\n                            <div className=\"h-px flex-1 bg-border\" />\n                            <div className=\"bg-muted rounded-full p-2\">\n                              <ArrowRight className=\"h-4 w-4 text-muted-foreground\" />\n                            </div>\n                            <div className=\"h-px flex-1 bg-border\" />\n                          </div>\n\n                          <div className=\"space-y-4\">\n                            <Label className=\"text-lg font-medium flex items-center gap-2\">\n                              Then return\n                              <span className=\"text-sm font-normal text-muted-foreground px-2 py-0.5 rounded-full bg-muted/50\">\n                                ({flagType.toLowerCase()})\n                              </span>\n                            </Label>\n                            <div className=\"pl-6 pt-2 border-l-2 border-primary/20\">\n                              <ThenValueInput\n                                flagType={flagType}\n                                thenValue={rule.thenValue}\n                                onChange={(value) =>\n                                  updateRule(index, {\n                                    ...rule,\n                                    thenValue: value,\n                                  })\n                                }\n                              />\n                            </div>\n                          </div>\n\n                          <div className=\"flex justify-end pt-4 border-t border-border\">\n                            <Button\n                              variant=\"ghost\"\n                              size=\"sm\"\n                              onClick={() => removeRule(index)}\n                              className=\"text-destructive hover:text-destructive hover:bg-destructive/10\"\n                            >\n                              <Trash className=\"h-4 w-4 mr-2\" /> Remove Group\n                            </Button>\n                          </div>\n                        </div>\n                      </CardContent>\n                    </Card>\n                  );\n                }\n\n                return (\n                  <Card\n                    // biome-ignore lint/suspicious/noArrayIndexKey: <explanation>\n                    key={index}\n                    className=\"relative border-muted bg-muted/5\"\n                  >\n                    <CardContent className=\"p-6\">\n                      <div className=\"grid gap-4\">\n                        <div className=\"flex items-center gap-2\">\n                          <Label className=\"text-lg font-medium\">\n                            If condition matches\n                          </Label>\n                        </div>\n                        <FlagRuleEditor\n                          rule={rule}\n                          onChange={(updatedRule) =>\n                            updateRule(index, updatedRule)\n                          }\n                          onRemove={() => removeRule(index)}\n                          userSchema={userSchema}\n                          flagType={flagType}\n                        />\n                      </div>\n                    </CardContent>\n                  </Card>\n                );\n              })}\n            </div>\n\n            <div className=\"flex gap-3 pt-4 border-t border-border\">\n              <Button size=\"sm\" variant=\"outline\" onClick={addRule}>\n                <Plus className=\"h-4 w-4 mr-2\" /> Add Single Rule\n              </Button>\n              <Button size=\"sm\" variant=\"outline\" onClick={addGroup}>\n                <Plus className=\"h-4 w-4 mr-2\" /> Add Rule Group\n              </Button>\n            </div>\n          </>\n        )}\n      </CardContent>\n    </Card>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/settings/Integrations.tsx",
    "content": "import { Label } from \"@radix-ui/react-label\";\nimport { LoadingSpinner } from \"components/LoadingSpinner\";\nimport { Button } from \"components/ui/button\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardHeader,\n  CardTitle,\n} from \"components/ui/card\";\nimport {\n  Command,\n  CommandEmpty,\n  CommandGroup,\n  CommandInput,\n  CommandItem,\n  CommandList,\n} from \"components/ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"components/ui/popover\";\nimport { cn } from \"lib/utils\";\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { useState } from \"react\";\nimport { match } from \"ts-pattern\";\nimport { trpc } from \"utils/trpc\";\n\nexport function Integrations({ projectId }: { projectId: string | undefined }) {\n  const [open, setOpen] = useState(false);\n  const [selectedRepositoryId, setSelectedRepositoryId] = useState<string>();\n  const integrationsQuery = trpc.project.getIntegrations.useQuery(\n    // biome-ignore lint/style/noNonNullAssertion: we check for enabled\n    { projectId: projectId! },\n    { enabled: !!projectId }\n  );\n\n  const updateGithubIntegration =\n    trpc.project.updateGithubIntegration.useMutation({\n      onSuccess: () => {\n        integrationsQuery.refetch();\n      },\n    });\n\n  if (integrationsQuery.isLoading) return <LoadingSpinner />;\n  if (integrationsQuery.error) return <div>Error</div>;\n  if (integrationsQuery.data.length === 0) {\n    return (\n      <div>\n        <h1>No integrations</h1>\n      </div>\n    );\n  }\n\n  return integrationsQuery.data.map((i) =>\n    match(i.type)\n      .with(\"GITHUB\", () => {\n        const selectedRepository = i.potentialRepositories.find(\n          (r) => r.id.toString() === selectedRepositoryId\n        );\n\n        return (\n          <Card key={i.id} className=\"max-w-lg\">\n            <CardHeader>\n              <CardTitle>Github</CardTitle>\n              <CardDescription>\n                The selected repository will be used to automagically create and\n                update pull requests for your feature flags.\n              </CardDescription>\n            </CardHeader>\n            <CardContent>\n              {i.installedRepos.length === 0 ? (\n                <div className=\"flex flex-col space-y-3\">\n                  <div className=\"grid gap-x-1.5\">\n                    <Label>Selected Repository</Label>\n                    <Popover open={open} onOpenChange={setOpen}>\n                      <PopoverTrigger asChild>\n                        <Button\n                          variant=\"outline\"\n                          // biome-ignore lint/a11y/useSemanticElements: <explanation>\n                          role=\"combobox\"\n                          aria-expanded={open}\n                          className=\"w-[350px] justify-between\"\n                        >\n                          {selectedRepository ? (\n                            <span>\n                              <span className=\"text-muted-foreground\">\n                                {selectedRepository.owner}/\n                              </span>\n                              {selectedRepository.name}\n                            </span>\n                          ) : (\n                            \"Select repository...\"\n                          )}\n                          <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n                        </Button>\n                      </PopoverTrigger>\n                      <PopoverContent className=\"w-[350px] p-0\">\n                        <Command>\n                          <CommandInput placeholder=\"Search repository...\" />\n                          <CommandList>\n                            <CommandEmpty>No framework found.</CommandEmpty>\n                            <CommandGroup>\n                              {i.potentialRepositories.map((repo) => (\n                                <CommandItem\n                                  key={repo.id}\n                                  value={`${repo.owner}/${repo.name}`}\n                                  onSelect={() => {\n                                    setSelectedRepositoryId(\n                                      repo.id.toString() ===\n                                        selectedRepositoryId\n                                        ? undefined\n                                        : repo.id.toString()\n                                    );\n                                    setOpen(false);\n                                  }}\n                                >\n                                  <Check\n                                    className={cn(\n                                      \"mr-2 h-4 w-4\",\n                                      selectedRepositoryId ===\n                                        repo.id.toString()\n                                        ? \"opacity-100\"\n                                        : \"opacity-0\"\n                                    )}\n                                  />\n                                  <span>\n                                    <span className=\"text-muted-foreground\">\n                                      {repo.owner}/\n                                    </span>\n                                    {repo.name}\n                                  </span>\n                                </CommandItem>\n                              ))}\n                            </CommandGroup>\n                          </CommandList>\n                        </Command>\n                      </PopoverContent>\n                    </Popover>\n                  </div>\n                  <Button\n                    className=\"ml-auto\"\n                    onClick={async () => {\n                      if (!selectedRepositoryId) return;\n                      await updateGithubIntegration.mutateAsync({\n                        integrationId: i.id,\n                        repositoryId: Number(selectedRepositoryId),\n                      });\n                    }}\n                  >\n                    Save\n                  </Button>\n                </div>\n              ) : (\n                <div className=\"flex flex-col space-y-3\">\n                  <span>Your selected repository is</span>\n\n                  <Link\n                    href={`https://github.com/${i.installedRepos[0]?.owner}/${i.installedRepos[0]?.name}`}\n                    className=\"bg-primary-foreground mr-auto p-2 rounded-md font-mono\"\n                  >\n                    <span className=\"text-muted-foreground\">\n                      {i.installedRepos[0]?.owner}/\n                    </span>\n                    {i.installedRepos[0]?.name}\n                  </Link>\n\n                  <small>Need to change this? Contact us</small>\n                </div>\n              )}\n            </CardContent>\n          </Card>\n        );\n      })\n      .exhaustive()\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/settings/Segments.tsx",
    "content": "import type { UserSegment } from \"@prisma/client\";\nimport type { ValidatorType } from \"@tryabby/core\";\nimport { Card, CardContent } from \"components/ui/card\";\n\ninterface UserSegmentDisplayProps {\n  segment: UserSegment;\n}\n\nfunction getTypeColor(type: ValidatorType[\"type\"]) {\n  switch (type) {\n    case \"string\":\n      return \"bg-green-500/10 text-green-500\";\n    case \"number\":\n      return \"bg-blue-500/10 text-blue-500\";\n    case \"boolean\":\n      return \"bg-purple-500/10 text-purple-500\";\n    default:\n      return \"bg-gray-500/10 text-gray-500\";\n  }\n}\n\nexport function UserSegmentDisplay({ segment }: UserSegmentDisplayProps) {\n  const schema = segment.schema as Record<string, ValidatorType>;\n\n  return (\n    <Card className=\"group relative hover:shadow-md transition-all duration-200 hover:border-primary/20 overflow-hidden\">\n      <div className=\"absolute top-0 right-0 h-full w-1.5 bg-gradient-to-b from-primary/20 to-primary/5\" />\n      <CardContent className=\"pt-6\">\n        <div className=\"grid gap-3\">\n          {Object.entries(schema).map(([key, value]) => (\n            <div\n              key={key}\n              className=\"flex items-center justify-between group/item hover:bg-muted/50 rounded-lg px-3 py-2 transition-colors\"\n            >\n              <div className=\"flex items-center gap-2\">\n                <code className=\"font-mono text-sm font-medium group-hover/item:text-primary transition-colors\">\n                  {key}\n                </code>\n                {value.optional && (\n                  <span className=\"px-1.5 py-0.5 text-[10px] uppercase tracking-wider rounded border border-yellow-500/20 text-yellow-500 font-medium\">\n                    optional\n                  </span>\n                )}\n              </div>\n              <span\n                className={`px-2 py-0.5 text-xs rounded-md font-medium ${getTypeColor(value.type)}`}\n              >\n                {value.type}\n              </span>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/ui/avatar.tsx",
    "content": "import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Avatar = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n      className\n    )}\n    {...props}\n  />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Image>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Image\n    ref={ref}\n    className={cn(\"aspect-square h-full w-full\", className)}\n    {...props}\n  />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n  React.ElementRef<typeof AvatarPrimitive.Fallback>,\n  React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n  <AvatarPrimitive.Fallback\n    ref={ref}\n    className={cn(\n      \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n      className\n    )}\n    {...props}\n  />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n"
  },
  {
    "path": "apps/web/src/components/ui/button.tsx",
    "content": "import { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-10 px-4 py-2\",\n        sm: \"h-9 rounded-md px-3\",\n        lg: \"h-11 rounded-md px-8\",\n        icon: \"h-10 w-10 rounded-lg\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n);\n\nexport interface ButtonProps\n  extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n    VariantProps<typeof buttonVariants> {\n  asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n  ({ className, variant, size, asChild = false, ...props }, ref) => {\n    const Comp = asChild ? Slot : \"button\";\n    return (\n      <Comp\n        className={cn(buttonVariants({ variant, size, className }))}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"
  },
  {
    "path": "apps/web/src/components/ui/card.tsx",
    "content": "import * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n      className\n    )}\n    {...props}\n  />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n  <h3\n    ref={ref}\n    className={cn(\n      \"text-2xl font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n  <p\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n  Card,\n  CardHeader,\n  CardFooter,\n  CardTitle,\n  CardDescription,\n  CardContent,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/chart.tsx",
    "content": "import * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n  [k in string]: {\n    label?: React.ReactNode;\n    icon?: React.ComponentType;\n  } & (\n    | { color?: string; theme?: never }\n    | { color?: never; theme: Record<keyof typeof THEMES, string> }\n  );\n};\n\ntype ChartContextProps = {\n  config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n  const context = React.useContext(ChartContext);\n\n  if (!context) {\n    throw new Error(\"useChart must be used within a <ChartContainer />\");\n  }\n\n  return context;\n}\n\nconst ChartContainer = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<\"div\"> & {\n    config: ChartConfig;\n    children: React.ComponentProps<\n      typeof RechartsPrimitive.ResponsiveContainer\n    >[\"children\"];\n  }\n>(({ id, className, children, config, ...props }, ref) => {\n  const uniqueId = React.useId();\n  const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n  return (\n    <ChartContext.Provider value={{ config }}>\n      <div\n        data-chart={chartId}\n        ref={ref}\n        className={cn(\n          \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line-line]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n          className\n        )}\n        {...props}\n      >\n        <ChartStyle id={chartId} config={config} />\n        <RechartsPrimitive.ResponsiveContainer>\n          {children}\n        </RechartsPrimitive.ResponsiveContainer>\n      </div>\n    </ChartContext.Provider>\n  );\n});\nChartContainer.displayName = \"Chart\";\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n  const colorConfig = Object.entries(config).filter(\n    ([_, config]) => config.theme || config.color\n  );\n\n  if (!colorConfig.length) {\n    return null;\n  }\n\n  return (\n    <style\n      // biome-ignore lint/security/noDangerouslySetInnerHtml:>\n      dangerouslySetInnerHTML={{\n        __html: Object.entries(THEMES)\n          .map(\n            ([theme, prefix]) =>\n              `\n${prefix} [data-chart=${id}] {\n${colorConfig\n  .map(([key, itemConfig]) => {\n    const color =\n      itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n      itemConfig.color;\n    return color ? `  --color-${key}: ${color};` : null;\n  })\n  .join(\"\\n\")}\n}\n`\n          )\n          .join(\"\\n\"),\n      }}\n    />\n  );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n    React.ComponentProps<\"div\"> & {\n      hideLabel?: boolean;\n      hideIndicator?: boolean;\n      indicator?: \"line\" | \"dot\" | \"dashed\";\n      nameKey?: string;\n      labelKey?: string;\n    }\n>(\n  (\n    {\n      active,\n      payload,\n      className,\n      indicator = \"dot\",\n      hideLabel = false,\n      hideIndicator = false,\n      label,\n      labelFormatter,\n      labelClassName,\n      formatter,\n      color,\n      nameKey,\n      labelKey,\n    },\n    ref\n  ) => {\n    const { config } = useChart();\n\n    const tooltipLabel = React.useMemo(() => {\n      if (hideLabel || !payload?.length) {\n        return null;\n      }\n\n      const [item] = payload;\n      const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n      const itemConfig = getPayloadConfigFromPayload(config, item, key);\n      const value =\n        !labelKey && typeof label === \"string\"\n          ? config[label as keyof typeof config]?.label || label\n          : itemConfig?.label;\n\n      if (labelFormatter) {\n        return (\n          <div className={cn(\"font-medium\", labelClassName)}>\n            {labelFormatter(value, payload)}\n          </div>\n        );\n      }\n\n      if (!value) {\n        return null;\n      }\n\n      return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n    }, [\n      label,\n      labelFormatter,\n      payload,\n      hideLabel,\n      labelClassName,\n      config,\n      labelKey,\n    ]);\n\n    if (!active || !payload?.length) {\n      return null;\n    }\n\n    const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n          className\n        )}\n      >\n        {!nestLabel ? tooltipLabel : null}\n        <div className=\"grid gap-1.5\">\n          {payload.map((item, index) => {\n            const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n            const itemConfig = getPayloadConfigFromPayload(config, item, key);\n            const indicatorColor = color || item.payload.fill || item.color;\n\n            return (\n              <div\n                key={item.dataKey}\n                className={cn(\n                  \"flex w-full items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n                  indicator === \"dot\" && \"items-center\"\n                )}\n              >\n                {formatter && item?.value !== undefined && item.name ? (\n                  formatter(item.value, item.name, item, index, item.payload)\n                ) : (\n                  <>\n                    {itemConfig?.icon ? (\n                      <itemConfig.icon />\n                    ) : (\n                      !hideIndicator && (\n                        <div\n                          className={cn(\n                            \"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\",\n                            {\n                              \"h-2.5 w-2.5\": indicator === \"dot\",\n                              \"w-1\": indicator === \"line\",\n                              \"w-0 border-[1.5px] border-dashed bg-transparent\":\n                                indicator === \"dashed\",\n                              \"my-0.5\": nestLabel && indicator === \"dashed\",\n                            }\n                          )}\n                          style={\n                            {\n                              \"--color-bg\": indicatorColor,\n                              \"--color-border\": indicatorColor,\n                            } as React.CSSProperties\n                          }\n                        />\n                      )\n                    )}\n                    <div\n                      className={cn(\n                        \"flex flex-1 justify-between leading-none\",\n                        nestLabel ? \"items-end\" : \"items-center\"\n                      )}\n                    >\n                      <div className=\"grid gap-1.5\">\n                        {nestLabel ? tooltipLabel : null}\n                        <span className=\"text-muted-foreground\">\n                          {itemConfig?.label || item.name}\n                        </span>\n                      </div>\n                      {item.value && (\n                        <span className=\"font-mono font-medium tabular-nums text-foreground\">\n                          {item.value.toLocaleString()}\n                        </span>\n                      )}\n                    </div>\n                  </>\n                )}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  }\n);\nChartTooltipContent.displayName = \"ChartTooltip\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<\"div\"> &\n    Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n      hideIcon?: boolean;\n      nameKey?: string;\n    }\n>(\n  (\n    { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n    ref\n  ) => {\n    const { config } = useChart();\n\n    if (!payload?.length) {\n      return null;\n    }\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          \"flex items-center justify-center gap-4\",\n          verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n          className\n        )}\n      >\n        {payload.map((item) => {\n          const key = `${nameKey || item.dataKey || \"value\"}`;\n          const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n          return (\n            <div\n              key={item.value}\n              className={cn(\n                \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n              )}\n            >\n              {itemConfig?.icon && !hideIcon ? (\n                <itemConfig.icon />\n              ) : (\n                <div\n                  className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n                  style={{\n                    backgroundColor: item.color,\n                  }}\n                />\n              )}\n              {itemConfig?.label}\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n);\nChartLegendContent.displayName = \"ChartLegend\";\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n  config: ChartConfig,\n  payload: unknown,\n  key: string\n) {\n  if (typeof payload !== \"object\" || payload === null) {\n    return undefined;\n  }\n\n  const payloadPayload =\n    \"payload\" in payload &&\n    typeof payload.payload === \"object\" &&\n    payload.payload !== null\n      ? payload.payload\n      : undefined;\n\n  let configLabelKey: string = key;\n\n  if (\n    key in payload &&\n    typeof payload[key as keyof typeof payload] === \"string\"\n  ) {\n    configLabelKey = payload[key as keyof typeof payload] as string;\n  } else if (\n    payloadPayload &&\n    key in payloadPayload &&\n    typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n  ) {\n    configLabelKey = payloadPayload[\n      key as keyof typeof payloadPayload\n    ] as string;\n  }\n\n  return configLabelKey in config\n    ? config[configLabelKey]\n    : config[key as keyof typeof config];\n}\n\nexport {\n  ChartContainer,\n  ChartTooltip,\n  ChartTooltipContent,\n  ChartLegend,\n  ChartLegendContent,\n  ChartStyle,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/command.tsx",
    "content": "import type { DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Dialog, DialogContent } from \"components/ui/dialog\";\nimport { cn } from \"lib/utils\";\n\nconst Command = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n  <CommandPrimitive\n    ref={ref}\n    className={cn(\n      \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n      className\n    )}\n    {...props}\n  />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n  return (\n    <Dialog {...props}>\n      <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n        <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n          {children}\n        </Command>\n      </DialogContent>\n    </Dialog>\n  );\n};\n\nconst CommandInput = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.Input>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n  <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n    <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n    <CommandPrimitive.Input\n      ref={ref}\n      className={cn(\n        \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <CommandPrimitive.List\n    ref={ref}\n    className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n    {...props}\n  />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.Empty>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n  <CommandPrimitive.Empty\n    ref={ref}\n    className=\"py-6 text-center text-sm\"\n    {...props}\n  />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.Group>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n  <CommandPrimitive.Group\n    ref={ref}\n    className={cn(\n      \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n      className\n    )}\n    {...props}\n  />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <CommandPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 h-px bg-border\", className)}\n    {...props}\n  />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n  React.ElementRef<typeof CommandPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n  <CommandPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n  return (\n    <span\n      className={cn(\n        \"ml-auto text-xs tracking-widest text-muted-foreground\",\n        className\n      )}\n      {...props}\n    />\n  );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/dialog.tsx",
    "content": "import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Overlay>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Overlay\n    ref={ref}\n    className={cn(\n      \"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n      className\n    )}\n    {...props}\n  />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n  <DialogPortal>\n    <DialogOverlay />\n    <DialogPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n        <X className=\"h-4 w-4\" />\n        <span className=\"sr-only\">Close</span>\n      </DialogPrimitive.Close>\n    </DialogPrimitive.Content>\n  </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col space-y-1.5 text-center sm:text-left\",\n      className\n    )}\n    {...props}\n  />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n  <div\n    className={cn(\n      \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n      className\n    )}\n    {...props}\n  />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Title>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Title\n    ref={ref}\n    className={cn(\n      \"text-lg font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n  React.ElementRef<typeof DialogPrimitive.Description>,\n  React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n  <DialogPrimitive.Description\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  DialogClose,\n  DialogTrigger,\n  DialogContent,\n  DialogHeader,\n  DialogFooter,\n  DialogTitle,\n  DialogDescription,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/environment-badge.tsx",
    "content": "import { getEnvironmentStyle } from \"lib/environment-styles\";\nimport { cn } from \"lib/utils\";\n\ninterface EnvironmentBadgeProps {\n  name: string;\n  className?: string;\n  size?: \"sm\" | \"default\" | \"lg\";\n}\n\nexport function EnvironmentBadge({\n  name,\n  className,\n  size = \"default\",\n}: EnvironmentBadgeProps) {\n  const style = getEnvironmentStyle(name);\n\n  return (\n    <div\n      className={cn(\n        \"inline-flex items-center gap-2 rounded-md\",\n        size === \"sm\" && \"px-2 py-0.5 text-xs\",\n        size === \"default\" && \"px-3 py-1 text-sm\",\n        size === \"lg\" && \"px-4 py-1.5 text-base\",\n        style.bg,\n        style.border,\n        className\n      )}\n    >\n      <div\n        className={cn(\n          \"rounded-full\",\n          size === \"sm\" && \"h-1.5 w-1.5\",\n          size === \"default\" && \"h-2 w-2\",\n          size === \"lg\" && \"h-2.5 w-2.5\",\n          style.icon\n        )}\n      />\n      <span className={cn(\"font-medium\", style.text)}>{name}</span>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/components/ui/input.tsx",
    "content": "import * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nexport interface InputProps\n  extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n  ({ className, type, ...props }, ref) => {\n    return (\n      <input\n        type={type}\n        className={cn(\n          \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n          className\n        )}\n        ref={ref}\n        {...props}\n      />\n    );\n  }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"
  },
  {
    "path": "apps/web/src/components/ui/label.tsx",
    "content": "import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst labelVariants = cva(\n  \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n);\n\nconst Label = React.forwardRef<\n  React.ElementRef<typeof LabelPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n    VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n  <LabelPrimitive.Root\n    ref={ref}\n    className={cn(labelVariants(), className)}\n    {...props}\n  />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n"
  },
  {
    "path": "apps/web/src/components/ui/navigation-menu.tsx",
    "content": "import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst NavigationMenu = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Root\n    ref={ref}\n    className={cn(\n      \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <NavigationMenuViewport />\n  </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.List\n    ref={ref}\n    className={cn(\n      \"group flex flex-1 list-none items-center justify-center space-x-1\",\n      className\n    )}\n    {...props}\n  />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n  \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-primary-background-hover hover:text-primary-foreground focus:bg-primary-background-hover focus:text-primary-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-primary-background-hover data-[state=open]:bg-primary-background-hover\"\n);\n\nconst NavigationMenuTrigger = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <NavigationMenuPrimitive.Trigger\n    ref={ref}\n    className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n    {...props}\n  >\n    {children}{\" \"}\n    <ChevronDown\n      className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n      aria-hidden=\"true\"\n    />\n  </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto \",\n      className\n    )}\n    {...props}\n  />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n  <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n    <NavigationMenuPrimitive.Viewport\n      className={cn(\n        \"origin-top-center bg-primary-background relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border text-primary-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  </div>\n));\nNavigationMenuViewport.displayName =\n  NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = React.forwardRef<\n  React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n  React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n  <NavigationMenuPrimitive.Indicator\n    ref={ref}\n    className={cn(\n      \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n      className\n    )}\n    {...props}\n  >\n    <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n  </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName =\n  NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n  navigationMenuTriggerStyle,\n  NavigationMenu,\n  NavigationMenuList,\n  NavigationMenuItem,\n  NavigationMenuContent,\n  NavigationMenuTrigger,\n  NavigationMenuLink,\n  NavigationMenuIndicator,\n  NavigationMenuViewport,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/popover.tsx",
    "content": "import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n  React.ElementRef<typeof PopoverPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n  <PopoverPrimitive.Portal>\n    <PopoverPrimitive.Content\n      ref={ref}\n      align={align}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        className\n      )}\n      {...props}\n    />\n  </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n"
  },
  {
    "path": "apps/web/src/components/ui/radio-group.tsx",
    "content": "\"use client\";\n\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst RadioGroup = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Root\n      className={cn(\"grid gap-2\", className)}\n      {...props}\n      ref={ref}\n    />\n  );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, children, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n        <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"
  },
  {
    "path": "apps/web/src/components/ui/select.tsx",
    "content": "import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n      className\n    )}\n    {...props}\n  >\n    {children}\n    <SelectPrimitive.Icon asChild>\n      <ChevronDown className=\"h-4 w-4 opacity-50\" />\n    </SelectPrimitive.Icon>\n  </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronUp className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <ChevronDown className=\"h-4 w-4\" />\n  </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n  SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n  <SelectPrimitive.Portal>\n    <SelectPrimitive.Content\n      ref={ref}\n      className={cn(\n        \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        position === \"popper\" &&\n          \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n        className\n      )}\n      position={position}\n      {...props}\n    >\n      <SelectScrollUpButton />\n      <SelectPrimitive.Viewport\n        className={cn(\n          \"p-1\",\n          position === \"popper\" &&\n            \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n        )}\n      >\n        {children}\n      </SelectPrimitive.Viewport>\n      <SelectScrollDownButton />\n    </SelectPrimitive.Content>\n  </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n    {...props}\n  />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n  <SelectPrimitive.Item\n    ref={ref}\n    className={cn(\n      \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n      className\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <SelectPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </SelectPrimitive.ItemIndicator>\n    </span>\n\n    <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n  </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n    {...props}\n  />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/switch.tsx",
    "content": "\"use client\";\n\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Switch = React.forwardRef<\n  React.ElementRef<typeof SwitchPrimitives.Root>,\n  React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n  <SwitchPrimitives.Root\n    className={cn(\n      \"peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-slate-900 data-[state=unchecked]:bg-slate-200 dark:focus:ring-slate-400 dark:focus:ring-offset-slate-900 dark:data-[state=checked]:bg-pink-600 dark:data-[state=unchecked]:bg-gray-400\",\n      className\n    )}\n    {...props}\n    ref={ref}\n  >\n    <SwitchPrimitives.Thumb\n      className={cn(\n        \"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n      )}\n    />\n  </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"
  },
  {
    "path": "apps/web/src/components/ui/table.tsx",
    "content": "import * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Table = React.forwardRef<\n  HTMLTableElement,\n  React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n  <div className=\"relative w-full overflow-auto\">\n    <table\n      ref={ref}\n      className={cn(\"w-full caption-bottom text-sm\", className)}\n      {...props}\n    />\n  </div>\n));\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tbody\n    ref={ref}\n    className={cn(\"[&_tr:last-child]:border-0\", className)}\n    {...props}\n  />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n  HTMLTableSectionElement,\n  React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n  <tfoot\n    ref={ref}\n    className={cn(\n      \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n      className\n    )}\n    {...props}\n  />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n  HTMLTableRowElement,\n  React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n  <tr\n    ref={ref}\n    className={cn(\n      \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n      className\n    )}\n    {...props}\n  />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n  HTMLTableCellElement,\n  React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <th\n    ref={ref}\n    className={cn(\n      \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n      className\n    )}\n    {...props}\n  />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n  HTMLTableCellElement,\n  React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n  <td\n    ref={ref}\n    className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n    {...props}\n  />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n  HTMLTableCaptionElement,\n  React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n  <caption\n    ref={ref}\n    className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n};\n"
  },
  {
    "path": "apps/web/src/components/ui/tabs.tsx",
    "content": "import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.List>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.List\n    ref={ref}\n    className={cn(\n      \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Trigger\n    ref={ref}\n    className={cn(\n      \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n  React.ElementRef<typeof TabsPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n  <TabsPrimitive.Content\n    ref={ref}\n    className={cn(\n      \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n      className\n    )}\n    {...props}\n  />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"
  },
  {
    "path": "apps/web/src/components/ui/tooltip.tsx",
    "content": "\"use client\";\n\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\n\nimport { cn } from \"lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Portal>\n    <TooltipPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n        className\n      )}\n      {...props}\n    />\n  </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"
  },
  {
    "path": "apps/web/src/env/client.mjs",
    "content": "// @ts-check\nimport { clientEnv, clientSchema } from \"./schema.mjs\";\n\nconst _clientEnv = clientSchema.safeParse(clientEnv);\n\nexport const formatErrors = (\n  /** @type {import('zod').ZodFormattedError<Map<string,string>,string>} */\n  errors\n) =>\n  Object.entries(errors)\n    .map(([name, value]) => {\n      if (value && \"_errors\" in value)\n        return `${name}: ${value._errors.join(\", \")}\\n`;\n    })\n    .filter(Boolean);\n\nif (!_clientEnv.success) {\n  console.error(\n    \"❌ Invalid environment variables:\\n\",\n    ...formatErrors(_clientEnv.error.format())\n  );\n  throw new Error(\"Invalid environment variables\");\n}\n\nfor (const key of Object.keys(_clientEnv.data)) {\n  if (!key.startsWith(\"NEXT_PUBLIC_\")) {\n    console.warn(\n      `❌ Invalid public environment variable name: ${key}. It must begin with 'NEXT_PUBLIC_'`\n    );\n\n    throw new Error(\"Invalid public environment variable name\");\n  }\n}\n\nexport const env = _clientEnv.data;\n"
  },
  {
    "path": "apps/web/src/env/schema.mjs",
    "content": "// @ts-check\nimport { z } from \"zod\";\n\n/**\n * Specify your server-side environment variables schema here.\n * This way you can ensure the app isn't built with invalid env vars.\n */\nexport const serverSchema = z.object({\n  DATABASE_URL: z.string().url(),\n  NODE_ENV: z.enum([\"development\", \"test\", \"production\"]),\n  NEXTAUTH_SECRET:\n    process.env.NODE_ENV === \"production\"\n      ? z.string().min(1)\n      : z.string().min(1).optional(),\n  NEXTAUTH_URL: z.preprocess(\n    // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL\n    // Since NextAuth.js automatically uses the VERCEL_URL if present.\n    (str) => process.env.VERCEL_URL ?? str,\n    // VERCEL_URL doesn't include `https` so it cant be validated as a URL\n    process.env.VERCEL ? z.string() : z.string().url()\n  ),\n  GITHUB_ID: z.string().min(1),\n  GITHUB_SECRET: z.string().min(1),\n  STRIPE_WEBHOOK_SECRET: z.string().min(1),\n  STRIPE_SECRET_KEY: z.string().min(1),\n  EMAIL_SERVER: z.string().url(),\n  LOGSNAG_API_KEY: z.string().min(1),\n  REDIS_URL: z.string().url(),\n  ABBY_FROM_EMAIL: z.string().email(),\n  GITHUB_OAUTH_TOKEN: z.string().optional(),\n  GOOGLE_CLIENT_ID: z.string().optional(),\n  GOOGLE_CLIENT_SECRET: z.string().optional(),\n  HASHING_SECRET: z.string().min(1),\n  ENABLE_GITHUB_APP: z.boolean().optional(),\n  GITHUB_APP_ID: z.string().optional(),\n  GITHUB_APP_PRIVATE_KEY: z\n    .string()\n    .optional()\n    .transform((s) =>\n      s ? Buffer.from(s, \"base64\").toString(\"ascii\") : undefined\n    ),\n  GITHUB_APP_WEBHOOK_SECRET: z.string().optional(),\n  OPENAI_API_KEY: z.string().optional(),\n  OPENPANEL_CLIENT_SECRET: z.string().optional(),\n});\n\n/**\n * Specify your client-side environment variables schema here.\n * This way you can ensure the app isn't built with invalid env vars.\n * To expose them to the client, prefix them with `NEXT_PUBLIC_`.\n */\nexport const clientSchema = z.object({\n  NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: z.string().min(1),\n  // NEXT_PUBLIC_CLIENTVAR: z.string(),\n  NEXT_PUBLIC_DISABLE_ANALYTICS: z.boolean(),\n  NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID: z.string().min(1),\n  NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID: z.string().min(1),\n  NEXT_PUBLIC_ABBY_PROJECT_ID: z.string().min(1),\n  NEXT_PUBLIC_PLAUSIBLE_DOMAIN: z.string().optional(),\n  NEXT_PUBLIC_OPENPANEL_CLIENT_ID: z.string().optional(),\n});\n\n/**\n * You can't destruct `process.env` as a regular object, so you have to do\n * it manually here. This is because Next.js evaluates this at build time,\n * and only used environment variables are included in the build.\n * @type {{ [k in keyof z.infer<typeof clientSchema>]: z.infer<typeof clientSchema>[k] | undefined }}\n */\nexport const clientEnv = {\n  // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,\n  NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:\n    process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,\n  NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID:\n    process.env.NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID,\n  NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID:\n    process.env.NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID,\n  NEXT_PUBLIC_DISABLE_ANALYTICS: Boolean(\n    process.env.NEXT_PUBLIC_DISABLE_ANALYTICS\n  ),\n  NEXT_PUBLIC_ABBY_PROJECT_ID: process.env.NEXT_PUBLIC_ABBY_PROJECT_ID,\n  NEXT_PUBLIC_PLAUSIBLE_DOMAIN: process.env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN,\n};\n"
  },
  {
    "path": "apps/web/src/env/server.mjs",
    "content": "import { env as clientEnv, formatErrors } from \"./client.mjs\";\n// @ts-check\n/**\n * This file is included in `/next.config.mjs` which ensures the app isn't built with invalid env vars.\n * It has to be a `.mjs`-file to be imported there.\n */\nimport { serverSchema } from \"./schema.mjs\";\n\nconst _serverEnv = serverSchema.safeParse(process.env);\n\nif (!_serverEnv.success) {\n  console.error(\n    \"❌ Invalid environment variables:\\n\",\n    ...formatErrors(_serverEnv.error.format())\n  );\n  throw new Error(\"Invalid environment variables\");\n}\n\nfor (const key of Object.keys(_serverEnv.data)) {\n  if (key.startsWith(\"NEXT_PUBLIC_\")) {\n    console.warn(\"❌ You are exposing a server-side env-variable:\", key);\n\n    throw new Error(\"You are exposing a server-side env-variable\");\n  }\n}\n\nexport const env = { ..._serverEnv.data, ...clientEnv };\n"
  },
  {
    "path": "apps/web/src/instrumentation.ts",
    "content": "export async function register() {\n  if (process.env.NEXT_RUNTIME === \"nodejs\") {\n    console.log(\"Registering workers...\");\n\n    const workers = await Promise.all([\n      import(\"server/queue/AfterDataRequest\"),\n      import(\"server/queue/event\"),\n    ]);\n\n    if (process.env.NEXT_RUNTIME === \"nodejs\") {\n      await import(\"../sentry.server.config\");\n    }\n\n    // biome-ignore lint/suspicious/noExplicitAny: typings are off\n    if (process.env.NEXT_RUNTIME === (\"edge\" as any)) {\n      await import(\"../sentry.edge.config\");\n    }\n\n    const gracefulShutdown = async (signal: string) => {\n      console.log(`Received ${signal}, closing server...`);\n      await Promise.all(workers.map((w) => w.default.close()));\n      // Other asynchronous closings\n      process.exit(0);\n    };\n\n    process.on(\"SIGINT\", () => gracefulShutdown(\"SIGINT\"));\n\n    process.on(\"SIGTERM\", () => gracefulShutdown(\"SIGTERM\"));\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/abby.tsx",
    "content": "import abbyDevtools from \"@tryabby/devtools\";\nimport { createAbby } from \"@tryabby/next\";\nimport abbyConfig from \"../../abby.config\";\n\nexport const {\n  useAbby,\n  AbbyProvider,\n  useFeatureFlag,\n  withAbby,\n  getFeatureFlagValue,\n  withDevtools,\n  withAbbyEdge,\n  getABTestValue,\n  withAbbyApiHandler,\n  getABResetFunction,\n  updateUserProperties,\n} = createAbby(abbyConfig);\n\nexport const AbbyDevtools = withDevtools(abbyDevtools, {});\n"
  },
  {
    "path": "apps/web/src/lib/environment-styles.ts",
    "content": "export const ENVIRONMENT_COLORS = {\n  development: {\n    bg: \"bg-emerald-500/10\",\n    text: \"text-emerald-600\",\n    border: \"border-emerald-500/20\",\n    icon: \"bg-emerald-500\",\n  },\n  staging: {\n    bg: \"bg-amber-500/10\",\n    text: \"text-amber-600\",\n    border: \"border-amber-500/20\",\n    icon: \"bg-amber-500\",\n  },\n  production: {\n    bg: \"bg-blue-500/10\",\n    text: \"text-blue-600\",\n    border: \"border-blue-500/20\",\n    icon: \"bg-blue-500\",\n  },\n  default: {\n    bg: \"bg-teal-500/10\",\n    text: \"text-gray-300\",\n    border: \"border-gray-500/20\",\n    icon: \"bg-gray-500\",\n  },\n};\n\nexport const getEnvironmentStyle = (environmentName: string) => {\n  const name = environmentName.toLowerCase();\n  if (name.includes(\"dev\") || name.includes(\"development\")) {\n    return ENVIRONMENT_COLORS.development;\n  }\n  if (name.includes(\"staging\") || name.includes(\"test\")) {\n    return ENVIRONMENT_COLORS.staging;\n  }\n  if (name.includes(\"prod\") || name.includes(\"production\")) {\n    return ENVIRONMENT_COLORS.production;\n  }\n  return ENVIRONMENT_COLORS.default;\n};\n"
  },
  {
    "path": "apps/web/src/lib/events.ts",
    "content": "import dayjs from \"dayjs\";\nexport enum TIME_INTERVAL {\n  DAY = \"day\",\n  ALL_TIME = \"all\",\n  LAST_30_DAYS = \"30d\",\n}\n\nexport const INTERVALS = [\n  {\n    label: \"Today\",\n    value: TIME_INTERVAL.DAY,\n  },\n  // {\n  //   label: \"Last 7 days\",\n  //   value: \"7d\",\n  // },\n  {\n    label: \"Last 30 days\",\n    value: TIME_INTERVAL.LAST_30_DAYS,\n  },\n  // {\n  //   label: \"Year to Date\",\n  //   value: SpecialTimeInterval.MONTH_TO_DATE,\n  // },\n  // {\n  //   label: \"Last 12 months\",\n  //   value: \"12mo\",\n  // },\n  {\n    label: \"All Time\",\n    value: TIME_INTERVAL.ALL_TIME,\n  },\n] as const;\n\nexport function isValidInterval(interval: string): interval is TIME_INTERVAL {\n  return INTERVALS.map((i) => i.value).includes(interval as TIME_INTERVAL);\n}\n\nexport function isSpecialTimeInterval(\n  timeInterval: string\n): timeInterval is TIME_INTERVAL {\n  return Object.values(TIME_INTERVAL).includes(timeInterval as TIME_INTERVAL);\n}\n\nexport function getFormattingByInterval(interval: string) {\n  switch (interval) {\n    case TIME_INTERVAL.DAY: {\n      return \"HH:mm\";\n    }\n    case TIME_INTERVAL.LAST_30_DAYS: {\n      return \"DD MMM\";\n    }\n    case TIME_INTERVAL.ALL_TIME: {\n      return \"MMM YY\";\n    }\n    default: {\n      return \"DD MMM\";\n    }\n  }\n}\n\nexport function getBaseEventsByInterval(\n  interval: string,\n  variants: string[],\n  firstEventDate: Date\n) {\n  const variantData = variants.reduce(\n    (acc, variant) => {\n      acc[variant] = {\n        totalEventCount: 0,\n        uniqueEventCount: 0,\n      };\n      return acc;\n    },\n    {} as Record<\n      string,\n      {\n        totalEventCount: number;\n        uniqueEventCount: number;\n      }\n    >\n  );\n  switch (interval) {\n    case TIME_INTERVAL.DAY: {\n      const baseData = dayjs().startOf(\"day\");\n      return [0, 3, 6, 9, 12, 15, 18, 21].map((hour) => ({\n        date: baseData.set(\"hour\", hour).toISOString(),\n        ...variantData,\n      }));\n    }\n    case \"30d\": {\n      return Array.from({ length: 30 }, (_, i) => ({\n        date: dayjs().subtract(i, \"day\").startOf(\"day\").toISOString(),\n        ...variantData,\n      })).toReversed();\n    }\n    case TIME_INTERVAL.ALL_TIME: {\n      const diff = dayjs().diff(dayjs(firstEventDate), \"month\");\n\n      return Array.from({ length: Math.max(diff, 6) }, (_, i) => ({\n        date: dayjs(firstEventDate)\n          .add(i, \"month\")\n          .startOf(\"day\")\n          .toISOString(),\n        ...variantData,\n      })).toReversed();\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/flags.ts",
    "content": "import { type FeatureFlag, FeatureFlagType } from \"@prisma/client\";\nimport {\n  DEFAULT_FEATURE_FLAG_VALUE,\n  type RemoteConfigValue,\n  type RemoteConfigValueString,\n  assertUnreachable,\n  getDefaultRemoteConfigValue,\n  stringifyRemoteConfigValue,\n} from \"@tryabby/core\";\nimport { groupBy } from \"lodash-es\";\nimport type { FlagValueString } from \"../types/flags\";\n\nexport function getFlagCount(flags: Array<FeatureFlag>) {\n  return Object.keys(groupBy(flags, (f) => f.name)).length;\n}\n\n/**\n * Helper function to transform a string value of a flag to the correct type\n */\nexport function transformFlagValue(value: string, type: FeatureFlagType) {\n  switch (type) {\n    case FeatureFlagType.BOOLEAN:\n      return value === \"true\";\n    case FeatureFlagType.NUMBER:\n      return Number.parseInt(value);\n    case FeatureFlagType.JSON:\n      return JSON.parse(value);\n    case FeatureFlagType.STRING:\n      return value;\n    default:\n      assertUnreachable(type);\n  }\n}\n\nexport function stringifyFlagValue(value: RemoteConfigValue | boolean): string {\n  if (typeof value === \"boolean\") {\n    return value.toString();\n  }\n\n  return stringifyRemoteConfigValue(value);\n}\n\nexport function getDefaultFlagValue(type: RemoteConfigValueString | \"Boolean\") {\n  switch (type) {\n    case \"JSON\":\n    case \"String\":\n    case \"Number\":\n      return getDefaultRemoteConfigValue(type);\n    case \"Boolean\":\n      return DEFAULT_FEATURE_FLAG_VALUE;\n  }\n}\n\nexport function getFlagTypeClassName(type: FeatureFlagType) {\n  switch (type) {\n    case FeatureFlagType.BOOLEAN:\n      return \"text-orange-400 border-orange-400\";\n    case FeatureFlagType.NUMBER:\n      return \"text-blue-400 border-blue-400\";\n    case FeatureFlagType.STRING:\n      return \"text-green-400 border-green-400\";\n    case FeatureFlagType.JSON:\n      return \"text-purple-400 border-purple-400\";\n    default: {\n      assertUnreachable(type);\n    }\n  }\n}\n\nexport function transformDBFlagTypeToclient(\n  type: FeatureFlagType\n): FlagValueString {\n  switch (type) {\n    case FeatureFlagType.BOOLEAN:\n      return \"Boolean\";\n    case FeatureFlagType.NUMBER:\n      return \"Number\";\n    case FeatureFlagType.STRING:\n      return \"String\";\n    case FeatureFlagType.JSON:\n      return \"JSON\";\n    default:\n      assertUnreachable(type);\n  }\n}\n\nexport function transformClientFlagToDBType(\n  type: FlagValueString\n): FeatureFlagType {\n  switch (type) {\n    case \"Boolean\":\n      return FeatureFlagType.BOOLEAN;\n    case \"Number\":\n      return FeatureFlagType.NUMBER;\n    case \"String\":\n      return FeatureFlagType.STRING;\n    case \"JSON\":\n      return FeatureFlagType.JSON;\n    default:\n      assertUnreachable(type);\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/graphs.ts",
    "content": "import colors from \"tailwindcss/colors\";\n\nconst forbiddenColors: Array<keyof typeof colors> = [\n  \"slate\",\n  \"gray\",\n  \"zinc\",\n  \"neutral\",\n  \"stone\",\n  \"black\",\n  \"blueGray\",\n  \"coolGray\",\n  \"warmGray\",\n  \"current\",\n  \"inherit\",\n  \"transparent\",\n];\n\nconst COLORS = Object.keys(colors)\n  .flatMap((key) => {\n    const currentColor = key as keyof typeof colors;\n    if (forbiddenColors.includes(currentColor)) return [];\n    return colors[currentColor][300];\n  })\n  .filter(Boolean);\n\nexport function getColorByIndex(index: number) {\n  return COLORS[index % COLORS.length];\n}\n"
  },
  {
    "path": "apps/web/src/lib/helper.ts",
    "content": "export const getUpdatedWeights = ({\n  indexToUpdate,\n  newWeight,\n  weights,\n}: {\n  indexToUpdate: number;\n  newWeight: number;\n  weights: number[];\n}) => {\n  if (\n    indexToUpdate < 0 ||\n    indexToUpdate > weights.length - 1 ||\n    newWeight < 0 ||\n    newWeight > 100\n  ) {\n    return weights;\n  }\n\n  if (weights.length > 2) {\n    const updatedWeights = [...weights];\n    updatedWeights[indexToUpdate] = newWeight;\n    return updatedWeights;\n  }\n\n  const maxValue = 100;\n  const remaining = maxValue - newWeight;\n\n  return (\n    weights\n      .map((v, i) => {\n        if (i === indexToUpdate) return newWeight;\n        const oldRemaining = maxValue - (weights.at(indexToUpdate) || 0);\n        if (oldRemaining) return (remaining * v) / oldRemaining;\n        return remaining / (weights.length - 1);\n      })\n      // round values to nearest 0.5\n      .map((weight) => Math.round(weight * 2) / 2)\n  );\n};\n\n// biome-ignore lint/suspicious/noExplicitAny:>\nexport const groupBy = <T, K extends keyof any>(arr: T[], key: (i: T) => K) =>\n  arr.reduce(\n    (groups, item) => {\n      // biome-ignore lint/suspicious/noAssignInExpressions:>\n      (groups[key(item)] ||= []).push(item);\n      return groups;\n    },\n    {} as Record<K, T[]>\n  );\n"
  },
  {
    "path": "apps/web/src/lib/hooks/useProjectId.ts",
    "content": "import { useUnsafeQueryParam } from \"./useQueryParam\";\n\nexport function useProjectId() {\n  return useUnsafeQueryParam(\"projectId\");\n}\n"
  },
  {
    "path": "apps/web/src/lib/hooks/useQueryParam.ts",
    "content": "import { useRouter } from \"next/router\";\n\nexport function useQueryParam<T extends string = string>(param: string) {\n  const router = useRouter();\n  const query = router.query;\n  const queryParam = query[param];\n  return (Array.isArray(queryParam) ? queryParam[0] : queryParam) as\n    | T\n    | undefined;\n}\n\nexport function useUnsafeQueryParam<T extends string = string>(param: string) {\n  return useQueryParam<T>(param) as T;\n}\n"
  },
  {
    "path": "apps/web/src/lib/logsnag.ts",
    "content": "import { env } from \"env/server.mjs\";\nimport { LogSnag } from \"logsnag\";\nimport type { PlanName } from \"server/common/plans\";\n\nconst logsnag = new LogSnag({\n  token: env.LOGSNAG_API_KEY,\n  project: \"abby\",\n});\n\nexport function trackSignup() {\n  if (process.env.NODE_ENV !== \"production\") return;\n  return logsnag.publish({\n    channel: \"user-register\",\n    event: \"user-register\",\n    icon: \"👋\",\n    notify: true,\n  });\n}\n\nexport function trackPlanOverage(\n  projectId: string,\n  plan: PlanName | undefined,\n  is80Percent?: boolean\n) {\n  if (process.env.NODE_ENV !== \"production\") return;\n  return logsnag.publish({\n    channel: \"plan-overrage\",\n    event: is80Percent ? \"Limit reached\" : \"80% reached\",\n    icon: \"⚠️\",\n    tags: {\n      plan: plan ?? \"HOBBY\",\n      projectId,\n    },\n    notify: true,\n  });\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/abap.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"abap\", \"ABAP\"],\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~A\",\n  \"name\": \"abap\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.abap\"\n        }\n      },\n      \"match\": \"^\\\\*.*\\\\n?\",\n      \"name\": \"comment.line.full.abap\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.abap\"\n        }\n      },\n      \"match\": \"\\\".*\\\\n?\",\n      \"name\": \"comment.line.partial.abap\"\n    },\n    {\n      \"match\": \"(?<![^\\\\s])##.*?(?=([\\\\.:,\\\\s]))\",\n      \"name\": \"comment.line.pragma.abap\"\n    },\n    {\n      \"match\": \"(?i)(?<=(?:^|\\\\s|~|->|-|=>))([a-z_/][a-z_0-9/]*)(?=\\\\s+(?:=|\\\\+=|-=|\\\\*=|\\\\/=|&&=)\\\\s+)\",\n      \"name\": \"variable.other.abap\"\n    },\n    {\n      \"match\": \"\\\\b[0-9]+(\\\\b|\\\\.|,)\",\n      \"name\": \"constant.numeric.abap\"\n    },\n    {\n      \"match\": \"(?ix)(^|\\\\s+)((PUBLIC|PRIVATE|PROTECTED)\\\\sSECTION)(?=\\\\s+|:|\\\\.)\",\n      \"name\": \"storage.modifier.class.abap\"\n    },\n    {\n      \"begin\": \"(?<!\\\\\\\\)(\\\\|)(.*?)\",\n      \"end\": \"(?<!\\\\\\\\)(\\\\||(\\\\\\\\\\\\\\\\\\\\|))\",\n      \"name\": \"string.interpolated.abap\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.abap\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.abap\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"({ )|( })\",\n          \"name\": \"constant.character.escape\"\n        },\n        {\n          \"match\": \"(?<={ ).*?(?= })\",\n          \"name\": \"variable.other.abap\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\|\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"end\": \"`\",\n      \"name\": \"string.quoted.single.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"``\",\n          \"name\": \"constant.character.escape.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)^\\\\s*(class)\\\\s([a-z_/][a-z_0-9/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.block.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"name\": \"meta.block.begin.implementation.abap\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(^|\\\\s+)(definition|implementation|public|inheriting\\\\s+from|final|deferred|abstract|shared\\\\s+memory\\\\s+enabled|(global|local)*\\\\s*friends|(create\\\\s+(public|protected|private))|for\\\\s+testing|risk\\\\s+level\\\\s+(critical|dangerous|harmless))|duration\\\\s(short|medium|long)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.class.abap\"\n        },\n        {\n          \"begin\": \"(?=[A-Za-z_][A-Za-z0-9_]*)\",\n          \"contentName\": \"entity.name.type.block.abap\",\n          \"end\": \"(?![A-Za-z0-9_])\",\n          \"patterns\": [\n            {\n              \"include\": \"#generic_names\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(method)\\\\s(?:([a-z_\\\\/][a-z_0-9\\\\/]*)~)?([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(BY\\\\s+DATABASE(\\\\s+PROCEDURE|\\\\s+FUNCTION|\\\\s+GRAPH\\\\s+WORKSPACE))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(FOR\\\\s+(HDB|LLANG))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=\\\\s)(OPTIONS\\\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\\\s+SYNTAX\\\\s+ERRORS))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(LANGUAGE\\\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        },\n        {\n          \"match\": \"(?ix)(?<=\\\\s)(USING)\\\\s+([a-z_\\\\/][a-z_0-9\\\\/=\\\\>]*)+(?=\\\\s+|\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.method.abap\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?=[A-Za-z_][A-Za-z0-9_]*)\",\n          \"end\": \"(?![A-Za-z0-9_])\",\n          \"patterns\": [\n            {\n              \"include\": \"#generic_names\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(INTERFACE)\\\\s([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(DEFERRED|PUBLIC)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.method.abap\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)^\\\\s*(FORM)\\\\s([a-z_\\\\/][a-z_0-9\\\\/]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.block.abap\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.abap\"\n        }\n      },\n      \"end\": \"\\\\s*\\\\.\\\\s*\\\\n?\",\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)(?<=^|\\\\s)(USING|TABLES|CHANGING|RAISING)(?=\\\\s+|\\\\.)\",\n          \"name\": \"storage.modifier.form.abap\"\n        },\n        {\n          \"include\": \"#abaptypes\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i)(endclass|endmethod|endform|endinterface)\",\n      \"name\": \"storage.type.block.end.abap\"\n    },\n    {\n      \"match\": \"(?i)(<[A-Za-z_][A-Za-z0-9_]*>)\",\n      \"name\": \"variable.other.field.symbol.abap\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#abap_constants\"\n    },\n    {\n      \"include\": \"#reserved_names\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#builtin_functions\"\n    },\n    {\n      \"include\": \"#abaptypes\"\n    },\n    {\n      \"include\": \"#system_fields\"\n    }\n  ],\n  \"repository\": {\n    \"abap_constants\": {\n      \"match\": \"(?ix)(?<=\\\\s)(initial|null|space|abap_true|abap_false|table_line)(?=\\\\s|\\\\.|,)\",\n      \"name\": \"constant.language.abap\"\n    },\n    \"reserved_names\": {\n      \"match\": \"(?ix)(?<=\\\\s)(me|super)(?=\\\\s|\\\\.|,|->)\",\n      \"name\": \"constant.language.abap\"\n    },\n    \"abaptypes\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?ix)\\\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|c|n|i|p|f|d|t|x)(?=\\\\s|\\\\.|,)\",\n          \"name\": \"support.type.abap\"\n        },\n        {\n          \"match\": \"(?ix)\\\\s(TYPE|REF|TO|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=\\\\s|\\\\.|,)\",\n          \"name\": \"keyword.control.simple.abap\"\n        }\n      ]\n    },\n    \"arithmetic_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(\\\\+|\\\\-|\\\\*|\\\\*\\\\*|/|%|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"comparison_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(<|>|<\\\\=|>\\\\=|\\\\=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|o|z|m)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"control_keywords\": {\n      \"match\": \"(?ix)(^|\\\\s)(\\n\\t        at|case|catch|continue|do|elseif|else|endat|endcase|enddo|endif|\\n\\t        endloop|endon|if|loop|on|raise|try)(?=\\\\s|\\\\.|:)\",\n      \"name\": \"keyword.control.flow.abap\"\n    },\n    \"generic_names\": {\n      \"match\": \"[A-Za-z_][A-Za-z0-9_]*\"\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"include\": \"#main_keywords\"\n        },\n        {\n          \"include\": \"#text_symbols\"\n        },\n        {\n          \"include\": \"#control_keywords\"\n        },\n        {\n          \"include\": \"#keywords_followed_by_braces\"\n        }\n      ]\n    },\n    \"logical_operator\": {\n      \"match\": \"(?i)(?<=\\\\s)(not|or|and)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"system_fields\": {\n      \"match\": \"(?ix)\\\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=\\\\.|\\\\s)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.language.abap\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.abap\"\n        }\n      }\n    },\n    \"main_keywords\": {\n      \"match\": \"(?ix)(?<=^|\\\\s)(\\n\\t        abstract|access|add|add-corresponding|adjacent|alias|aliases|all|amdp|append|appending|ascending|as|assert|assign|assigned|assigning|association|authority-check|\\n\\t        back|badi|base|begin|between|binary|blanks|block|bound|break-point|by|by\\\\s+database|byte|\\n\\t        call|calling|cast|casting|cds\\\\s+session|changing|check|checkbox|class-data|class-events|class-method|class-methods|class-pool|cleanup|clear|client|clients|close|cnt|collect|commit|comment|cond|character|\\n\\t        corresponding|communication|comparing|component|components|compute|concatenate|condense|constants|conv|count|\\n\\t        controls|convert|create|currency|current|\\n\\t        data|database|ddl|decimals|default|define|deferred|delete|descending|describe|destination|detail|display|divide|divide-corresponding|display-mode|distinct|duplicates|\\n\\t        deleting|\\n\\t        editor-call|empty|end|endenhancement|endexec|endfunction|ending|endmodule|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|exit-command|extension|\\n\\t        endprovide|endselect|entries|endtry|endwhile|enhancement|enum|event|events|excluding|exec|exit|export|\\n\\t        exporting|extract|exception|exceptions|\\n\\t        field-symbols|field-groups|field|first|fetch|fields|format|frame|free|from|function|find|for|found|function-pool|\\n\\t        generate|get|group|\\n\\t        handle|handler|hide|hashed|header|help-request|\\n\\t        include|import|importing|index|infotypes|initial|initialization|\\n\\t\\tid|implemented|ignoring|is|in|inner|interface|interfaces|interface-pool|intervals|init|input|insert|instance|into|\\n\\t\\tjoin|\\n\\t\\tkey|\\n\\t        language|language\\\\s+graph|language\\\\s+sql|left-justified|leave|let|like|line|lines|line-count|line-size|listbox|list-processing|load|local|log-point|length|left|leading|lower|\\n\\t        matchcode|memory|method|mesh|message|message-id|methods|mode|modify|module|move|move-corresponding|multiply|multiply-corresponding|match|modif|\\n\\t\\tnew|new-line|new-page|new-section|next|no|no-display|no-gap|no-gaps|no-sign|no-zero|non-unique|number|\\n\\t        occurrence|object|obligatory|of|order|output|overlay|optional|others|occurrences|occurs|offset|options|\\n\\t        pack|parameter|parameters|partially|perform|pf-status|places|position|preferred|primary|print-control|private|privileged|program|protected|provide|public|pushbutton|put|\\n\\t        radiobutton\\\\s+group|raising|range|ranges|receive|receiving|redefinition|reduce|reference|refresh|regex|reject|results|requested|\\n\\t        ref|replace|report|required|reserve|respecting|restore|result\\\\s+xml|result\\\\s+\\\\(|return|returning|right|right-justified|rollback|read|read-only|rp-provide-from-last|run|\\n\\t        scan|screen|scroll|search|select|select-options|selection-screen|set|stamp|state|source|subkey|\\n\\t        seconds|selection-table|separated|set|shift|single|skip|sort|sorted|split|stable|standard|stamp|starting|start-of-selection|sum|subscreen|subtract-corresponding|statics|step|stop|structure|submatches|submit|subtract|summary|supplied|suppress|section|syntax-check|syntax-trace|system-call|switch|\\n\\t        tabbed|tables|table|task|testing|test-seam|test-injection|textpool|then|time|times|title|titlebar|to|top-of-page|trailing|transaction|transfer|transformation|translate|transporting|types|type|type-pool|type-pools|\\n\\t        unassign|unique|uline|union|unpack|until|update|upper|using|user-command|\\n\\t        value|value-request|visible|\\n\\t        wait|when|while|window|write|where|with|work|workspace|\\n\\t\\txml)(?=\\\\s|\\\\.|:|,)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"text_symbols\": {\n      \"match\": \"(?ix)(?<=^|\\\\s)(text)-([A-Z0-9]{1,3})(?=\\\\s|\\\\.|:|,)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.simple.abap\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.abap\"\n        }\n      }\n    },\n    \"keywords_followed_by_braces\": {\n      \"match\": \"(?ix)\\\\b(data|value|field-symbol)\\\\((<?[a-z_\\\\/][a-z_0-9\\\\/]*>?)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.simple.abap\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.abap\"\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#other_operator\"\n        },\n        {\n          \"include\": \"#arithmetic_operator\"\n        },\n        {\n          \"include\": \"#comparison_operator\"\n        },\n        {\n          \"include\": \"#logical_operator\"\n        }\n      ]\n    },\n    \"other_operator\": {\n      \"match\": \"(?<=\\\\s)(&&|\\\\?=|\\\\+=|-=|\\\\/=|\\\\*=|&&=)(?=\\\\s)\",\n      \"name\": \"keyword.control.simple.abap\"\n    },\n    \"builtin_functions\": {\n      \"match\": \"(?ix)(?<=\\\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\\\()\",\n      \"name\": \"entity.name.function.builtin.abap\"\n    }\n  },\n  \"scopeName\": \"source.abap\",\n  \"uuid\": \"0357FFB4-EFFF-4DE9-8371-B0F9C8DF1B21\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/actionscript-3.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"as\"],\n  \"name\": \"actionscript-3\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#package\"\n    },\n    {\n      \"include\": \"#class\"\n    },\n    {\n      \"include\": \"#interface\"\n    },\n    {\n      \"include\": \"#namespace_declaration\"\n    },\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#mxml\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#regexp\"\n    },\n    {\n      \"include\": \"#variable_declaration\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#primitive_types\"\n    },\n    {\n      \"include\": \"#primitive_error_types\"\n    },\n    {\n      \"include\": \"#dynamic_type\"\n    },\n    {\n      \"include\": \"#primitive_functions\"\n    },\n    {\n      \"include\": \"#language_constants\"\n    },\n    {\n      \"include\": \"#language_variables\"\n    },\n    {\n      \"include\": \"#guess_type\"\n    },\n    {\n      \"include\": \"#guess_constant\"\n    },\n    {\n      \"include\": \"#other_operators\"\n    },\n    {\n      \"include\": \"#arithmetic_operators\"\n    },\n    {\n      \"include\": \"#logical_operators\"\n    },\n    {\n      \"include\": \"#array_access_operators\"\n    },\n    {\n      \"include\": \"#vector_creation_operators\"\n    },\n    {\n      \"include\": \"#control_keywords\"\n    },\n    {\n      \"include\": \"#other_keywords\"\n    },\n    {\n      \"include\": \"#use_namespace\"\n    },\n    {\n      \"include\": \"#functions\"\n    }\n  ],\n  \"repository\": {\n    \"arithmetic_operators\": {\n      \"match\": \"(\\\\+|\\\\-|/|%|(?<!:)\\\\*)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"array_access_operators\": {\n      \"match\": \"(\\\\[|\\\\])\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"class\": {\n      \"begin\": \"(?x) (^|\\\\s+|;) (\\\\b(dynamic|final|abstract)\\\\b\\\\s+)? (\\\\b(internal|public)\\\\b\\\\s+)? (\\\\b(dynamic|final|abstract)\\\\b\\\\s+)? (?=\\\\bclass\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.class.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#class_declaration\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#object_literal\"\n        }\n      ]\n    },\n    \"namespace_declaration\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) ((\\\\w+)\\\\s+)? (namespace) \\\\s+ (?:[A-Za-z0-9_\\\\$]+)\",\n      \"name\": \"meta.namespace_declaration.actionscript.3\"\n    },\n    \"class_declaration\": {\n      \"begin\": \"(?x) \\\\b(class)\\\\b \\\\s+ ([\\\\.\\\\w]+|\\\\*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.class.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.class_declaration.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#extends\"\n        },\n        {\n          \"include\": \"#implements\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"code_block\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.code_block.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#code_block\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#logical_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#control_keywords\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#import\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.actionscript.3\",\n          \"patterns\": [\n            {\n              \"match\": \"@(copy|default|eventType|example|exampleText|includeExample|inheritDoc|internal|param|private|return|see|since|throws)\\\\b\",\n              \"name\": \"keyword.other.documentation.actionscript.3.asdoc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.actionscript.3\"\n        },\n        {\n          \"match\": \"//.*\",\n          \"name\": \"comment.line.actionscript.3\"\n        }\n      ]\n    },\n    \"control_keywords\": {\n      \"match\": \"\\\\b(if|else|do|while|for|each|continue|return|switch|case|default|break|try|catch|finally|throw)\\\\b\",\n      \"name\": \"keyword.control.actionscript.3\"\n    },\n    \"dynamic_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(?<=:)\\\\s*(\\\\*)\"\n    },\n    \"escapes\": {\n      \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n      \"name\": \"constant.character.escape.actionscript.3\"\n    },\n    \"extends\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) \\\\b(extends)\\\\b \\\\s+ ([\\\\.\\\\w]+) \\\\s* (?:, \\\\s* ([\\\\.\\\\w]+))* \\\\s*\",\n      \"name\": \"meta.extends.actionscript.3\"\n    },\n    \"function_arguments\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.function_arguments.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"begin\": \"(\\\\.\\\\.\\\\.)?\\\\s*([A-Za-z\\\\_\\\\$][A-Za-z0-9_\\\\$]*)(?:\\\\s*(\\\\:)\\\\s*(?:(?:([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)(?:\\\\.<([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)>)?)|(\\\\*)))?(?:\\\\s*(=))?\",\n      \"end\": \",|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"6\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"begin\": \"(?x) \\\\b(function)\\\\b (?:\\\\s+\\\\b(get|set)\\\\b\\\\s+)? \\\\s* ([a-zA-Z0-9_\\\\$]+\\\\b)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.actionscript.3\"\n        }\n      },\n      \"end\": \"($|;|(?=\\\\{))\",\n      \"name\": \"meta.function.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_arguments\"\n        },\n        {\n          \"include\": \"#return_type\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"guess_constant\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.actionscript.3\"\n        }\n      },\n      \"comment\": \"Following convention, let's guess that anything in all caps/digits (possible underscores) is a constant.\",\n      \"match\": \"\\\\b([A-Z\\\\$][A-Z0-9_]+)\\\\b\"\n    },\n    \"guess_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"comment\": \"Following convention, let's guess that any word starting with one or more capital letters (that contains at least some lower-case letters so that constants aren't detected) refers to a class/type. May be fully-qualified.\",\n      \"match\": \"\\\\b((?:[A-Za-z0-9_\\\\$]+\\\\.)*[A-Z][A-Z0-9]*[a-z]+[A-Za-z0-9_\\\\$]*)\\\\b\"\n    },\n    \"implements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) \\\\b(implements)\\\\b \\\\s+ ([\\\\.\\\\w]+) \\\\s* (?:, \\\\s* ([\\\\.\\\\w]+))* \\\\s*\",\n      \"name\": \"meta.implements.actionscript.3\"\n    },\n    \"import\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.control.import.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) (^|\\\\s+|;) \\\\b(import)\\\\b \\\\s+ ([A-Za-z0-9\\\\$_\\\\.]+(?:\\\\.\\\\*)?) \\\\s* (?=;|$)\",\n      \"name\": \"meta.import.actionscript.3\"\n    },\n    \"interface\": {\n      \"begin\": \"(?x) (^|\\\\s+|;) (\\\\b(internal|public)\\\\b\\\\s+)? (?=\\\\binterface\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.interface.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_declaration\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"interface_declaration\": {\n      \"begin\": \"(?x) \\\\b(interface)\\\\b \\\\s+ ([\\\\.\\\\w]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.class.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.class_declaration.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#extends\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"language_constants\": {\n      \"match\": \"\\\\b(true|false|null|Infinity|-Infinity|NaN|undefined)\\\\b\",\n      \"name\": \"constant.language.actionscript.3\"\n    },\n    \"language_variables\": {\n      \"match\": \"\\\\b(super|this|arguments)\\\\b\",\n      \"name\": \"variable.language.actionscript.3\"\n    },\n    \"logical_operators\": {\n      \"match\": \"(&|<|~|\\\\||>|\\\\^|!|\\\\?)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"metadata_info\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.actionscript.3\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.actionscript.3\"\n            }\n          },\n          \"match\": \"(\\\\w+)\\\\s*(=)\"\n        }\n      ]\n    },\n    \"method\": {\n      \"begin\": \"(?x) (^|\\\\s+) ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? ((\\\\w+)\\\\s+)? (?=\\\\bfunction\\\\b)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"5\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"8\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"end\": \"(?<=(;|\\\\}))\",\n      \"name\": \"meta.method.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#code_block\"\n        }\n      ]\n    },\n    \"mxml\": {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"end\": \"\\\\]\\\\]>\",\n      \"name\": \"meta.cdata.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#namespace_declaration\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#class_declaration\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#other_keywords\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#other_operators\"\n        },\n        {\n          \"include\": \"#arithmetic_operators\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.actionscript.3\"\n    },\n    \"object_literal\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.object_literal.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#object_literal\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#primitive_types\"\n        },\n        {\n          \"include\": \"#primitive_error_types\"\n        },\n        {\n          \"include\": \"#dynamic_type\"\n        },\n        {\n          \"include\": \"#primitive_functions\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#language_variables\"\n        },\n        {\n          \"include\": \"#guess_type\"\n        },\n        {\n          \"include\": \"#guess_constant\"\n        },\n        {\n          \"include\": \"#array_access_operators\"\n        },\n        {\n          \"include\": \"#vector_creation_operators\"\n        },\n        {\n          \"include\": \"#functions\"\n        }\n      ]\n    },\n    \"other_keywords\": {\n      \"match\": \"\\\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\\\b\",\n      \"name\": \"keyword.other.actionscript.3\"\n    },\n    \"other_operators\": {\n      \"match\": \"(\\\\.|=)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    },\n    \"package\": {\n      \"begin\": \"(^|\\\\s+)(package)\\\\b\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.package.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#package_name\"\n        },\n        {\n          \"include\": \"#variable_declaration\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#return_type\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#use_namespace\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#metadata\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#interface\"\n        },\n        {\n          \"include\": \"#namespace_declaration\"\n        }\n      ]\n    },\n    \"package_name\": {\n      \"begin\": \"(?<=package)\\\\s+([\\\\w\\\\._]*)\\\\b\",\n      \"end\": \"\\\\{\",\n      \"name\": \"meta.package_name.actionscript.3\"\n    },\n    \"primitive_types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.builtin.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\\\*(?<=a))\\\\b\"\n    },\n    \"primitive_error_types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.error.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\\\b\"\n    },\n    \"primitive_functions\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.actionscript.3\"\n        }\n      },\n      \"match\": \"\\\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\\\s*\\\\()\"\n    },\n    \"regexp\": {\n      \"begin\": \"(?<=[=(:,\\\\[]|^|return|&&|\\\\|\\\\||!)\\\\s*(/)(?![/*+{}?])\",\n      \"end\": \"$|(/)[igm]*\",\n      \"name\": \"string.regex.actionscript.3\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.actionscript.3\"\n        },\n        {\n          \"match\": \"\\\\[(\\\\\\\\\\\\]|[^\\\\]])*\\\\]\",\n          \"name\": \"constant.character.class.actionscript.3\"\n        }\n      ]\n    },\n    \"return_type\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        },\n        \"2\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"support.type.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"support.type.actionscript.3\"\n        }\n      },\n      \"match\": \"(\\\\:)\\\\s*(?:([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)(?:\\\\.<([A-Za-z\\\\$][A-Za-z0-9_\\\\$]+(?:\\\\.[A-Za-z\\\\$][A-Za-z0-9_\\\\$]+)*)>)?)|(\\\\*)\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.actionscript.3\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.actionscript.3\",\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"metadata\": {\n      \"begin\": \"\\\\[\\\\s*\\\\b(\\\\w+)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.metadata_info.actionscript.3\",\n      \"patterns\": [\n        {\n          \"include\": \"#metadata_info\"\n        }\n      ]\n    },\n    \"use_namespace\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) (^|\\\\s+|;) (use\\\\s+)? (namespace) \\\\s+ (\\\\w+) \\\\s* (;|$)\"\n    },\n    \"variable_declaration\": {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"6\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"7\": {\n          \"name\": \"storage.modifier.actionscript.3\"\n        },\n        \"8\": {\n          \"name\": \"keyword.operator.actionscript.3\"\n        }\n      },\n      \"match\": \"(?x) ((static)\\\\s+)? ((\\\\w+)\\\\s+)? ((static)\\\\s+)? (const|var) \\\\s+ (?:[A-Za-z0-9_\\\\$]+)(?:\\\\s*(:))?\",\n      \"name\": \"meta.variable_declaration.actionscript.3\"\n    },\n    \"vector_creation_operators\": {\n      \"match\": \"(<|>)\",\n      \"name\": \"keyword.operator.actionscript.3\"\n    }\n  },\n  \"scopeName\": \"source.actionscript.3\",\n  \"uuid\": \"aa6f75ba-ab10-466e-8c6f-28c69aca1e9d\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ada.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"ada\",\n  \"patterns\": [\n    {\n      \"include\": \"#library_unit\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#use_clause\"\n    },\n    {\n      \"include\": \"#with_clause\"\n    },\n    {\n      \"include\": \"#pragma\"\n    },\n    {\n      \"include\": \"#keyword\"\n    }\n  ],\n  \"repository\": {\n    \"abort_statement\": {\n      \"name\": \"meta.statement.abort.ada\",\n      \"begin\": \"(?i)\\\\babort\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"entity.name.task.ada\",\n          \"match\": \"\\\\b(\\\\w|\\\\d|\\\\.|_)+\\\\b\"\n        }\n      ]\n    },\n    \"accept_statement\": {\n      \"name\": \"meta.statement.accept.ada\",\n      \"begin\": \"(?i)\\\\b(accept)\\\\s+((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.accept.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.accept.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bdo\\\\b\",\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter_profile\"\n        }\n      ]\n    },\n    \"access_definition\": {\n      \"name\": \"meta.declaration.access.definition.ada\",\n      \"match\": \"(?i)(not\\\\s+null\\\\s+)?(access)\\\\s+(constant\\\\s+)?((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.ada\"\n        }\n      }\n    },\n    \"access_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.access.ada\",\n      \"begin\": \"(?i)\\\\b(not\\\\s+null\\\\s+)?(access)\\\\b\",\n      \"end\": \"(?i)(?=(with|;))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.visibility.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\ball\\\\b\"\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\bconstant\\\\b\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"actual_parameter_part\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#parameter_association\"\n        }\n      ]\n    },\n    \"adding_operator\": {\n      \"name\": \"keyword.operator.adding.ada\",\n      \"match\": \"(\\\\+|-|\\\\&)\"\n    },\n    \"array_aggregate\": {\n      \"name\": \"meta.definition.array.aggregate.ada\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#positional_array_aggregate\"\n        },\n        {\n          \"include\": \"#array_component_association\"\n        }\n      ]\n    },\n    \"array_component_association\": {\n      \"name\": \"meta.definition.array.aggregate.component.ada\",\n      \"match\": \"(?i)\\\\b([^(=>)]*)\\\\s*(=>)\\\\s*([^,\\\\)]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.name.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.ada\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.modifier.unknown.ada\",\n              \"match\": \"<>\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      }\n    },\n    \"array_dimensions\": {\n      \"name\": \"meta.declaration.type.definition.array.dimensions.ada\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\brange\\\\b\"\n        },\n        {\n          \"name\": \"keyword.modifier.unknown.ada\",\n          \"match\": \"<>\"\n        },\n        {\n          \"name\": \"keyword.ada\",\n          \"match\": \"\\\\.\\\\.\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"patterns\": [\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"array_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.array.ada\",\n      \"begin\": \"(?i)\\\\barray\\\\b\",\n      \"end\": \"(?i)(?=(with|;))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#array_dimensions\"\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\bof\\\\b\"\n        },\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\baliased\\\\b\"\n        },\n        {\n          \"include\": \"#access_definition\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"aspect_clause\": {\n      \"name\": \"meta.aspect.clause.ada\",\n      \"begin\": \"(?i)\\\\b(for)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"5\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\buse\\\\b\",\n          \"end\": \"(?=;)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#record_representation_clause\"\n            },\n            {\n              \"include\": \"#array_aggregate\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<=for)\",\n          \"end\": \"(?i)(?=use)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"((?:\\\\w|\\\\d|_)+)('((?:\\\\w|\\\\d|_)+))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#subtype_mark\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"aspect_definition\": {\n      \"name\": \"meta.aspect.definition.ada\",\n      \"begin\": \"=>\",\n      \"end\": \"(?i)(?=(,|;|\\\\bis\\\\b))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"aspect_mark\": {\n      \"name\": \"meta.aspect.mark.ada\",\n      \"match\": \"(?i)\\\\b((?:\\\\w|\\\\d|\\\\.|_)+)(?:(')(class))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.ada\"\n        }\n      }\n    },\n    \"aspect_specification\": {\n      \"name\": \"meta.aspect.specification.ada\",\n      \"begin\": \"(?i)\\\\bwith\\\\b\",\n      \"end\": \"(?i)(?=(;|\\\\bis\\\\b))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(null)\\\\s+(record)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)\\\\brecord\\\\b\",\n          \"end\": \"(?i)\\\\b(end)\\\\s+(record)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.ada\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#component_item\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\bprivate\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"storage.visibility.ada\"\n            }\n          }\n        },\n        {\n          \"include\": \"#aspect_definition\"\n        },\n        {\n          \"include\": \"#aspect_mark\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"assignment_statement\": {\n      \"name\": \"meta.statement.assignment.ada\",\n      \"begin\": \"\\\\b((?:\\\\w|\\\\d|\\\\.|_|\\\\(|\\\\)|\\\"|'|\\\\s)+)\\\\s*(:=)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?:\\\\w|\\\\d|\\\\.|_)+)\",\n              \"name\": \"variable.name.ada\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.new.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"name\": \"meta.attribute.ada\",\n      \"match\": \"(')((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.ada\"\n        }\n      }\n    },\n    \"based_literal\": {\n      \"name\": \"constant.numeric.ada\",\n      \"match\": \"(?i)(\\\\d(?:(_)?\\\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([eE](?:\\\\+|\\\\-)?\\\\d(?:_?\\\\d)*)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.base.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.radix-point.ada\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"6\": {\n          \"name\": \"constant.numeric.base.ada\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#exponent_part\"\n            }\n          ]\n        }\n      }\n    },\n    \"basic_declarative_item\": {\n      \"patterns\": [\n        {\n          \"include\": \"#basic_declaration\"\n        },\n        {\n          \"include\": \"#aspect_clause\"\n        },\n        {\n          \"include\": \"#use_clause\"\n        },\n        {\n          \"include\": \"#keyword\"\n        }\n      ]\n    },\n    \"basic_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type_declaration\"\n        },\n        {\n          \"include\": \"#subtype_declaration\"\n        },\n        {\n          \"include\": \"#exception_declaration\"\n        },\n        {\n          \"include\": \"#object_declaration\"\n        },\n        {\n          \"include\": \"#single_protected_declaration\"\n        },\n        {\n          \"include\": \"#single_task_declaration\"\n        },\n        {\n          \"include\": \"#subprogram_specification\"\n        },\n        {\n          \"include\": \"#package_declaration\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"block_statement\": {\n      \"name\": \"meta.statement.block.ada\",\n      \"begin\": \"(?i)\\\\bdeclare\\\\b\",\n      \"end\": \"(?i)\\\\b(end)(\\\\s+(?:\\\\w|\\\\d|_)+)?\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.label.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<=declare)\",\n          \"end\": \"(?i)\\\\bbegin\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#body\"\n            },\n            {\n              \"include\": \"#basic_declarative_item\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<=begin)\",\n          \"end\": \"(?i)(?=end)\",\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        }\n      ]\n    },\n    \"body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#subprogram_body\"\n        },\n        {\n          \"include\": \"#package_body\"\n        },\n        {\n          \"include\": \"#task_body\"\n        },\n        {\n          \"include\": \"#protected_body\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"name\": \"meta.statement.case.ada\",\n      \"begin\": \"(?i)\\\\bcase\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(case)\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<=case)\\\\b\",\n          \"end\": \"(?i)\\\\bis\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.statement.case.alternative.ada\",\n          \"begin\": \"(?i)\\\\bwhen\\\\b\",\n          \"end\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"keyword.modifier.unknown.ada\",\n              \"match\": \"(?i)\\\\bothers\\\\b\"\n            },\n            {\n              \"name\": \"punctuation.ada\",\n              \"match\": \"\\\\|\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"character_literal\": {\n      \"name\": \"string.quoted.single.ada\",\n      \"match\": \"'.'\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.definition.string.ada\",\n              \"match\": \"'\"\n            }\n          ]\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment-section\"\n        },\n        {\n          \"include\": \"#comment-doc\"\n        },\n        {\n          \"include\": \"#comment-line\"\n        }\n      ]\n    },\n    \"comment-doc\": {\n      \"name\": \"comment.block.documentation.ada\",\n      \"match\": \"(--)\\\\s*(@)(\\\\w+)\\\\s+(.*)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.line.double-dash.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.ada\"\n        },\n        \"4\": {\n          \"name\": \"comment.line.double-dash.ada\"\n        }\n      }\n    },\n    \"comment-line\": {\n      \"name\": \"comment.line.double-dash.ada\",\n      \"match\": \"--.*$\"\n    },\n    \"comment-section\": {\n      \"name\": \"comment.line.double-dash.ada\",\n      \"match\": \"--\\\\s*([^-].*?[^-])\\\\s*--\\\\s*$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.section.ada\"\n        }\n      }\n    },\n    \"component_clause\": {\n      \"name\": \"meta.aspect.clause.record.representation.component.ada\",\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.name.ada\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bat\\\\b\",\n          \"end\": \"(?i)\\\\b(?=range)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#range_constraint\"\n        }\n      ]\n    },\n    \"component_declaration\": {\n      \"name\": \"meta.declaration.type.definition.record.component.ada\",\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+(?:\\\\s*,\\\\s*(?:\\\\w|\\\\d|_)+)?)\\\\s*(:)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.ada\",\n              \"match\": \",\"\n            },\n            {\n              \"name\": \"variable.name.ada\",\n              \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.operator.new.ada\",\n              \"match\": \":=\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#component_definition\"\n        }\n      ]\n    },\n    \"component_definition\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\baliased\\\\b\"\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\brange\\\\b\"\n        },\n        {\n          \"name\": \"keyword.ada\",\n          \"match\": \"\\\\.\\\\.\"\n        },\n        {\n          \"include\": \"#access_definition\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"component_item\": {\n      \"patterns\": [\n        {\n          \"include\": \"#component_declaration\"\n        },\n        {\n          \"include\": \"#variant_part\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#aspect_clause\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(null)\\\\s*(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.ada\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.ada\"\n            }\n          }\n        }\n      ]\n    },\n    \"composite_constraint\": {\n      \"name\": \"meta.declaration.constraint.composite.ada\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"keyword.ada\",\n          \"match\": \"\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+)\\\\s*(=>)\\\\s*([^,\\\\)])+\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.name.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ada\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"decimal_literal\": {\n      \"name\": \"constant.numeric.ada\",\n      \"match\": \"\\\\d(?:(_)?\\\\d)*(?:(\\\\.)\\\\d(?:(_)?\\\\d)*)?([eE](?:\\\\+|\\\\-)?\\\\d(?:_?\\\\d)*)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.radix-point.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#exponent_part\"\n            }\n          ]\n        }\n      }\n    },\n    \"declarative_item\": {\n      \"patterns\": [\n        {\n          \"include\": \"#body\"\n        },\n        {\n          \"include\": \"#basic_declarative_item\"\n        }\n      ]\n    },\n    \"delay_statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#delay_until_statement\"\n        },\n        {\n          \"include\": \"#delay_relative_statement\"\n        }\n      ]\n    },\n    \"delay_until_statement\": {\n      \"name\": \"meta.statement.delay.until.ada\",\n      \"begin\": \"(?i)\\\\b(delay)\\\\s+(until)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"delay_relative_statement\": {\n      \"begin\": \"(?i)\\\\b(delay)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"derived_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.derived.ada\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bnew\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"end\": \"(?i)(?=(\\\\bwith\\\\b|;))\",\n          \"patterns\": [\n            {\n              \"name\": \"storage.modifier.ada\",\n              \"match\": \"(?i)\\\\band\\\\b\"\n            },\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\b(abstract|and|limited|tagged)\\\\b\"\n        },\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\bprivate\\\\b\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"discriminant_specification\": {\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+(?:\\\\s*,\\\\s*(?:\\\\w|\\\\d|_)+)?)\\\\s*(:)\",\n      \"end\": \"(?=(;|\\\\)))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.ada\",\n              \"match\": \",\"\n            },\n            {\n              \"name\": \"variable.name.ada\",\n              \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \":=\",\n          \"end\": \"(?=(;|\\\\)))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.new.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(not\\\\s+null\\\\s+)?((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.visibility.ada\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#subtype_mark\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#access_definition\"\n        }\n      ]\n    },\n    \"entry_body\": {\n      \"begin\": \"(?i)\\\\b(entry)\\\\s+((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s*(\\\\s\\\\2)\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.entry.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.entry.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)\\\\b(?=begin)\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#declarative_item\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\bwhen\\\\b\",\n          \"end\": \"(?i)\\\\b(?=is)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter_profile\"\n        }\n      ]\n    },\n    \"entry_declaration\": {\n      \"begin\": \"(?i)\\\\b(?:(not)?\\\\s+(overriding)\\\\s+)?(entry)\\\\s+((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"3\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.entry.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter_profile\"\n        }\n      ]\n    },\n    \"enumeration_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.enumeration.ada\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"variable.name.ada\",\n          \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"exception_declaration\": {\n      \"name\": \"meta.declaration.exception.ada\",\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+(?:\\\\s*,\\\\s*(?:\\\\w|\\\\d|_)+)?)\\\\s*(:)\\\\s*(exception)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.ada\",\n              \"match\": \",\"\n            },\n            {\n              \"name\": \"entity.name.exception.ada\",\n              \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.ada\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(renames)\\\\s+((\\\\w|\\\\d|_|\\\\.)+)\",\n          \"name\": \"entity.name.exception.ada\"\n        }\n      ]\n    },\n    \"exit_statement\": {\n      \"name\": \"meta.statement.exit.ada\",\n      \"begin\": \"(?i)\\\\bexit\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bwhen\\\\b\",\n          \"end\": \"(?=;)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:\\\\w|\\\\d|_)+\",\n          \"name\": \"entity.name.label.ada\"\n        }\n      ]\n    },\n    \"exponent_part\": {\n      \"match\": \"([eE])(\\\\+|\\\\-)?\\\\d(?:(_)?\\\\d)*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.exponent-mark.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.unary.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      }\n    },\n    \"expression\": {\n      \"name\": \"meta.expression.ada\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\bnull\\\\b\",\n          \"name\": \"constant.language.ada\"\n        },\n        {\n          \"match\": \"=>(\\\\+)?\",\n          \"name\": \"keyword.other.ada\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.ada\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"keyword.ada\"\n        },\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(and|or|xor)\\\\b\",\n          \"name\": \"keyword.ada\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(if|then|else|elsif|in|for|(?<!\\\\.)all|some|\\\\.\\\\.|delta|with)\\\\b\",\n          \"name\": \"keyword.ada\"\n        }\n      ]\n    },\n    \"for_loop_statement\": {\n      \"name\": \"meta.statement.loop.for.ada\",\n      \"begin\": \"(?i)\\\\bfor\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+(?:\\\\w|\\\\d|_)+)?\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.ada\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<=for)\",\n          \"end\": \"(?i)\\\\bloop\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+)\\\\s+(in)(\\\\s+reverse)?\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.name.ada\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.ada\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.ada\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+)(?:\\\\s*(:)\\\\s*((?:\\\\w|\\\\d|\\\\.|_)+))?\\\\s+(of)(\\\\s+reverse)?\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.name.ada\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.ada\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#subtype_mark\"\n                    }\n                  ]\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.ada\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.control.ada\"\n                }\n              }\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"full_type_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#task_type_declaration\"\n        },\n        {\n          \"include\": \"#regular_type_declaration\"\n        }\n      ]\n    },\n    \"function_body\": {\n      \"name\": \"meta.declaration.function.body.ada\",\n      \"begin\": \"(?i)\\\\b(overriding\\\\s+)?(function)\\\\s+(?:((?:\\\\w|\\\\d|\\\\.|_)+\\\\b)|(\\\".+\\\"))\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s+(\\\\3|\\\\4)\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.ada\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#string_literal\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"end\": \"(?i)(?=end)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#handled_sequence_of_statements\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        },\n        {\n          \"include\": \"#result_profile\"\n        },\n        {\n          \"include\": \"#subprogram_renaming_declaration\"\n        },\n        {\n          \"include\": \"#parameter_profile\"\n        },\n        {\n          \"name\": \"meta.function.body.spec_part.ada\",\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)(?=(with|begin|;))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.declaration.package.generic.ada\",\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.new.ada\"\n                }\n              },\n              \"end\": \"(?=;)\",\n              \"patterns\": [\n                {\n                  \"match\": \"((?:\\\\w|\\\\d|\\\\.|_)+)\",\n                  \"name\": \"entity.name.function.ada\"\n                },\n                {\n                  \"include\": \"#actual_parameter_part\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.declaration.function.abstract.ada\",\n              \"match\": \"(?i)\\\\babstract\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"storage.modifier.ada\"\n                }\n              }\n            },\n            {\n              \"include\": \"#declarative_item\"\n            },\n            {\n              \"include\": \"#subprogram_renaming_declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_specification\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function_body\"\n        }\n      ]\n    },\n    \"goto_statement\": {\n      \"name\": \"meta.statement.goto.ada\",\n      \"begin\": \"(?i)\\\\bgoto\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.goto.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [{}]\n    },\n    \"guard\": {\n      \"begin\": \"(?i)\\\\bwhen\\\\b\",\n      \"end\": \"=>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"handled_sequence_of_statements\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.handler.exception.ada\",\n          \"begin\": \"(?i)\\\\bexception\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\bwhen\\\\b\",\n              \"end\": \"=>\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.other.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b((?:\\\\w|\\\\d|\\\\.|_)+)\\\\s*(:)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.name.ada\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.ada\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.ada\"\n                },\n                {\n                  \"match\": \"(?i)\\\\bothers\\\\b\",\n                  \"name\": \"keyword.ada\"\n                },\n                {\n                  \"match\": \"(?:\\\\w|\\\\d|\\\\.|_)+\",\n                  \"name\": \"entity.name.exception.ada\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"highest_precedence_operator\": {\n      \"name\": \"keyword.operator.highest-precedence.ada\",\n      \"match\": \"(?i)(\\\\*\\\\*|\\\\babs\\\\b|\\\\bnot\\\\b)\"\n    },\n    \"if_statement\": {\n      \"name\": \"meta.statement.if.ada\",\n      \"begin\": \"(?i)\\\\bif\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(if)\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\belsif\\\\b\",\n          \"end\": \"(?i)(?:(?<!\\\\sand)\\\\s+(?=then))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\belse\\\\b\",\n          \"end\": \"(?i)(?=end)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<=if)\\\\b\",\n          \"end\": \"(?i)(?:(?<!\\\\sand)\\\\s+(?=then))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\bthen\\\\b\",\n          \"end\": \"(?i)(?=(elsif|else|end))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        }\n      ]\n    },\n    \"integer_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.integer.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#signed_integer_type_definition\"\n        },\n        {\n          \"include\": \"#modular_type_definition\"\n        }\n      ]\n    },\n    \"interface_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.interface.ada\",\n      \"begin\": \"(?i)\\\\b(?:(limited|task|protected|synchronized)\\\\s+)?(interface)\",\n      \"end\": \"(?i)(?=(with|;))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\band\\\\b\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.ada\",\n          \"match\": \"(?i)\\\\b(abort|abs|accept|all|and|at|begin|body|declare|delay|end|entry|exception|function|generic|in|is|mod|new|not|null|of|or|others|out|package|pragma|procedure|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|then|type|use|when|with|xor)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.ada\",\n          \"match\": \"(?i)\\\\b(case|do|else|elsif|exit|for|goto|if|loop|raise|return|terminate|until|while)\\\\b\"\n        },\n        {\n          \"name\": \"storage.modifier.ada\",\n          \"match\": \"(?i)\\\\b(abstract|access|aliased|array|constant|delta|digits|interface|limited|protected|synchronized|tagged|task)\\\\b\"\n        },\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\b(private|overriding)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.modifier.unknown.ada\",\n          \"match\": \"<>\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.ada\",\n          \"match\": \"(\\\\+|-|\\\\*|/)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ada\",\n          \"match\": \":=\"\n        },\n        {\n          \"name\": \"keyword.operator.logic.ada\",\n          \"match\": \"(=|/=|<|>|<=|>=)\"\n        },\n        {\n          \"name\": \"keyword.operator.concatenation.ada\",\n          \"match\": \"\\\\&\"\n        }\n      ]\n    },\n    \"known_discriminant_part\": {\n      \"name\": \"meta.declaration.type.discriminant.ada\",\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \";\"\n        },\n        {\n          \"include\": \"#discriminant_specification\"\n        }\n      ]\n    },\n    \"label\": {\n      \"name\": \"meta.label.ada\",\n      \"match\": \"(<<)?((?:\\\\w|\\\\d|_)+)\\\\s*(:[^=]|>>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.label.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.label.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.label.ada\"\n        }\n      }\n    },\n    \"library_unit\": {\n      \"name\": \"meta.library.unit.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#package_body\"\n        },\n        {\n          \"include\": \"#package_specification\"\n        },\n        {\n          \"include\": \"#subprogram_body\"\n        }\n      ]\n    },\n    \"loop_statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#simple_loop_statement\"\n        },\n        {\n          \"include\": \"#while_loop_statement\"\n        },\n        {\n          \"include\": \"#for_loop_statement\"\n        }\n      ]\n    },\n    \"modular_type_definition\": {\n      \"begin\": \"(?i)\\\\b(mod)\\\\b\",\n      \"end\": \"(?i)(?=(with|;))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.modifier.unknown.ada\",\n          \"match\": \"<>\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"multiplying_operator\": {\n      \"name\": \"keyword.operator.multiplying.ada\",\n      \"match\": \"(?i)(\\\\*|/|\\\\bmod\\\\b|\\\\brem\\\\b)\"\n    },\n    \"null_statement\": {\n      \"name\": \"meta.statement.null.ada\",\n      \"match\": \"(?i)\\\\b(null)\\\\s*(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        }\n      }\n    },\n    \"object_declaration\": {\n      \"name\": \"meta.declaration.object.ada\",\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_)+(?:\\\\s*,\\\\s*(?:\\\\w|\\\\d|_)+)*)\\\\s*(:)\",\n      \"end\": \"(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.ada\",\n              \"match\": \",\"\n            },\n            {\n              \"name\": \"variable.name.ada\",\n              \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=:)\",\n          \"end\": \"(?:(?=;)|(:=)|(\\\\brenames\\\\b))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"storage.modifier.ada\",\n              \"match\": \"(?i)\\\\bconstant\\\\b\"\n            },\n            {\n              \"name\": \"storage.visibility.ada\",\n              \"match\": \"(?i)\\\\baliased\\\\b\"\n            },\n            {\n              \"include\": \"#aspect_specification\"\n            },\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=:=)\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#aspect_specification\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=renames)\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#aspect_specification\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#highest_precedence_operator\"\n        },\n        {\n          \"include\": \"#multiplying_operator\"\n        },\n        {\n          \"include\": \"#adding_operator\"\n        },\n        {\n          \"include\": \"#relational_operator\"\n        },\n        {\n          \"include\": \"#logical_operator\"\n        }\n      ]\n    },\n    \"package_body\": {\n      \"name\": \"meta.declaration.package.body.ada\",\n      \"begin\": \"(?i)\\\\b(package)\\\\s+(body)\\\\s+((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(\\\\3)\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#package_mark\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#package_mark\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#handled_sequence_of_statements\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)(?=(\\\\bbegin\\\\b|\\\\bend\\\\b))\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\bprivate\\\\b\",\n              \"name\": \"keyword.ada\"\n            },\n            {\n              \"include\": \"#declarative_item\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        }\n      ]\n    },\n    \"package_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#package_specification\"\n        }\n      ]\n    },\n    \"package_mark\": {\n      \"name\": \"entity.name.package.ada\",\n      \"match\": \"\\\\b(\\\\w|\\\\d|\\\\.|_)+\\\\b\"\n    },\n    \"package_specification\": {\n      \"name\": \"meta.declaration.package.specification.ada\",\n      \"begin\": \"(?i)\\\\b(package)\\\\s+((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s+(\\\\2)\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#package_mark\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#package_mark\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?=(end|;))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.declaration.package.generic.ada\",\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.new.ada\"\n                }\n              },\n              \"end\": \"(?=;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#package_mark\"\n                },\n                {\n                  \"include\": \"#actual_parameter_part\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?i)\\\\bprivate\\\\b\",\n              \"name\": \"keyword.ada\"\n            },\n            {\n              \"include\": \"#basic_declarative_item\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        }\n      ]\n    },\n    \"parameter_association\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?:\\\\w|\\\\d|_)+)\\\\s*(=>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ada\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"parameter_profile\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \";\"\n        },\n        {\n          \"include\": \"#parameter_specification\"\n        }\n      ]\n    },\n    \"parameter_specification\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.ada\",\n          \"begin\": \":(?!=)\",\n          \"end\": \"(?=[:;)])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"keyword.ada\",\n              \"match\": \"(?i)\\\\b(in|out)\\\\b\"\n            },\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \":=\",\n          \"end\": \"(?=[:;)])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.new.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"variable.parameter.ada\",\n          \"match\": \"\\\\b(?:\\\\w|\\\\d|\\\\.|_)+\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"name\": \"meta.pragma.ada\",\n      \"begin\": \"(?i)\\\\b(pragma)\\\\s+((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"end\": \"(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"preprocessor\": {\n      \"name\": \"meta.preprocessor.ada\",\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(#)(if|elsif)\\\\s+(.*)$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.directive.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.conditional.ada\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(#)(end if)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.directive.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.conditional\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.ada\"\n            }\n          }\n        },\n        {\n          \"match\": \"^\\\\s*(#)(else)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.directive.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.conditional\"\n            }\n          }\n        }\n      ]\n    },\n    \"procedure_body\": {\n      \"name\": \"meta.declaration.procedure.body.ada\",\n      \"begin\": \"(?i)\\\\b(overriding\\\\s+)?(procedure)\\\\s+((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s+(\\\\3)\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"end\": \"(?i)(?=(with|begin|;))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.declaration.package.generic.ada\",\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.new.ada\"\n                }\n              },\n              \"end\": \"(?=;)\",\n              \"patterns\": [\n                {\n                  \"match\": \"((?:\\\\w|\\\\d|\\\\.|_)+)\",\n                  \"name\": \"entity.name.function.ada\"\n                },\n                {\n                  \"include\": \"#actual_parameter_part\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?i)\\\\b(null|abstract)\\\\b\",\n              \"name\": \"storage.modifier.ada\"\n            },\n            {\n              \"include\": \"#declarative_item\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"end\": \"(?i)(?=\\\\bend\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#handled_sequence_of_statements\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#subprogram_renaming_declaration\"\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        },\n        {\n          \"include\": \"#parameter_profile\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"procedure_call_statement\": {\n      \"name\": \"meta.statement.call.ada\",\n      \"begin\": \"(?i)\\\\b((?:\\\\w|\\\\d|_|\\\\.)+)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#actual_parameter_part\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"procedure_specification\": {\n      \"patterns\": [\n        {\n          \"include\": \"#procedure_body\"\n        }\n      ]\n    },\n    \"protected_body\": {\n      \"name\": \"meta.declaration.procedure.body.ada\",\n      \"begin\": \"(?i)\\\\b(protected)\\\\s+(body)\\\\s+((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\3)\\\\s*)(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.body.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.body.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#protected_operation_item\"\n            }\n          ]\n        }\n      ]\n    },\n    \"protected_element_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#subprogram_specification\"\n        },\n        {\n          \"include\": \"#aspect_clause\"\n        },\n        {\n          \"include\": \"#entry_declaration\"\n        },\n        {\n          \"include\": \"#component_declaration\"\n        },\n        {\n          \"include\": \"#pragma\"\n        }\n      ]\n    },\n    \"protected_operation_item\": {\n      \"patterns\": [\n        {\n          \"include\": \"#subprogram_specification\"\n        },\n        {\n          \"include\": \"#subprogram_body\"\n        },\n        {\n          \"include\": \"#aspect_clause\"\n        },\n        {\n          \"include\": \"#entry_body\"\n        }\n      ]\n    },\n    \"positional_array_aggregate\": {\n      \"name\": \"meta.definition.array.aggregate.positional.ada\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(others)\\\\s*(=>)\\\\s*([^,\\\\)]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ada\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"name\": \"keyword.modifier.unknown.ada\",\n                  \"match\": \"<>\"\n                },\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"raise_statement\": {\n      \"name\": \"meta.statement.raise.ada\",\n      \"begin\": \"(?i)\\\\braise\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bwith\\\\b\",\n          \"end\": \"(?=;)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"entity.name.exception.ada\",\n          \"match\": \"\\\\b(\\\\w|\\\\d|\\\\.|_)+\\\\b\"\n        }\n      ]\n    },\n    \"raise_expression\": {\n      \"name\": \"meta.expression.raise.ada\",\n      \"begin\": \"(?i)\\\\braise\\\\b\",\n      \"end\": \"(?=;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bwith\\\\b\",\n          \"end\": \"(?=(;|\\\\))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"entity.name.exception.ada\",\n          \"match\": \"\\\\b(\\\\w|\\\\d|_)+\\\\b\"\n        }\n      ]\n    },\n    \"range_constraint\": {\n      \"begin\": \"(?i)\\\\brange\\\\b\",\n      \"end\": \"(?=(\\\\bwith\\\\b|;))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.ada\",\n          \"match\": \"\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.modifier.unknown.ada\",\n          \"match\": \"<>\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"relational_operator\": {\n      \"name\": \"keyword.operator.relational.ada\",\n      \"match\": \"(=|/=|<|<=|>|>=)\"\n    },\n    \"record_representation_clause\": {\n      \"name\": \"meta.aspect.clause.record.representation.ada\",\n      \"begin\": \"(?i)\\\\b(record)\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(record)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#component_clause\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"real_type_definition\": {\n      \"name\": \"meta.declaration.type.definition.real-type.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#scalar_constraint\"\n        }\n      ]\n    },\n    \"record_type_definition\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.declaration.type.definition.record.null.ada\",\n          \"match\": \"(?i)\\\\b(?:(abstract)\\\\s+)?(?:(tagged)\\\\s+)?(?:(limited)\\\\s+)?(null)\\\\s+(record)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"5\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#component_item\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.declaration.type.definition.record.ada\",\n          \"begin\": \"(?i)\\\\b(?:(abstract)\\\\s+)?(?:(tagged)\\\\s+)?(?:(limited)\\\\s+)?(record)\\\\b\",\n          \"end\": \"(?i)\\\\b(end)\\\\s+(record)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.ada\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.ada\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#component_item\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regular_type_declaration\": {\n      \"name\": \"meta.declaration.type.definition.regular.ada\",\n      \"begin\": \"(?i)\\\\b(type)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"end\": \"(?i)(?=(with(?!\\\\s+(private))|;))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_definition\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\b(?<=type)\\\\b\",\n          \"end\": \"(?i)(?=(is|;))\",\n          \"patterns\": [\n            {\n              \"include\": \"#known_discriminant_part\"\n            },\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        }\n      ]\n    },\n    \"requeue_statement\": {\n      \"name\": \"meta.statement.requeue.ada\",\n      \"begin\": \"(?i)\\\\brequeue\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.ada\",\n          \"match\": \"(?i)\\\\b(with|abort)\\\\b\"\n        },\n        {\n          \"name\": \"entity.name.function.ada\",\n          \"match\": \"\\\\b(\\\\w|\\\\d|\\\\.|_)+\\\\b\"\n        }\n      ]\n    },\n    \"result_profile\": {\n      \"begin\": \"(?i)\\\\breturn\\\\b\",\n      \"end\": \"(?=(is|with|renames|;))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"return_statement\": {\n      \"name\": \"meta.statement.return.ada\",\n      \"begin\": \"(?i)\\\\breturn\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bdo\\\\b\",\n          \"end\": \"(?i)\\\\b(end)\\\\s+(return)\\\\s*(?=;)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.ada\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#label\"\n            },\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b((?:\\\\w|\\\\d|_)+)\\\\s*(:)\\\\s*((?:\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.name.ada\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.ada\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.ada\"\n            }\n          }\n        },\n        {\n          \"match\": \":=\",\n          \"name\": \"keyword.operator.new.ada\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"scalar_constraint\": {\n      \"name\": \"meta.declaration.constraint.scalar.ada\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\b(digits|delta)\\\\b\",\n          \"end\": \"(?i)(?=\\\\brange\\\\b|\\\\bdigits\\\\b|\\\\bwith\\\\b|;)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#range_constraint\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"select_alternative\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bterminate\\\\b\",\n          \"end\": \";\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.ada\"\n            }\n          }\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"select_statement\": {\n      \"name\": \"meta.statement.select.ada\",\n      \"begin\": \"(?i)\\\\bselect\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(select)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\b(?:(or)|(?<=select))\\\\b\",\n          \"end\": \"(?i)\\\\b(?=(or|else|end))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#guard\"\n            },\n            {\n              \"include\": \"#select_alternative\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\belse\\\\b\",\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        }\n      ]\n    },\n    \"signed_integer_type_definition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#range_constraint\"\n        }\n      ]\n    },\n    \"simple_loop_statement\": {\n      \"name\": \"meta.statement.loop.ada\",\n      \"begin\": \"(?i)\\\\bloop\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+(?:\\\\w|\\\\d|_)+)?\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.ada\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"single_protected_declaration\": {\n      \"name\": \"meta.declaration.protected.ada\",\n      \"begin\": \"(?i)\\\\b(protected)\\\\s+((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.protected.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.protected.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"end\": \"(?i)(?=(\\\\bend\\\\b|;))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"end\": \"(?i)\\\\bwith\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)\\\\band\\\\b\",\n                  \"name\": \"keyword.ada\"\n                },\n                {\n                  \"include\": \"#subtype_mark\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?i)\\\\bprivate\\\\b\",\n              \"name\": \"keyword.ada\"\n            },\n            {\n              \"include\": \"#protected_element_declaration\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"single_task_declaration\": {\n      \"begin\": \"(?i)\\\\b(task)\\\\s+((?:\\\\w|\\\\d|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(\\\\s\\\\2)?\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.task.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.task.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"end\": \"(?i)\\\\bwith\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)\\\\band\\\\b\",\n                  \"name\": \"keyword.ada\"\n                },\n                {\n                  \"include\": \"#subtype_mark\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?i)\\\\bprivate\\\\b\",\n              \"name\": \"keyword.ada\"\n            },\n            {\n              \"include\": \"#task_item\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"end\": \"(?i)\\\\b(end)\\\\s*(;)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.ada\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#handled_sequence_of_statements\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#null_statement\"\n        },\n        {\n          \"include\": \"#return_statement\"\n        },\n        {\n          \"include\": \"#assignment_statement\"\n        },\n        {\n          \"include\": \"#exit_statement\"\n        },\n        {\n          \"include\": \"#goto_statement\"\n        },\n        {\n          \"include\": \"#requeue_statement\"\n        },\n        {\n          \"include\": \"#delay_statement\"\n        },\n        {\n          \"include\": \"#abort_statement\"\n        },\n        {\n          \"include\": \"#raise_statement\"\n        },\n        {\n          \"include\": \"#if_statement\"\n        },\n        {\n          \"include\": \"#case_statement\"\n        },\n        {\n          \"include\": \"#loop_statement\"\n        },\n        {\n          \"include\": \"#block_statement\"\n        },\n        {\n          \"include\": \"#select_statement\"\n        },\n        {\n          \"include\": \"#accept_statement\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#procedure_call_statement\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"string_literal\": {\n      \"name\": \"string.quoted.double.ada\",\n      \"match\": \"(\\\").*?(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.ada\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.ada\"\n        }\n      }\n    },\n    \"subprogram_body\": {\n      \"name\": \"meta.declaration.subprogram.body.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#procedure_body\"\n        },\n        {\n          \"include\": \"#function_body\"\n        }\n      ]\n    },\n    \"subprogram_renaming_declaration\": {\n      \"begin\": \"(?i)\\\\brenames\\\\b\",\n      \"end\": \"(?=(with|;))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\w|\\\\d|_|\\\\.)+\",\n          \"name\": \"entity.name.function.ada\"\n        }\n      ]\n    },\n    \"subprogram_specification\": {\n      \"name\": \"meta.declaration.subprogram.specification.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#procedure_specification\"\n        },\n        {\n          \"include\": \"#function_specification\"\n        }\n      ]\n    },\n    \"subtype_declaration\": {\n      \"name\": \"meta.declaration.subtype.ada\",\n      \"begin\": \"(?i)\\\\bsubtype\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"name\": \"storage.modifier.ada\",\n              \"match\": \"(?i)\\\\b(not\\\\s+null)\\\\b\"\n            },\n            {\n              \"include\": \"#composite_constraint\"\n            },\n            {\n              \"include\": \"#aspect_specification\"\n            },\n            {\n              \"include\": \"#subtype_indication\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<=subtype)\",\n          \"end\": \"(?i)\\\\b(?=is)\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#subtype_mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"subtype_indication\": {\n      \"name\": \"meta.declaration.indication.subtype.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#scalar_constraint\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"subtype_mark\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.visibility.ada\",\n          \"match\": \"(?i)\\\\b(access|aliased|not\\\\s+null|constant)\\\\b\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#actual_parameter_part\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(procedure|function)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?=(;|\\\\)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter_profile\"\n            },\n            {\n              \"begin\": \"(?i)\\\\breturn\\\\b\",\n              \"end\": \"(?=(;|\\\\)))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#subtype_mark\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"name\": \"entity.name.type.ada\",\n          \"match\": \"\\\\b(?:\\\\w|\\\\d|\\\\.|_)+\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"name\": \"punctuation.ada\",\n                  \"match\": \"[_.]\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"task_body\": {\n      \"name\": \"meta.declaration.task.body.ada\",\n      \"begin\": \"(?i)\\\\b(task)\\\\s+(body)\\\\s+((\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(?:\\\\s(\\\\3))?\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.task.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.task.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\bbegin\\\\b\",\n          \"end\": \"(?i)(?=end)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#handled_sequence_of_statements\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#aspect_specification\"\n        },\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)(?=(with|begin))\",\n          \"patterns\": [\n            {\n              \"include\": \"#declarative_item\"\n            }\n          ]\n        }\n      ]\n    },\n    \"task_item\": {\n      \"patterns\": [\n        {\n          \"include\": \"#aspect_clause\"\n        },\n        {\n          \"include\": \"#entry_declaration\"\n        }\n      ]\n    },\n    \"task_type_declaration\": {\n      \"name\": \"meta.declaration.type.task.ada\",\n      \"begin\": \"(?i)\\\\b(task)\\\\s+(type)\\\\s+((\\\\w|\\\\d|\\\\.|_)+)\\\\b\",\n      \"end\": \"(?i)(?:\\\\b(end)\\\\s*(?:\\\\s(\\\\3))?\\\\s*)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.task.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.task.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#known_discriminant_part\"\n        },\n        {\n          \"begin\": \"(?i)\\\\bis\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\bnew\\\\b\",\n              \"end\": \"(?i)\\\\bwith\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)\\\\band\\\\b\",\n                  \"name\": \"keyword.ada\"\n                },\n                {\n                  \"include\": \"#subtype_mark\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?i)\\\\bprivate\\\\b\",\n              \"name\": \"keyword.ada\"\n            },\n            {\n              \"include\": \"#task_item\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"type_declaration\": {\n      \"name\": \"meta.declaration.type.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#full_type_declaration\"\n        }\n      ]\n    },\n    \"type_definition\": {\n      \"name\": \"meta.declaration.type.definition.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#enumeration_type_definition\"\n        },\n        {\n          \"include\": \"#integer_type_definition\"\n        },\n        {\n          \"include\": \"#real_type_definition\"\n        },\n        {\n          \"include\": \"#array_type_definition\"\n        },\n        {\n          \"include\": \"#record_type_definition\"\n        },\n        {\n          \"include\": \"#access_type_definition\"\n        },\n        {\n          \"include\": \"#interface_type_definition\"\n        },\n        {\n          \"include\": \"#derived_type_definition\"\n        }\n      ]\n    },\n    \"use_clause\": {\n      \"name\": \"meta.context.use.ada\",\n      \"patterns\": [\n        {\n          \"include\": \"#use_type_clause\"\n        },\n        {\n          \"include\": \"#use_package_clause\"\n        }\n      ]\n    },\n    \"use_package_clause\": {\n      \"name\": \"meta.context.use.package.ada\",\n      \"begin\": \"(?i)\\\\buse\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.using.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#package_mark\"\n        }\n      ]\n    },\n    \"use_type_clause\": {\n      \"name\": \"meta.context.use.type.ada\",\n      \"begin\": \"(?i)\\\\b(use)\\\\s+(?:(all)\\\\s+)?(type)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.modifier.ada\"\n        },\n        \"3\": {\n          \"name\": \"keyword.modifier.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#subtype_mark\"\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#based_literal\"\n        },\n        {\n          \"include\": \"#decimal_literal\"\n        },\n        {\n          \"include\": \"#character_literal\"\n        },\n        {\n          \"include\": \"#string_literal\"\n        }\n      ]\n    },\n    \"variant_part\": {\n      \"name\": \"meta.declaration.variant.ada\",\n      \"begin\": \"(?i)\\\\bcase\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(case);\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.ada\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)\\\\b(?<=case)\\\\b\",\n          \"end\": \"(?i)\\\\bis\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\w|\\\\d|_)+\",\n              \"name\": \"variable.name.ada\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\b(?<=is)\\\\b\",\n          \"end\": \"(?i)\\\\b(?=end)\\\\b\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\bwhen\\\\b\",\n              \"end\": \"=>\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.ada\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.other.ada\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.ada\"\n                },\n                {\n                  \"match\": \"(?i)\\\\bothers\\\\b\",\n                  \"name\": \"keyword.ada\"\n                },\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#component_item\"\n            }\n          ]\n        }\n      ]\n    },\n    \"while_loop_statement\": {\n      \"name\": \"meta.statement.loop.while.ada\",\n      \"begin\": \"(?i)\\\\bwhile\\\\b\",\n      \"end\": \"(?i)\\\\b(end)\\\\s+(loop)(\\\\s+(?:\\\\w|\\\\d|_)+)?\\\\s*(;)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ada\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.ada\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<=while)\\\\b\",\n          \"end\": \"(?i)\\\\bloop\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ada\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"with_clause\": {\n      \"name\": \"meta.context.with.ada\",\n      \"begin\": \"(?i)\\\\b(?:(limited)\\\\s+)?(?:(private)\\\\s+)?(with)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.modifier.ada\"\n        },\n        \"2\": {\n          \"name\": \"storage.visibility.ada\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.using.ada\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.ada\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.ada\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#package_mark\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.ada\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/apache.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"conf\",\n    \"CONF\",\n    \"envvars\",\n    \"htaccess\",\n    \"HTACCESS\",\n    \"htgroups\",\n    \"HTGROUPS\",\n    \"htpasswd\",\n    \"HTPASSWD\",\n    \".htaccess\",\n    \".HTACCESS\",\n    \".htgroups\",\n    \".HTGROUPS\",\n    \".htpasswd\",\n    \".HTPASSWD\"\n  ],\n  \"name\": \"apache\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.apacheconf\"\n        }\n      },\n      \"match\": \"^(\\\\s)*(#).*$\\\\n?\",\n      \"name\": \"comment.line.hash.ini\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"entity.tag.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"string.value.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        }\n      },\n      \"match\": \"(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(\\\\s(.+?))?(>)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"entity.tag.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.apacheconf\"\n        }\n      },\n      \"match\": \"(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(>)\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"string.replacement.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=(Rewrite(Rule|Cond)))\\\\s+(.+?)\\\\s+(.+?)($|\\\\s)\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.status.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=RedirectMatch)(\\\\s+(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.status.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=Redirect)(\\\\s+(\\\\d\\\\d\\\\d|permanent|temp|seeother|gone))?\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=ScriptAliasMatch|AliasMatch)\\\\s+(.+?)\\\\s+((.+?)\\\\s)?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.path.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"string.path.apacheconf\"\n        }\n      },\n      \"match\": \"(?<=RedirectPermanent|RedirectTemp|ScriptAlias|Alias)\\\\s+(.+?)\\\\s+((.+?)($|\\\\s))?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.core.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|Define|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include(Optional)?|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|Mutex|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|Time(O|o)ut|TraceEnable|UseCanonicalName|Use|ErrorLogFormat|GlobalLog|PHPIniDir|SSLHonorCipherOrder|SSLCompression|SSLUseStapling|SSLStapling\\\\w+|SSLCARevocationCheck|SSLSRPVerifierFile|SSLSessionTickets|RequestReadTimeout|ProxyHTML\\\\w+|MaxRanges)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mpm.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxConnectionsPerChild|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.access.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Allow|Deny|Order)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.actions.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Action|Script)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.alias.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthAuthoritative|AuthGroupFile|AuthUserFile|AuthBasicProvider|AuthBasicFake|AuthBasicAuthoritative|AuthBasicUseDigestAlgorithm)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_anon.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_dbm.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_digest.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize|AuthDigestProvider)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.auth_ldap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.autoindex.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|IndexStyleSheet|IndexHeadInsert|ReadmeName)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BalancerMember|BalancerGrowth|BalancerPersist|BalancerInherit)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cern_meta.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(MetaDir|MetaFiles|MetaSuffix)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cgi.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cgid.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.charset_lite.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CharsetDefault|CharsetOptions|CharsetSourceEnc)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dav.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.deflate.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dir.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DirectoryIndex|DirectorySlash|FallbackResource)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.disk_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.dumpio.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(DumpIOInput|DumpIOOutput)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.env.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(PassEnv|SetEnv|UnsetEnv)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.expires.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ExpiresActive|ExpiresByType|ExpiresDefault)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ext_filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ExtFilterDefine|ExtFilterOptions)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.file_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheFile|MMapFile)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.filter.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddOutputFilterByType|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.headers.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Header|RequestHeader)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.imap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ImapBase|ImapDefault|ImapMenu)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.include.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.isapi.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ldap.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.log.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mem_cache.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.mime.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.misc.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.negotiation.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.nw_ssl.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.proxy.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassMatch|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.rewrite.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.setenvif.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.so.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(LoadFile|LoadModule)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.ssl.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|SSLInsecureRenegotiation|SSLOpenSSLConfCmd)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.substitute.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(Substitute|SubstituteInheritBefore|SubstituteMaxLineLength)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.usertrack.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.vhost_alias.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.php.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"entity.property.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"string.value.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(php_value|php_flag|php_admin_value|php_admin_flag)\\\\b(\\\\s+(.+?)(\\\\s+(\\\".+?\\\"|.+?))?)?\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.variable.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"variable.env.apacheconf\"\n        },\n        \"4\": {\n          \"name\": \"variable.misc.apacheconf\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.variable.apacheconf\"\n        }\n      },\n      \"match\": \"(%\\\\{)((HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\\\})\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.mime-type.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b((text|image|application|video|audio)/.+?)\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.helper.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(?i)(export|from|unset|set|on|off)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integer.decimal.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\b(\\\\d+)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.flag.apacheconf\"\n        },\n        \"2\": {\n          \"name\": \"string.flag.apacheconf\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.flag.apacheconf\"\n        }\n      },\n      \"match\": \"\\\\s(\\\\[)(.*?)(\\\\])\\\\s\"\n    }\n  ],\n  \"scopeName\": \"source.apacheconf\",\n  \"uuid\": \"8747d9e4-b308-4fc2-9aa1-66b6919bc7b9\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/apex.tmLanguage.json",
    "content": "{\n  \"name\": \"apex\",\n  \"scopeName\": \"source.apex\",\n  \"fileTypes\": [\"apex\", \"cls\", \"trigger\"],\n  \"uuid\": \"F5FC6824-F257-43B1-B53A-14E1CCD18631\",\n  \"patterns\": [\n    {\n      \"include\": \"#javadoc-comment\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#script-top-level\"\n    }\n  ],\n  \"repository\": {\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"script-top-level\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#statement\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"type-declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#annotation-declaration\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#sharing-modifier\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#trigger-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"class-or-trigger-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#sharing-modifier\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#constructor-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"interface-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#when-else-statement\"\n        },\n        {\n          \"include\": \"#when-sobject-statement\"\n        },\n        {\n          \"include\": \"#when-statement\"\n        },\n        {\n          \"include\": \"#when-multiple-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#break-or-continue-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#local-declaration\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#merge-expression\"\n        },\n        {\n          \"include\": \"#support-expression\"\n        },\n        {\n          \"include\": \"#throw-expression\"\n        },\n        {\n          \"include\": \"#this-expression\"\n        },\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"include\": \"#conditional-operator\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#invocation-expression\"\n        },\n        {\n          \"include\": \"#member-access-expression\"\n        },\n        {\n          \"include\": \"#element-access-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#initializer-expression\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"annotation-declaration\": {\n      \"begin\": \"([@][_[:alpha:]]+)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.annotation.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|$)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"support-expression\": {\n      \"begin\": \"(?x)\\n(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\\\.|\\\\s) # supported apex namespaces\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.class.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|$)|(?=\\\\})|(?=;)|(?=\\\\)|(?=\\\\]))|(?=\\\\,)\",\n      \"patterns\": [\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"match\": \"(?:(\\\\.))([[:alpha:]]*)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.function.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.))([[:alpha:]]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.type.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"support-type\": {\n      \"name\": \"support.apex\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-class\"\n        },\n        {\n          \"include\": \"#support-functions\"\n        },\n        {\n          \"include\": \"#support-name\"\n        }\n      ]\n    },\n    \"support-class\": {\n      \"match\": \"\\\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.apex\"\n        }\n      }\n    },\n    \"support-functions\": {\n      \"match\": \"\\\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        }\n      }\n    },\n    \"support-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\.)\\\\s*([[:alpha:]]*)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.function.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([_[:alpha:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"support.type.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"support-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"merge-expression\": {\n      \"begin\": \"(merge)\\\\b\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#merge-type-statement\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"merge-type-statement\": {\n      \"match\": \"([_[:alpha:]]*)\\\\b\\\\s+([_[:alpha:]]*)\\\\b\\\\s*(\\\\;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.readwrite.apex\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.readwrite.apex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.statement.apex\"\n        }\n      }\n    },\n    \"sharing-modifier\": {\n      \"name\": \"sharing.modifier.apex\",\n      \"match\": \"(?<!\\\\.)\\\\b(with sharing|without sharing|inherited sharing)\\\\b\"\n    },\n    \"storage-modifier\": {\n      \"name\": \"storage.modifier.apex\",\n      \"match\": \"(?<!\\\\.)\\\\b(new|public|protected|private|abstract|virtual|override|global|static|final|transient)\\\\b\"\n    },\n    \"class-declaration\": {\n      \"begin\": \"(?=\\\\bclass\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(class)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.class.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#extends-class\"\n            },\n            {\n              \"include\": \"#implements-class\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-trigger-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"trigger-declaration\": {\n      \"begin\": \"(?=\\\\btrigger\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(trigger)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\n\\\\b(on)\\\\b\\\\s+\\n([_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.trigger.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trigger.apex\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.trigger.on.apex\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.parenthesis.open.apex\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.parenthesis.close.apex\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#trigger-type-statement\"\n                },\n                {\n                  \"include\": \"#trigger-operator-statement\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                },\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            },\n            {\n              \"include\": \"#class-or-trigger-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"trigger-type-statement\": {\n      \"match\": \"\\\\b(?:(before)|(after))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.trigger.before.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.trigger.after.apex\"\n        }\n      }\n    },\n    \"trigger-operator-statement\": {\n      \"name\": \"keyword.operator.trigger.apex\",\n      \"match\": \"\\\\b(insert|update|delete|merge|upsert|undelete)\\\\b\"\n    },\n    \"trigger-context-declaration\": {\n      \"begin\": \"\\\\b(?:(Trigger))\\\\b(\\\\.)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.class.trigger.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.apex\"\n        }\n      },\n      \"end\": \"(?=\\\\})|(?=;)|(?=\\\\)|(?=\\\\]))\",\n      \"patterns\": [\n        {\n          \"name\": \"support.type.trigger.apex\",\n          \"match\": \"\\\\b(isExecuting|isInsert|isUpdate|isDelete|isBefore|isAfter|isUndelete|new|newMap|old|oldMap|size)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\??\\\\.))([[:alpha:]]+)(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"support.function.trigger.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#trigger-type-statement\"\n            },\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"begin\": \"(?=\\\\benum\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=enum)\",\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"(enum)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.enum.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.enum.apex\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"begin\": \"@?[_[:alpha:]][_[:alnum:]]*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.variable.enum-member.apex\"\n                }\n              },\n              \"end\": \"(?=(,|\\\\}))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#javadoc-comment\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"begin\": \"(?=\\\\binterface\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(interface)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.interface.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javadoc-comment\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#extends-class\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.apex\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interface-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#javadoc-comment\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"extends-class\": {\n      \"begin\": \"(extends)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.extends.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.extends.apex\"\n        }\n      },\n      \"end\": \"(?={|implements)\"\n    },\n    \"implements-class\": {\n      \"begin\": \"(implements)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.implements.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.implements.apex\"\n        }\n      },\n      \"end\": \"(?={|extends)\"\n    },\n    \"soql-query-expression\": {\n      \"begin\": \"\\\\b(SELECT)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.select.apex\"\n        }\n      },\n      \"end\": \"(?=;)|(?=\\\\])|(?=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-body\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"match\": \"([_.[:alpha:]][_.[:alnum:]]*)\\\\s*(\\\\,)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.query.field.apex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.comma.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"soql-query-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"include\": \"#soql-colon-vars\"\n        },\n        {\n          \"include\": \"#soql-functions\"\n        },\n        {\n          \"include\": \"#from-clause\"\n        },\n        {\n          \"include\": \"#where-clause\"\n        },\n        {\n          \"include\": \"#query-operators\"\n        },\n        {\n          \"include\": \"#date-literals\"\n        },\n        {\n          \"include\": \"#date-literal-with-params\"\n        },\n        {\n          \"include\": \"#using-scope\"\n        },\n        {\n          \"include\": \"#soql-group-clauses\"\n        },\n        {\n          \"include\": \"#orderby-clause\"\n        },\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#ordering-nulls\"\n        }\n      ]\n    },\n    \"soql-colon-vars\": {\n      \"begin\": \"(\\\\:)\\\\s*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.apex\"\n        }\n      },\n      \"end\": \"(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#trigger-context-declaration\"\n        },\n        {\n          \"match\": \"([_[:alpha:]][_[:alnum:]]*)(\\\\??\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.apex\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#soql-colon-method-statement\"\n        },\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"soql-colon-method-statement\": {\n      \"begin\": \"(:?\\\\.)?([_[:alpha:]][_[:alnum:]]*)(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"soql-group-clauses\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#soql-colon-vars\"\n        },\n        {\n          \"include\": \"#soql-group-clauses\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#query-operators\"\n        },\n        {\n          \"include\": \"#date-literals\"\n        },\n        {\n          \"include\": \"#date-literal-with-params\"\n        },\n        {\n          \"include\": \"#using-scope\"\n        },\n        {\n          \"name\": \"keyword.query.field.apex\",\n          \"match\": \"[_.[:alpha:]][_.[:alnum:]]*\"\n        }\n      ]\n    },\n    \"soql-functions\": {\n      \"begin\": \"\\\\b(AVG|CALENDAR_MONTH|CALENDAR_QUARTER|CALENDAR_YEAR|convertCurrency|convertTimezone|COUNT|COUNT_DISTINCT|DAY_IN_MONTH|DAY_IN_WEEK|DAY_IN_YEAR|DAY_ONLY|toLabel|INCLUDES|EXCLUDES|FISCAL_MONTH|FISCAL_QUARTER|FISCAL_YEAR|FORMAT|GROUPING|GROUP BY CUBE|GROUP BY ROLLUP|HOUR_IN_DAY|MAX|MIN|SUM|WEEK_IN_MONTH|WEEK_IN_YEAR)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.query.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#soql-functions\"\n        },\n        {\n          \"name\": \"keyword.query.field.apex\",\n          \"match\": \"[_.[:alpha:]][_.[:alnum:]]*\"\n        }\n      ]\n    },\n    \"from-clause\": {\n      \"match\": \"(FROM)\\\\b\\\\s*([_\\\\.[:alnum:]]+\\\\b)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.from.apex\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.apex\"\n        }\n      }\n    },\n    \"where-clause\": {\n      \"match\": \"\\\\b(WHERE)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.where.apex\"\n        }\n      }\n    },\n    \"orderby-clause\": {\n      \"match\": \"\\\\b(ORDER BY)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.orderby.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#ordering-nulls\"\n        }\n      ]\n    },\n    \"ordering-direction\": {\n      \"match\": \"\\\\b(?:(ASC)|(DESC))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.ascending.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.query.descending.apex\"\n        }\n      }\n    },\n    \"ordering-nulls\": {\n      \"match\": \"\\\\b(?:(NULLS FIRST)|(NULLS LAST))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.nullsfirst.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.query.nullslast.apex\"\n        }\n      }\n    },\n    \"query-operators\": {\n      \"match\": \"\\\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.apex\"\n        }\n      }\n    },\n    \"date-literals\": {\n      \"match\": \"\\\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.date.apex\"\n        }\n      }\n    },\n    \"date-literal-with-params\": {\n      \"match\": \"\\\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\\\s*\\\\:\\\\d+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.date.apex\"\n        }\n      }\n    },\n    \"using-scope\": {\n      \"match\": \"((USING SCOPE)\\\\b\\\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.query.using.apex\"\n        }\n      }\n    },\n    \"type-parameter-list\": {\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.type-parameter.apex\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"begin\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s* # first field name\\n(?!=>|==)(?=,|;|=|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.variable.field.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.field.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-trigger-members\"\n        }\n      ]\n    },\n    \"property-declaration\": {\n      \"begin\": \"(?x)\\n(?!.*\\\\b(?:class|interface|enum)\\\\b)\\\\s*\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(?<property-name>\\\\g<identifier>)\\\\s*\\n(?=\\\\{|=>|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.property.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-trigger-members\"\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"begin\": \"(?x)\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(?<indexer-name>this)\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"property-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.apex\",\n          \"match\": \"\\\\b(private|protected)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.get.apex\",\n          \"match\": \"\\\\b(get)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.set.apex\",\n          \"match\": \"\\\\b(set)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"begin\": \"(?x)\\n(?<return-type>\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\\\s+\\n)\\n(?<interface-name>\\\\g<type-name>\\\\s*\\\\.\\\\s*)?\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#method-name-custom\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"method-name-custom\": {\n      \"name\": \"entity.name.function.apex\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"constructor-declaration\": {\n      \"begin\": \"(?=@?[_[:alpha:]][_[:alnum:]]*\\\\s*\\\\()\",\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.colon.apex\"\n            }\n          },\n          \"end\": \"(?=\\\\{|=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#constructor-initializer\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-initializer\": {\n      \"begin\": \"\\\\b(?:(this))\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"begin\": \"(?<!=|!)(=)(?!=|>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.apex\"\n        }\n      },\n      \"end\": \"(?=[,\\\\)\\\\];}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression-body\": {\n      \"begin\": \"=>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.arrow.apex\"\n        }\n      },\n      \"end\": \"(?=[,\\\\);}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(goto)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.apex\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(default)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.label.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.return.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"break-or-continue-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(?:(break)|(continue))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.break.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.continue.apex\"\n        }\n      }\n    },\n    \"throw-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.if.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"else-part\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(else)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"begin\": \"(?x)\\n(switch)\\\\b\\\\s+\\n(on)\\\\b\\\\s+\\n(?:([_.?\\\\'\\\\(\\\\)[:alnum:]]+)\\\\s*)?\\n(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.on.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#statement\"\n            },\n            {\n              \"include\": \"#parenthesized-expression\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#when-string\"\n        },\n        {\n          \"include\": \"#when-else-statement\"\n        },\n        {\n          \"include\": \"#when-sobject-statement\"\n        },\n        {\n          \"include\": \"#when-statement\"\n        },\n        {\n          \"include\": \"#when-multiple-statement\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"when-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+([\\\\'_\\\\-[:alnum:]]+)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-string\": {\n      \"begin\": \"(when)(\\\\b\\\\s*)((\\\\')[_.\\\\,\\\\'\\\\s*[:alnum:]]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.whitespace.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#when-string-statement\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-string-statement\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.apex\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"when-else-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+(else)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.else.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-multiple-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"when-sobject-statement\": {\n      \"begin\": \"(when)\\\\b\\\\s+([_[:alnum:]]+)\\\\s+([_[:alnum:]]+)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.when.apex\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.apex\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(do)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.do.apex\"\n        }\n      },\n      \"end\": \"(?=;|})\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.while.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.for.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#for-apex-syntax\"\n            },\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            },\n            {\n              \"include\": \"#colon-expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-apex-syntax\": {\n      \"match\": \"([_.[:alpha:]][_.[:alnum:]]+)\\\\s+([_.[:alpha:]][_.[:alnum:]]*)\\\\s*(\\\\:)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.iterator.colon.apex\"\n        }\n      }\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(try)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(finally)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"catch-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(catch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.apex\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#support-type\"\n                    },\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"entity.name.variable.local.apex\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"local-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#local-constant-declaration\"\n        },\n        {\n          \"include\": \"#local-variable-declaration\"\n        }\n      ]\n    },\n    \"local-variable-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\n  (?:(\\\\bref)\\\\s+)?(\\\\bvar\\\\b)| # ref local\\n  (?<type-name>\\n    (?:\\n      (?:ref\\\\s+)?   # ref local\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.var.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-constant-declaration\": {\n      \"begin\": \"(?x)\\n(?<const-keyword>\\\\b(?:const)\\\\b)\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.local.apex\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"throw-expression\": {\n      \"match\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.apex\"\n        }\n      }\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.apex\",\n          \"match\": \"(?<!\\\\.)\\\\btrue\\\\b\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.apex\",\n          \"match\": \"(?<!\\\\.)\\\\bfalse\\\\b\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.apex\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\"\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.datetime.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2}T\\\\d{2}\\\\:\\\\d{2}\\\\:\\\\d{2}(\\\\.\\\\d{1,3})?(\\\\-|\\\\+)\\\\d{2}\\\\:\\\\d{2})\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.datetime.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2}T\\\\d{2}\\\\:\\\\d{2}\\\\:\\\\d{2}(\\\\.\\\\d{1,3})?(Z)?)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.date.apex\",\n          \"match\": \"\\\\b(\\\\d{4}\\\\-\\\\d{2}\\\\-\\\\d{2})\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.hex.apex\",\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.binary.apex\",\n          \"match\": \"\\\\b0(b|B)[01_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b([0-9_]+)?\\\\.[0-9_]+((e|E)[0-9]+)?(F|f|D|d|M|m)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(e|E)[0-9_]+(F|f|D|d|M|m)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(F|f|D|d|M|m)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.decimal.apex\",\n          \"match\": \"\\\\b[0-9_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\\\b\"\n        }\n      ]\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.single.apex\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.apex\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.apex\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.apex\",\n      \"match\": \"\\\\\\\\.\"\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.assignment.compound.apex\",\n          \"match\": \"\\\\*=|/=|%=|\\\\+=|-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.apex\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.apex\",\n          \"match\": \"<<|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.apex\",\n          \"match\": \"==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.apex\",\n          \"match\": \"<=|>=|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.apex\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.apex\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.apex\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.apex\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.apex\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.apex\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        }\n      ]\n    },\n    \"conditional-operator\": {\n      \"begin\": \"(?<!\\\\?)\\\\?(?!\\\\?|\\\\.|\\\\[)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.question-mark.apex\"\n        }\n      },\n      \"end\": \":\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"colon-expression\": {\n      \"name\": \"keyword.operator.conditional.colon.apex\",\n      \"match\": \":\"\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"initializer-expression\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.apex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.apex\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"cast-expression\": {\n      \"match\": \"(?x)\\n(\\\\()\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(\\\\))(?=\\\\s*@?[_[:alnum:]\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      }\n    },\n    \"this-expression\": {\n      \"match\": \"\\\\b(?:(this))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.this.apex\"\n        }\n      }\n    },\n    \"invocation-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\??\\\\.)\\\\s*)?                                  # safe navigator or accessor\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*                 # method name\\n(?<type-args>\\\\s*<([^<>]|\\\\g<type-args>)+>\\\\s*)?\\\\s* # type arguments\\n(?=\\\\()                                           # open paren of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"include\": \"#operator-safe-navigation\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"element-access-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\??\\\\.)\\\\s*)?                       # safe navigator or accessor\\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*)? # property name\\n(?:(\\\\?)\\\\s*)?                          # null-conditional operator?\\n(?=\\\\[)                                # open bracket of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation-accessor\"\n            },\n            {\n              \"include\": \"#operator-safe-navigation\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"variable.other.object.property.apex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.null-conditional.apex\"\n        }\n      },\n      \"end\": \"(?<=\\\\])(?!\\\\s*\\\\[)\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"member-access-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(\\\\??\\\\.)\\\\s*                       # safe navigator or accessor\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s* # property name\\n(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)    # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\??\\\\.)?\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?<type-params>\\\\s*<([^<>]|\\\\g<type-params>)+>\\\\s*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#punctuation-accessor\"\n                },\n                {\n                  \"include\": \"#operator-safe-navigation\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.apex\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-arguments\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.apex\"\n            }\n          }\n        }\n      ]\n    },\n    \"object-creation-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression-with-parameters\"\n        },\n        {\n          \"include\": \"#object-creation-expression-with-no-parameters\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-parameters\": {\n      \"begin\": \"(?x)\\n(delete|insert|undelete|update|upsert)?\\n\\\\s*(new)\\\\s+\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-no-parameters\": {\n      \"match\": \"(?x)\\n(delete|insert|undelete|update|upsert)?\\n\\\\s*(new)\\\\s+\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?=\\\\{|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.apex\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"array-creation-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(new)\\\\b\\\\s*\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)?\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.new.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\])\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"parenthesized-parameter-list\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"match\": \"(?x)\\n(?:(?:\\\\b(this)\\\\b)\\\\s+)?\\n(?<type-name>\\n  (?:\\n    (?:ref\\\\s+)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)*\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.apex\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#support-type\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.parameter.apex\"\n        }\n      }\n    },\n    \"argument-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.apex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"bracketed-argument-list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.apex\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#soql-query-expression\"\n        },\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.apex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.apex\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)|\\\\]))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"type\": {\n      \"name\": \"meta.type.apex\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-builtin\"\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#type-arguments\"\n        },\n        {\n          \"include\": \"#type-array-suffix\"\n        },\n        {\n          \"include\": \"#type-nullable-suffix\"\n        }\n      ]\n    },\n    \"type-builtin\": {\n      \"match\": \"\\\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.apex\"\n        }\n      }\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.apex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.apex\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.apex\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.apex\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.apex\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#support-type\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-array-suffix\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.apex\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-nullable-suffix\": {\n      \"match\": \"\\\\?\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.question-mark.apex\"\n        }\n      }\n    },\n    \"operator-assignment\": {\n      \"name\": \"keyword.operator.assignment.apex\",\n      \"match\": \"(?<!=|!)(=)(?!=)\"\n    },\n    \"operator-safe-navigation\": {\n      \"name\": \"keyword.operator.safe-navigation.apex\",\n      \"match\": \"\\\\?\\\\.\"\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.apex\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.apex\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"name\": \"punctuation.accessor.apex\",\n      \"match\": \"\\\\.\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.apex\",\n          \"begin\": \"/\\\\*(\\\\*)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.apex\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"patterns\": [\n            {\n              \"name\": \"comment.block.documentation.apex\",\n              \"begin\": \"(?<!/)///(?!/)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.apex\"\n                }\n              },\n              \"end\": \"(?=$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#xml-doc-comment\"\n                }\n              ]\n            },\n            {\n              \"name\": \"comment.line.double-slash.apex\",\n              \"begin\": \"(?<!/)//(?:(?!/)|(?=//))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.apex\"\n                }\n              },\n              \"end\": \"(?=$)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"javadoc-comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.javadoc.apex\",\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@(deprecated|author|return|see|serial|since|version|usage|name|link)\\\\b\",\n              \"name\": \"keyword.other.documentation.javadoc.apex\"\n            },\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.variable.parameter.apex\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:exception|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.apex\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.apex\"\n                }\n              }\n            },\n            {\n              \"match\": \"(`([^`]+?)`)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"string.quoted.single.apex\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-doc-comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xml-comment\"\n        },\n        {\n          \"include\": \"#xml-character-entity\"\n        },\n        {\n          \"include\": \"#xml-cdata\"\n        },\n        {\n          \"include\": \"#xml-tag\"\n        }\n      ]\n    },\n    \"xml-tag\": {\n      \"name\": \"meta.tag.apex\",\n      \"begin\": \"(?x)\\n(</?)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apex\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.apex\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.apex\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.colon.apex\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.apex\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.apex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-attribute\"\n        }\n      ]\n    },\n    \"xml-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:^|\\\\s+)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\\n(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.apex\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.namespace.apex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.apex\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.apex\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.equals.apex\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-string\"\n        }\n      ]\n    },\n    \"xml-cdata\": {\n      \"name\": \"string.unquoted.cdata.apex\",\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.apex\"\n        }\n      },\n      \"end\": \"\\\\]\\\\]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.apex\"\n        }\n      }\n    },\n    \"xml-string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.apex\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.apex\",\n          \"begin\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.stringdoublequote.begin.apex\"\n            }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.stringdoublequote.end.apex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-character-entity\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.apex\",\n          \"match\": \"(?x)\\n(&)\\n(\\n  (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\\n  (?:\\\\#[[:digit:]]+)|\\n  (?:\\\\#x[[:xdigit:]]+)\\n)\\n(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.apex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.constant.apex\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.apex\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"xml-comment\": {\n      \"name\": \"comment.block.apex\",\n      \"begin\": \"<!--\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.apex\"\n        }\n      },\n      \"end\": \"-->\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.apex\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/apl.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"apl\",\n  \"scopeName\": \"source.apl\",\n  \"fileTypes\": [\n    \"apl\",\n    \"apla\",\n    \"aplc\",\n    \"aplf\",\n    \"apli\",\n    \"apln\",\n    \"aplo\",\n    \"dyalog\",\n    \"dyapp\",\n    \"mipage\"\n  ],\n  \"firstLineMatch\": \"(?x)\\n# APL symbols\\n[⌶-⍺]\\n|\\n\\n# Hashbang\\n^\\\\#!.*(?:\\\\s|\\\\/|(?<=!)\\\\b)\\n\\t(?:gnu[-._]?apl|aplx?|dyalog)\\n(?:$|\\\\s)\\n|\\n\\n# Modeline\\n(?i:\\n\\t# Emacs\\n\\t-\\\\*-(?:\\\\s*(?=[^:;\\\\s]+\\\\s*-\\\\*-)|(?:.*?[;\\\\s]|(?<=-\\\\*-))mode\\\\s*:\\\\s*)\\n\\t\\tapl\\n\\t(?=[\\\\s;]|(?<![-*])-\\\\*-).*?-\\\\*-\\n\\n\\t|\\n\\n\\t# Vim\\n\\t(?:(?:\\\\s|^)vi(?:m[<=>]?\\\\d+|m)?|\\\\sex)(?=:(?=\\\\s*set?\\\\s[^\\\\n:]+:)|:(?!\\\\s* set?\\\\s))(?:(?:\\\\s|\\\\s*:\\\\s*)\\\\w*(?:\\\\s*=(?:[^\\\\n\\\\\\\\\\\\s]|\\\\\\\\.)*)?)*[\\\\s:](?:filetype|ft|syntax)\\\\s*=\\n\\t\\tapl\\n\\t(?=\\\\s|:|$)\\n)\",\n  \"foldingStartMarker\": \"{\",\n  \"foldingStopMarker\": \"}\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\A#!.*$\",\n      \"name\": \"comment.line.shebang.apl\"\n    },\n    {\n      \"include\": \"#heredocs\"\n    },\n    {\n      \"include\": \"#main\"\n    },\n    {\n      \"contentName\": \"text.embedded.apl\",\n      \"begin\": \"^\\\\s*((\\\\))OFF|(\\\\])NEXTFILE)\\\\b(.*)$\",\n      \"end\": \"(?=N)A\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.command.eof.apl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.command.apl\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.command.apl\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"name\": \"meta.round.bracketed.group.apl\",\n      \"patterns\": [\n        {\n          \"include\": \"#main\"\n        }\n      ],\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.round.bracket.begin.apl\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.round.bracket.end.apl\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.square.bracketed.group.apl\",\n      \"patterns\": [\n        {\n          \"include\": \"#main\"\n        }\n      ],\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.square.bracket.begin.apl\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.square.bracket.end.apl\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.system.command.apl\",\n      \"begin\": \"^\\\\s*((\\\\))\\\\S+)\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.command.apl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.command.apl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#command-arguments\"\n        },\n        {\n          \"include\": \"#command-switches\"\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.user.command.apl\",\n      \"begin\": \"^\\\\s*((\\\\])\\\\S+)\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.command.apl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.command.apl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#command-arguments\"\n        },\n        {\n          \"include\": \"#command-switches\"\n        },\n        {\n          \"include\": \"#main\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"main\": {\n      \"patterns\": [\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#definition\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#sck\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#lambda\"\n        },\n        {\n          \"include\": \"#sysvars\"\n        },\n        {\n          \"include\": \"#symbols\"\n        },\n        {\n          \"include\": \"#name\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.line.apl\",\n          \"begin\": \"⍝\",\n          \"end\": \"$\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.apl\",\n          \"match\": \"¯?[0-9][¯0-9A-Za-z]*(?:\\\\.[¯0-9Ee][¯0-9A-Za-z]*)*|¯?\\\\.[0-9Ee][¯0-9A-Za-z]*\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.apl\",\n          \"begin\": \"'\",\n          \"end\": \"'|$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apl\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[^']*[^'\\\\n\\\\r\\\\\\\\]$\",\n              \"name\": \"invalid.illegal.string.apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.apl\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"|$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.apl\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.apl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[^\\\"]*[^\\\"\\\\n\\\\r\\\\\\\\]$\",\n              \"name\": \"invalid.illegal.string.apl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"name\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.readwrite.apl\",\n          \"match\": \"(?x)\\n[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.label.apl\",\n          \"match\": \"(?x)\\n^\\\\s*\\n(\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n)\\n(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.label.name.apl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.label.end.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"symbols\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\s)←(?=\\\\s|$)\",\n          \"name\": \"keyword.spaced.operator.assignment.apl\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)→(?=\\\\s|$)\",\n          \"name\": \"keyword.spaced.control.goto.apl\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)≡(?=\\\\s|$)\",\n          \"name\": \"keyword.spaced.operator.identical.apl\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)≢(?=\\\\s|$)\",\n          \"name\": \"keyword.spaced.operator.not-identical.apl\"\n        },\n        {\n          \"match\": \"\\\\+\",\n          \"name\": \"keyword.operator.plus.apl\"\n        },\n        {\n          \"match\": \"[-−]\",\n          \"name\": \"keyword.operator.minus.apl\"\n        },\n        {\n          \"match\": \"×\",\n          \"name\": \"keyword.operator.times.apl\"\n        },\n        {\n          \"match\": \"÷\",\n          \"name\": \"keyword.operator.divide.apl\"\n        },\n        {\n          \"match\": \"⌊\",\n          \"name\": \"keyword.operator.floor.apl\"\n        },\n        {\n          \"match\": \"⌈\",\n          \"name\": \"keyword.operator.ceiling.apl\"\n        },\n        {\n          \"match\": \"[∣|]\",\n          \"name\": \"keyword.operator.absolute.apl\"\n        },\n        {\n          \"match\": \"[⋆*]\",\n          \"name\": \"keyword.operator.exponent.apl\"\n        },\n        {\n          \"match\": \"⍟\",\n          \"name\": \"keyword.operator.logarithm.apl\"\n        },\n        {\n          \"match\": \"○\",\n          \"name\": \"keyword.operator.circle.apl\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.factorial.apl\"\n        },\n        {\n          \"match\": \"∧\",\n          \"name\": \"keyword.operator.and.apl\"\n        },\n        {\n          \"match\": \"∨\",\n          \"name\": \"keyword.operator.or.apl\"\n        },\n        {\n          \"match\": \"⍲\",\n          \"name\": \"keyword.operator.nand.apl\"\n        },\n        {\n          \"match\": \"⍱\",\n          \"name\": \"keyword.operator.nor.apl\"\n        },\n        {\n          \"match\": \"<\",\n          \"name\": \"keyword.operator.less.apl\"\n        },\n        {\n          \"match\": \"≤\",\n          \"name\": \"keyword.operator.less-or-equal.apl\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.equal.apl\"\n        },\n        {\n          \"match\": \"≥\",\n          \"name\": \"keyword.operator.greater-or-equal.apl\"\n        },\n        {\n          \"match\": \">\",\n          \"name\": \"keyword.operator.greater.apl\"\n        },\n        {\n          \"match\": \"≠\",\n          \"name\": \"keyword.operator.not-equal.apl\"\n        },\n        {\n          \"match\": \"[∼~]\",\n          \"name\": \"keyword.operator.tilde.apl\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.random.apl\"\n        },\n        {\n          \"match\": \"[∊∈]\",\n          \"name\": \"keyword.operator.member-of.apl\"\n        },\n        {\n          \"match\": \"⍷\",\n          \"name\": \"keyword.operator.find.apl\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"keyword.operator.comma.apl\"\n        },\n        {\n          \"match\": \"⍪\",\n          \"name\": \"keyword.operator.comma-bar.apl\"\n        },\n        {\n          \"match\": \"⌷\",\n          \"name\": \"keyword.operator.squad.apl\"\n        },\n        {\n          \"match\": \"⍳\",\n          \"name\": \"keyword.operator.iota.apl\"\n        },\n        {\n          \"match\": \"⍴\",\n          \"name\": \"keyword.operator.rho.apl\"\n        },\n        {\n          \"match\": \"↑\",\n          \"name\": \"keyword.operator.take.apl\"\n        },\n        {\n          \"match\": \"↓\",\n          \"name\": \"keyword.operator.drop.apl\"\n        },\n        {\n          \"match\": \"⊣\",\n          \"name\": \"keyword.operator.left.apl\"\n        },\n        {\n          \"match\": \"⊢\",\n          \"name\": \"keyword.operator.right.apl\"\n        },\n        {\n          \"match\": \"⊤\",\n          \"name\": \"keyword.operator.encode.apl\"\n        },\n        {\n          \"match\": \"⊥\",\n          \"name\": \"keyword.operator.decode.apl\"\n        },\n        {\n          \"match\": \"\\\\/\",\n          \"name\": \"keyword.operator.slash.apl\"\n        },\n        {\n          \"match\": \"⌿\",\n          \"name\": \"keyword.operator.slash-bar.apl\"\n        },\n        {\n          \"match\": \"\\\\x5C\",\n          \"name\": \"keyword.operator.backslash.apl\"\n        },\n        {\n          \"match\": \"⍀\",\n          \"name\": \"keyword.operator.backslash-bar.apl\"\n        },\n        {\n          \"match\": \"⌽\",\n          \"name\": \"keyword.operator.rotate-last.apl\"\n        },\n        {\n          \"match\": \"⊖\",\n          \"name\": \"keyword.operator.rotate-first.apl\"\n        },\n        {\n          \"match\": \"⍉\",\n          \"name\": \"keyword.operator.transpose.apl\"\n        },\n        {\n          \"match\": \"⍋\",\n          \"name\": \"keyword.operator.grade-up.apl\"\n        },\n        {\n          \"match\": \"⍒\",\n          \"name\": \"keyword.operator.grade-down.apl\"\n        },\n        {\n          \"match\": \"⌹\",\n          \"name\": \"keyword.operator.quad-divide.apl\"\n        },\n        {\n          \"match\": \"≡\",\n          \"name\": \"keyword.operator.identical.apl\"\n        },\n        {\n          \"match\": \"≢\",\n          \"name\": \"keyword.operator.not-identical.apl\"\n        },\n        {\n          \"match\": \"⊂\",\n          \"name\": \"keyword.operator.enclose.apl\"\n        },\n        {\n          \"match\": \"⊃\",\n          \"name\": \"keyword.operator.pick.apl\"\n        },\n        {\n          \"match\": \"∩\",\n          \"name\": \"keyword.operator.intersection.apl\"\n        },\n        {\n          \"match\": \"∪\",\n          \"name\": \"keyword.operator.union.apl\"\n        },\n        {\n          \"match\": \"⍎\",\n          \"name\": \"keyword.operator.hydrant.apl\"\n        },\n        {\n          \"match\": \"⍕\",\n          \"name\": \"keyword.operator.thorn.apl\"\n        },\n        {\n          \"match\": \"⊆\",\n          \"name\": \"keyword.operator.underbar-shoe-left.apl\"\n        },\n        {\n          \"match\": \"⍸\",\n          \"name\": \"keyword.operator.underbar-iota.apl\"\n        },\n        {\n          \"match\": \"¨\",\n          \"name\": \"keyword.operator.each.apl\"\n        },\n        {\n          \"match\": \"⍤\",\n          \"name\": \"keyword.operator.rank.apl\"\n        },\n        {\n          \"match\": \"⌸\",\n          \"name\": \"keyword.operator.quad-equal.apl\"\n        },\n        {\n          \"match\": \"⍨\",\n          \"name\": \"keyword.operator.commute.apl\"\n        },\n        {\n          \"match\": \"⍣\",\n          \"name\": \"keyword.operator.power.apl\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"keyword.operator.dot.apl\"\n        },\n        {\n          \"match\": \"∘\",\n          \"name\": \"keyword.operator.jot.apl\"\n        },\n        {\n          \"match\": \"⍠\",\n          \"name\": \"keyword.operator.quad-colon.apl\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"keyword.operator.ampersand.apl\"\n        },\n        {\n          \"match\": \"⌶\",\n          \"name\": \"keyword.operator.i-beam.apl\"\n        },\n        {\n          \"match\": \"⌺\",\n          \"name\": \"keyword.operator.quad-diamond.apl\"\n        },\n        {\n          \"match\": \"@\",\n          \"name\": \"keyword.operator.at.apl\"\n        },\n        {\n          \"match\": \"◊\",\n          \"name\": \"keyword.operator.lozenge.apl\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"keyword.operator.semicolon.apl\"\n        },\n        {\n          \"match\": \"¯\",\n          \"name\": \"keyword.operator.high-minus.apl\"\n        },\n        {\n          \"match\": \"←\",\n          \"name\": \"keyword.operator.assignment.apl\"\n        },\n        {\n          \"match\": \"→\",\n          \"name\": \"keyword.control.goto.apl\"\n        },\n        {\n          \"match\": \"⍬\",\n          \"name\": \"constant.language.zilde.apl\"\n        },\n        {\n          \"match\": \"⋄\",\n          \"name\": \"keyword.operator.diamond.apl\"\n        },\n        {\n          \"match\": \"⍫\",\n          \"name\": \"keyword.operator.lock.apl\"\n        },\n        {\n          \"match\": \"⎕\",\n          \"name\": \"keyword.operator.quad.apl\"\n        },\n        {\n          \"match\": \"##\",\n          \"name\": \"constant.language.namespace.parent.apl\"\n        },\n        {\n          \"match\": \"#\",\n          \"name\": \"constant.language.namespace.root.apl\"\n        },\n        {\n          \"match\": \"⌻\",\n          \"name\": \"keyword.operator.quad-jot.apl\"\n        },\n        {\n          \"match\": \"⌼\",\n          \"name\": \"keyword.operator.quad-circle.apl\"\n        },\n        {\n          \"match\": \"⌾\",\n          \"name\": \"keyword.operator.circle-jot.apl\"\n        },\n        {\n          \"match\": \"⍁\",\n          \"name\": \"keyword.operator.quad-slash.apl\"\n        },\n        {\n          \"match\": \"⍂\",\n          \"name\": \"keyword.operator.quad-backslash.apl\"\n        },\n        {\n          \"match\": \"⍃\",\n          \"name\": \"keyword.operator.quad-less.apl\"\n        },\n        {\n          \"match\": \"⍄\",\n          \"name\": \"keyword.operator.greater.apl\"\n        },\n        {\n          \"match\": \"⍅\",\n          \"name\": \"keyword.operator.vane-left.apl\"\n        },\n        {\n          \"match\": \"⍆\",\n          \"name\": \"keyword.operator.vane-right.apl\"\n        },\n        {\n          \"match\": \"⍇\",\n          \"name\": \"keyword.operator.quad-arrow-left.apl\"\n        },\n        {\n          \"match\": \"⍈\",\n          \"name\": \"keyword.operator.quad-arrow-right.apl\"\n        },\n        {\n          \"match\": \"⍊\",\n          \"name\": \"keyword.operator.tack-down.apl\"\n        },\n        {\n          \"match\": \"⍌\",\n          \"name\": \"keyword.operator.quad-caret-down.apl\"\n        },\n        {\n          \"match\": \"⍍\",\n          \"name\": \"keyword.operator.quad-del-up.apl\"\n        },\n        {\n          \"match\": \"⍏\",\n          \"name\": \"keyword.operator.vane-up.apl\"\n        },\n        {\n          \"match\": \"⍐\",\n          \"name\": \"keyword.operator.quad-arrow-up.apl\"\n        },\n        {\n          \"match\": \"⍑\",\n          \"name\": \"keyword.operator.tack-up.apl\"\n        },\n        {\n          \"match\": \"⍓\",\n          \"name\": \"keyword.operator.quad-caret-up.apl\"\n        },\n        {\n          \"match\": \"⍔\",\n          \"name\": \"keyword.operator.quad-del-down.apl\"\n        },\n        {\n          \"match\": \"⍖\",\n          \"name\": \"keyword.operator.vane-down.apl\"\n        },\n        {\n          \"match\": \"⍗\",\n          \"name\": \"keyword.operator.quad-arrow-down.apl\"\n        },\n        {\n          \"match\": \"⍘\",\n          \"name\": \"keyword.operator.underbar-quote.apl\"\n        },\n        {\n          \"match\": \"⍚\",\n          \"name\": \"keyword.operator.underbar-diamond.apl\"\n        },\n        {\n          \"match\": \"⍛\",\n          \"name\": \"keyword.operator.underbar-jot.apl\"\n        },\n        {\n          \"match\": \"⍜\",\n          \"name\": \"keyword.operator.underbar-circle.apl\"\n        },\n        {\n          \"match\": \"⍞\",\n          \"name\": \"keyword.operator.quad-quote.apl\"\n        },\n        {\n          \"match\": \"⍡\",\n          \"name\": \"keyword.operator.dotted-tack-up.apl\"\n        },\n        {\n          \"match\": \"⍢\",\n          \"name\": \"keyword.operator.dotted-del.apl\"\n        },\n        {\n          \"match\": \"⍥\",\n          \"name\": \"keyword.operator.dotted-circle.apl\"\n        },\n        {\n          \"match\": \"⍦\",\n          \"name\": \"keyword.operator.stile-shoe-up.apl\"\n        },\n        {\n          \"match\": \"⍧\",\n          \"name\": \"keyword.operator.stile-shoe-left.apl\"\n        },\n        {\n          \"match\": \"⍩\",\n          \"name\": \"keyword.operator.dotted-greater.apl\"\n        },\n        {\n          \"match\": \"⍭\",\n          \"name\": \"keyword.operator.stile-tilde.apl\"\n        },\n        {\n          \"match\": \"⍮\",\n          \"name\": \"keyword.operator.underbar-semicolon.apl\"\n        },\n        {\n          \"match\": \"⍯\",\n          \"name\": \"keyword.operator.quad-not-equal.apl\"\n        },\n        {\n          \"match\": \"⍰\",\n          \"name\": \"keyword.operator.quad-question.apl\"\n        }\n      ]\n    },\n    \"definition\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function.apl\",\n          \"begin\": \"(?x) ^\\\\s*? (?# 1: keyword.operator.nabla.apl) (∇) (?: \\\\s* (?: (?# 2: entity.function.return-value.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) | \\\\s* (?# 3: entity.function.return-value.shy.apl) ( (\\\\{)             (?# 4: punctuation.definition.return-value.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\})             (?# 5: punctuation.definition.return-value.end.apl) | (\\\\()             (?# 6: punctuation.definition.return-value.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\))             (?# 7: punctuation.definition.return-value.end.apl) | (\\\\(\\\\s*\\\\{)      (?# 8: punctuation.definition.return-value.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\}\\\\s*\\\\))      (?# 9: punctuation.definition.return-value.end.apl) | (\\\\{\\\\s*\\\\()      (?# 10: punctuation.definition.return-value.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\)\\\\s*\\\\})      (?# 11: punctuation.definition.return-value.end.apl) ) \\\\s* ) \\\\s* (?# 12: keyword.operator.assignment.apl) (←) )? \\\\s* (?: (?# MONADIC) (?: (?# 13: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\\\s* (?# 14: entity.function.axis.apl) ( (?# 15: punctuation.definition.axis.begin.apl) (\\\\[) \\\\s* (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* (?# 16: invalid.illegal.extra-characters.apl) (.*?) | (?# 17: invalid.illegal.apl) ([^\\\\]]*) ) \\\\s* (?# 18: punctuation.definition.axis.end.apl) (\\\\]) )? \\\\s*? (?# 19: entity.function.arguments.right.apl) ( (?<=\\\\s|\\\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | (\\\\()   (?# 20: punctuation.definition.arguments.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\))   (?# 21: punctuation.definition.arguments.end.apl) ) \\\\s* (?=;|$) ) | (?# DYADIC/AMBIVALENT) (?#==================) (?: (?# 22: entity.function.arguments.left.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s+ ) | (?# 23: entity.function.arguments.left.optional.apl) ( (\\\\{)          (?# 24: punctuation.definition.arguments.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\})          (?# 25: punctuation.definition.arguments.end.apl) | (\\\\(\\\\s*\\\\{)   (?# 26: punctuation.definition.arguments.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\}\\\\s*\\\\))   (?# 27: punctuation.definition.arguments.end.apl) | (\\\\{\\\\s*\\\\()   (?# 28: punctuation.definition.arguments.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\)\\\\s*\\\\})   (?# 29: punctuation.definition.arguments.end.apl) ) )? \\\\s* (?: (?# 30: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\\\s* (?# 31: entity.function.axis.apl) ( (?# 32: punctuation.definition.axis.begin.apl) (\\\\[) \\\\s* (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* (?# 33: invalid.illegal.extra-characters.apl) (.*?) | (?# 34: invalid.illegal.apl) ([^\\\\]]*) ) \\\\s* (?# 35: punctuation.definition.axis.end.apl) (\\\\]) )? | (?# 36: entity.function.operands.apl) ( (?# 37: punctuation.definition.operands.begin.apl) (\\\\() (?# 38: entity.function.operands.left.apl) ( \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* )? \\\\s* (?# 39: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\\\s*? (?# 40: entity.function.axis.apl) ( (?# 41: punctuation.definition.axis.begin.apl) (\\\\[) \\\\s* (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* (?# 42: invalid.illegal.extra-characters.apl) (.*?) | (?# 43: invalid.illegal.apl) ([^\\\\]]*) ) \\\\s* (?# 44: punctuation.definition.axis.end.apl) (\\\\]) )? \\\\s* (?# 45: entity.function.operands.right.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )? (?# 46: punctuation.definition.operands.end.apl) (\\\\)) ) ) \\\\s* (?# 47: entity.function.arguments.right.apl) ( (?<=\\\\s|\\\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | \\\\s* (\\\\()   (?# 48: punctuation.definition.arguments.begin.apl) (?: \\\\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )* (\\\\))   (?# 49: punctuation.definition.arguments.end.apl) )? (?#==================) ) \\\\s* (?# 50: invalid.illegal.arguments.right.apl) ([^;]+)? (?# 51: entity.function.local-variables.apl) ( (?# 52: Include “;”) ( (?> \\\\s* ; (?: \\\\s* [⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\\\s* )+ )+ ) | (?# 53: invalid.illegal.local-variables.apl) ([^⍝]+) )? \\\\s* (?# 54: comment.line.apl) (⍝.*)? $\",\n          \"end\": \"^\\\\s*?(?:(∇)|(⍫))\\\\s*?(⍝.*?)?$\",\n          \"patterns\": [\n            {\n              \"name\": \"entity.function.definition.apl\",\n              \"match\": \"(?x)\\n^\\\\s*\\n(\\n\\t(?>\\n\\t\\t;\\n\\t\\t(?:\\n\\t\\t\\t\\\\s*\\n\\t\\t\\t[⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t\\t\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n\\t\\t\\t\\\\s*\\n\\t\\t)+\\n\\t)+\\n)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"entity.function.local-variables.apl\"\n                },\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"name\": \"punctuation.separator.apl\",\n                      \"match\": \";\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.function.definition.apl\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nabla.apl\"\n            },\n            \"2\": {\n              \"name\": \"entity.function.return-value.apl\"\n            },\n            \"3\": {\n              \"name\": \"entity.function.return-value.shy.apl\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.return-value.begin.apl\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.return-value.end.apl\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.return-value.begin.apl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.return-value.end.apl\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.return-value.begin.apl\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.return-value.end.apl\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.return-value.begin.apl\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.definition.return-value.end.apl\"\n            },\n            \"12\": {\n              \"name\": \"keyword.operator.assignment.apl\"\n            },\n            \"13\": {\n              \"name\": \"entity.function.name.apl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#embolden\"\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"entity.function.axis.apl\"\n            },\n            \"15\": {\n              \"name\": \"punctuation.definition.axis.begin.apl\"\n            },\n            \"16\": {\n              \"name\": \"invalid.illegal.extra-characters.apl\"\n            },\n            \"17\": {\n              \"name\": \"invalid.illegal.apl\"\n            },\n            \"18\": {\n              \"name\": \"punctuation.definition.axis.end.apl\"\n            },\n            \"19\": {\n              \"name\": \"entity.function.arguments.right.apl\"\n            },\n            \"20\": {\n              \"name\": \"punctuation.definition.arguments.begin.apl\"\n            },\n            \"21\": {\n              \"name\": \"punctuation.definition.arguments.end.apl\"\n            },\n            \"22\": {\n              \"name\": \"entity.function.arguments.left.apl\"\n            },\n            \"23\": {\n              \"name\": \"entity.function.arguments.left.optional.apl\"\n            },\n            \"24\": {\n              \"name\": \"punctuation.definition.arguments.begin.apl\"\n            },\n            \"25\": {\n              \"name\": \"punctuation.definition.arguments.end.apl\"\n            },\n            \"26\": {\n              \"name\": \"punctuation.definition.arguments.begin.apl\"\n            },\n            \"27\": {\n              \"name\": \"punctuation.definition.arguments.end.apl\"\n            },\n            \"28\": {\n              \"name\": \"punctuation.definition.arguments.begin.apl\"\n            },\n            \"29\": {\n              \"name\": \"punctuation.definition.arguments.end.apl\"\n            },\n            \"30\": {\n              \"name\": \"entity.function.name.apl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#embolden\"\n                }\n              ]\n            },\n            \"31\": {\n              \"name\": \"entity.function.axis.apl\"\n            },\n            \"32\": {\n              \"name\": \"punctuation.definition.axis.begin.apl\"\n            },\n            \"33\": {\n              \"name\": \"invalid.illegal.extra-characters.apl\"\n            },\n            \"34\": {\n              \"name\": \"invalid.illegal.apl\"\n            },\n            \"35\": {\n              \"name\": \"punctuation.definition.axis.end.apl\"\n            },\n            \"36\": {\n              \"name\": \"entity.function.operands.apl\"\n            },\n            \"37\": {\n              \"name\": \"punctuation.definition.operands.begin.apl\"\n            },\n            \"38\": {\n              \"name\": \"entity.function.operands.left.apl\"\n            },\n            \"39\": {\n              \"name\": \"entity.function.name.apl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#embolden\"\n                }\n              ]\n            },\n            \"40\": {\n              \"name\": \"entity.function.axis.apl\"\n            },\n            \"41\": {\n              \"name\": \"punctuation.definition.axis.begin.apl\"\n            },\n            \"42\": {\n              \"name\": \"invalid.illegal.extra-characters.apl\"\n            },\n            \"43\": {\n              \"name\": \"invalid.illegal.apl\"\n            },\n            \"44\": {\n              \"name\": \"punctuation.definition.axis.end.apl\"\n            },\n            \"45\": {\n              \"name\": \"entity.function.operands.right.apl\"\n            },\n            \"46\": {\n              \"name\": \"punctuation.definition.operands.end.apl\"\n            },\n            \"47\": {\n              \"name\": \"entity.function.arguments.right.apl\"\n            },\n            \"48\": {\n              \"name\": \"punctuation.definition.arguments.begin.apl\"\n            },\n            \"49\": {\n              \"name\": \"punctuation.definition.arguments.end.apl\"\n            },\n            \"50\": {\n              \"name\": \"invalid.illegal.arguments.right.apl\"\n            },\n            \"51\": {\n              \"name\": \"entity.function.local-variables.apl\"\n            },\n            \"52\": {\n              \"patterns\": [\n                {\n                  \"name\": \"punctuation.separator.apl\",\n                  \"match\": \";\"\n                }\n              ]\n            },\n            \"53\": {\n              \"name\": \"invalid.illegal.local-variables.apl\"\n            },\n            \"54\": {\n              \"name\": \"comment.line.apl\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.nabla.apl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.lock.apl\"\n            },\n            \"3\": {\n              \"name\": \"comment.line.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"embolden\": {\n      \"patterns\": [\n        {\n          \"name\": \"markup.bold.identifier.apl\",\n          \"match\": \".+\"\n        }\n      ]\n    },\n    \"lambda\": {\n      \"name\": \"meta.lambda.function.apl\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.lambda.begin.apl\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.lambda.end.apl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#main\"\n        },\n        {\n          \"include\": \"#lambda-variables\"\n        }\n      ]\n    },\n    \"lambda-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"⍺⍺\",\n          \"name\": \"constant.language.lambda.operands.left.apl\"\n        },\n        {\n          \"match\": \"⍵⍵\",\n          \"name\": \"constant.language.lambda.operands.right.apl\"\n        },\n        {\n          \"match\": \"[⍺⍶]\",\n          \"name\": \"constant.language.lambda.arguments.left.apl\"\n        },\n        {\n          \"match\": \"[⍵⍹]\",\n          \"name\": \"constant.language.lambda.arguments.right.apl\"\n        },\n        {\n          \"match\": \"χ\",\n          \"name\": \"constant.language.lambda.arguments.axis.apl\"\n        },\n        {\n          \"match\": \"∇∇\",\n          \"name\": \"constant.language.lambda.operands.self.operator.apl\"\n        },\n        {\n          \"match\": \"∇\",\n          \"name\": \"constant.language.lambda.operands.self.function.apl\"\n        },\n        {\n          \"match\": \"λ\",\n          \"name\": \"constant.language.lambda.symbol.apl\"\n        }\n      ]\n    },\n    \"sysvars\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(⎕)|(⍞))[A-Za-z]*\",\n          \"name\": \"support.system.variable.apl\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.quad.apl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.quad-quote.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"command-arguments\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.parameter.argument.apl\",\n          \"begin\": \"\\\\b(?=\\\\S)\",\n          \"end\": \"\\\\b(?=\\\\s)\",\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command-switches\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.parameter.switch.apl\",\n          \"begin\": \"(?x)\\n(?<=\\\\s)(-)\\n(\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n)\\n(=)\",\n          \"end\": \"\\\\b(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.delimiter.switch.apl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.switch.apl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.assignment.switch.apl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ]\n        },\n        {\n          \"name\": \"variable.parameter.switch.apl\",\n          \"match\": \"(?x)\\n(?<=\\\\s)(-)\\n(\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n)\\n(?!=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.delimiter.switch.apl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.switch.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"sck\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.sck.apl\",\n          \"match\": \"(?<=\\\\s|^)(:)[A-Za-z]+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.sck.begin.apl\"\n            }\n          }\n        }\n      ]\n    },\n    \"class\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(?<=\\\\s|^)\\n((:)Class)\\n\\\\s+\\n(\\n\\t'[^']*'?\\n\\t|\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n)\\n\\\\s*\\n(\\n\\t(:)\\n\\t\\\\s*\\n\\t(?:\\n\\t\\t(\\n\\t\\t\\t'[^']*'?\\n\\t\\t\\t|\\n\\t\\t\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t\\t\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n\\t\\t)\\n\\t\\t\\\\s*\\n\\t)?\\n)?\\n(.*?)$\",\n          \"end\": \"(?<=\\\\s|^)((:)EndClass)(?=\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.class.apl\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.class.apl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.class.apl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.apl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#strings\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.other.inherited-class.apl\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.inheritance.apl\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#strings\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"entity.other.class.interfaces.apl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#csv\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.class.apl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.class.apl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.field.apl\",\n              \"begin\": \"(?<=\\\\s|^)(:)Field(?=\\\\s)\",\n              \"end\": \"\\\\s*(←.*)?(?:$|(?=⍝))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.field.apl\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.field.apl\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.other.initial-value.apl\"\n                },\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#main\"\n                    }\n                  ]\n                }\n              },\n              \"patterns\": [\n                {\n                  \"name\": \"storage.modifier.access.public.apl\",\n                  \"match\": \"(?<=\\\\s|^)Public(?=\\\\s|$)\"\n                },\n                {\n                  \"name\": \"storage.modifier.access.private.apl\",\n                  \"match\": \"(?<=\\\\s|^)Private(?=\\\\s|$)\"\n                },\n                {\n                  \"name\": \"storage.modifier.shared.apl\",\n                  \"match\": \"(?<=\\\\s|^)Shared(?=\\\\s|$)\"\n                },\n                {\n                  \"name\": \"storage.modifier.instance.apl\",\n                  \"match\": \"(?<=\\\\s|^)Instance(?=\\\\s|$)\"\n                },\n                {\n                  \"name\": \"storage.modifier.readonly.apl\",\n                  \"match\": \"(?<=\\\\s|^)ReadOnly(?=\\\\s|$)\"\n                },\n                {\n                  \"name\": \"entity.name.type.apl\",\n                  \"match\": \"(?x)\\n(\\n\\t'[^']*'?\\n\\t|\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\\n\\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\\n)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#strings\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"csv\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.apl\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"heredocs\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")((?i).*?HTML?.*?|END-OF-⎕INP)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"text.embedded.html.basic\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")((?i).*?(?:XML|XSLT|SVG|RSS).*?)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"text.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            },\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")((?i).*?(?:CSS|stylesheet).*?)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"source.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            },\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")((?i).*?(?:JS(?!ON)|(?:ECMA|J|Java).?Script).*?)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"source.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            },\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")((?i).*?(?:JSON).*?)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"source.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            },\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")(?i)((?:Raw|Plain)?\\\\s*Te?xt)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"contentName\": \"text.embedded.plain\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-apl\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.heredoc.apl\",\n          \"begin\": \"^.*?⎕INP\\\\s+('|\\\")(.*?)\\\\1.*$\",\n          \"end\": \"^.*?\\\\2.*?$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#main\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.other.apl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"embedded-apl\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.embedded.block.apl\",\n          \"begin\": \"(?i)(<(\\\\?|%)(?:apl(?=\\\\s+)|=))\",\n          \"end\": \"(?<=\\\\s)(\\\\2>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#main\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.apl\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.end.apl\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/applescript.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"applescript\", \"scpt\", \"script editor\"],\n  \"firstLineMatch\": \"^#!.*(osascript)\",\n  \"keyEquivalent\": \"^~A\",\n  \"name\": \"applescript\",\n  \"patterns\": [\n    {\n      \"include\": \"#blocks\"\n    },\n    {\n      \"include\": \"#inline\"\n    }\n  ],\n  \"repository\": {\n    \"attributes.considering-ignoring\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.attributes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(and)\\\\b\",\n          \"name\": \"keyword.control.attributes.and.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:case|diacriticals|hyphens|numeric\\\\s+strings|punctuation|white\\\\s+space)\\\\b\",\n          \"name\": \"constant.other.attributes.text.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:application\\\\s+responses)\\\\b\",\n          \"name\": \"constant.other.attributes.application.applescript\"\n        }\n      ]\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(script)\\\\s+(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.script.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.script-object.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+script)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.script.applescript\"\n            }\n          },\n          \"name\": \"meta.block.script.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(\\\\()\\t\\t\\t\\t\\t\\t\\t# opening paren\\n\\t\\t\\t\\t\\t\\t\\t((?:[\\\\s,:\\\\{\\\\}]*(?:\\\\w+)?)*)\\t# parameters\\n\\t\\t\\t\\t\\t\\t(\\\\))\\t\\t\\t\\t\\t\\t\\t# closing paren\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.applescript\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.handler.applescript\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.applescript\"\n            }\n          },\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThis is not a very well-designed rule.  For now,\\n\\t\\t\\t\\t\\t\\twe can leave it like this though, as it sorta works.\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.positional.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(?:\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t(of|in)\\\\s+\\t\\t\\t\\t\\t# \\\"of\\\" or \\\"in\\\"\\n\\t\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t# direct parameter\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t(?=\\\\s+(above|against|apart\\\\s+from|around|aside\\\\s+from|at|below|beneath|beside|between|by|for|from|instead\\\\s+of|into|on|onto|out\\\\s+of|over|thru|under)\\\\b)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.handler.direct.applescript\"\n            }\n          },\n          \"comment\": \"TODO: match `given` parameters\",\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.prepositional.applescript\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.preposition.applescript\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.handler.applescript\"\n                }\n              },\n              \"match\": \"\\\\b(?i:above|against|apart\\\\s+from|around|aside\\\\s+from|at|below|beneath|beside|between|by|for|from|instead\\\\s+of|into|on|onto|out\\\\s+of|over|thru|under)\\\\s+(\\\\w+)\\\\b\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?x)\\n\\t\\t\\t\\t\\t\\t\\\\s*(to|on)\\\\s+ \\t\\t\\t\\t\\t# \\\"on\\\" or \\\"to\\\"\\n\\t\\t\\t\\t\\t\\t(\\\\w+)\\t\\t\\t\\t\\t\\t\\t# function name\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(--.*?)?$)\\t\\t\\t\\t# nothing else\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.handler.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end)(?:\\\\s+(\\\\2))?(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.function.applescript\"\n            }\n          },\n          \"name\": \"meta.function.parameterless.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#blocks.tell\"\n        },\n        {\n          \"include\": \"#blocks.repeat\"\n        },\n        {\n          \"include\": \"#blocks.statement\"\n        },\n        {\n          \"include\": \"#blocks.other\"\n        }\n      ]\n    },\n    \"blocks.other\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(considering)\\\\b\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+considering)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.considering.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=considering)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.considering.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=ignoring)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.ignoring.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(but)\\\\b\",\n              \"name\": \"keyword.control.but.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(ignoring)\\\\b\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+ignoring)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.ignoring.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=considering)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.considering.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=ignoring)\",\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.array.attributes.ignoring.applescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes.considering-ignoring\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(but)\\\\b\",\n              \"name\": \"keyword.control.but.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+if)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.if.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(then)\\\\b\",\n              \"name\": \"keyword.control.then.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(else\\\\s+if)\\\\b\",\n              \"name\": \"keyword.control.else-if.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(else)\\\\b\",\n              \"name\": \"keyword.control.else.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+(try|error))?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.try.applescript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*(on\\\\s+error)\\\\b\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.exception.on-error.applescript\"\n                }\n              },\n              \"end\": \"(?<!¬)$\",\n              \"name\": \"meta.property.error.applescript\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(?i:number|partial|from|to)\\\\b\",\n                  \"name\": \"keyword.control.exception.modifier.applescript\"\n                },\n                {\n                  \"include\": \"#inline\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(using\\\\s+terms\\\\s+from)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.terms.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+using\\\\s+terms\\\\s+from)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.terms.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(with\\\\s+timeout(\\\\s+of)?)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.timeout.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+timeout)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.timeout.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(with\\\\s+transaction(\\\\s+of)?)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.transaction.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+transaction)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.transaction.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.repeat\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(until)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.until.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.until.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.while.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.while.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\s+(with)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.until.applescript\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.loop.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.with.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(from|to|by)\\\\b\",\n              \"name\": \"keyword.control.modifier.range.applescript\"\n            },\n            {\n              \"match\": \"\\\\b(in)\\\\b\",\n              \"name\": \"keyword.control.modifier.list.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\b(?=\\\\s*(--.*?)?$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.forever.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(repeat)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.repeat.applescript\"\n            }\n          },\n          \"end\": \"^\\\\s*(end(?:\\\\s+repeat)?)(?=\\\\s*(--.*?)?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.applescript\"\n            }\n          },\n          \"name\": \"meta.block.repeat.times.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(times)\\\\b\",\n              \"name\": \"keyword.control.times.applescript\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(prop(?:erty)?)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.property.applescript\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.property.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.property.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(set)\\\\s+(\\\\w+)\\\\s+(to)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.set.applescript\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.set.applescript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.def.set.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.set.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(local)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.local.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.local.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.variables.local.applescript\"\n            },\n            {\n              \"match\": \"\\\\b\\\\w+\",\n              \"name\": \"variable.other.readwrite.local.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(global)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.def.global.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.global.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.variables.global.applescript\"\n            },\n            {\n              \"match\": \"\\\\b\\\\w+\",\n              \"name\": \"variable.other.readwrite.global.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(error)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.error.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.error.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(number|partial|from|to)\\\\b\",\n              \"name\": \"keyword.control.exception.modifier.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(if)\\\\b(?=.*\\\\bthen\\\\b(?!\\\\s*(--.*?)?$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.applescript\"\n            }\n          },\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.statement.if-then.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        }\n      ]\n    },\n    \"blocks.tell\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:textmate)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell Textmate\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.textmate.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#textmate\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:finder)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell Finder\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.finder.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#finder\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:system events)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell System Events\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.system-events.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#system-events\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+\\\"(?i:itunes)\\\")(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell iTunes\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.itunes.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#itunes\"\n            },\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\s+process\\\\b)(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell generic application process\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application-process.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=app(lication)?\\\\b)(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell generic application\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.application.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#standard-suite\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?!.*\\\\bto(?!\\\\s+tell)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"generic tell block\",\n          \"end\": \"^\\\\s*(end(?:\\\\s+tell)?)(?=\\\\s*(--.*?)?$)\",\n          \"name\": \"meta.block.tell.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(tell)\\\\s+(?=.*\\\\bto\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.tell.applescript\"\n            }\n          },\n          \"comment\": \"tell … to statement\",\n          \"end\": \"(?<!¬)$\",\n          \"name\": \"meta.block.tell.generic.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"built-in\": {\n      \"patterns\": [\n        {\n          \"include\": \"#built-in.constant\"\n        },\n        {\n          \"include\": \"#built-in.keyword\"\n        },\n        {\n          \"include\": \"#built-in.support\"\n        },\n        {\n          \"include\": \"#built-in.punctuation\"\n        }\n      ]\n    },\n    \"built-in.constant\": {\n      \"patterns\": [\n        {\n          \"comment\": \"yes/no can’t always be used as booleans, e.g. in an if() expression. But they work e.g. for boolean arguments.\",\n          \"match\": \"\\\\b(?i:true|false|yes|no)\\\\b\",\n          \"name\": \"constant.language.boolean.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:null|missing\\\\s+value)\\\\b\",\n          \"name\": \"constant.language.null.applescript\"\n        },\n        {\n          \"match\": \"-?\\\\b\\\\d+((\\\\.(\\\\d+\\\\b)?)?(?i:e\\\\+?\\\\d*\\\\b)?|\\\\b)\",\n          \"name\": \"constant.numeric.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:space|tab|return|linefeed|quote)\\\\b\",\n          \"name\": \"constant.other.text.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:all\\\\s+(caps|lowercase)|bold|condensed|expanded|hidden|italic|outline|plain|shadow|small\\\\s+caps|strikethrough|(sub|super)script|underline)\\\\b\",\n          \"name\": \"constant.other.styles.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\\\\b\",\n          \"name\": \"constant.other.time.month.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(rsday)?|Fri(day)?|Sat(urday)?|Sun(day)?)\\\\b\",\n          \"name\": \"constant.other.time.weekday.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:AppleScript|pi|result|version|current\\\\s+application|its?|m[ey])\\\\b\",\n          \"name\": \"constant.other.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:text\\\\s+item\\\\s+delimiters|print\\\\s+(length|depth))\\\\b\",\n          \"name\": \"variable.language.applescript\"\n        }\n      ]\n    },\n    \"built-in.keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&|\\\\*|\\\\+|-|/|÷|\\\\^)\",\n          \"name\": \"keyword.operator.arithmetic.applescript\"\n        },\n        {\n          \"match\": \"(=|≠|>|<|≥|>=|≤|<=)\",\n          \"name\": \"keyword.operator.comparison.applescript\"\n        },\n        {\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(and|or|div|mod|as|not\\n\\t\\t\\t\\t\\t\\t|(a\\\\s+)?(ref(\\\\s+to)?|reference\\\\s+to)\\n\\t\\t\\t\\t\\t\\t|equal(s|\\\\s+to)|contains?|comes\\\\s+(after|before)|(start|begin|end)s?\\\\s+with\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"keyword.operator.word.applescript\"\n        },\n        {\n          \"comment\": \"In double quotes so we can use a single quote in the keywords.\",\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(is(n't|\\\\s+not)?(\\\\s+(equal(\\\\s+to)?|(less|greater)\\\\s+than(\\\\s+or\\\\s+equal(\\\\s+to)?)?|in|contained\\\\s+by))?\\n\\t\\t\\t\\t\\t\\t|does(n't|\\\\s+not)\\\\s+(equal|come\\\\s+(before|after)|contain)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"keyword.operator.word.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:some|every|whose|where|that|id|index|\\\\d+(st|nd|rd|th)|first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|last|front|back|middle|named|beginning|end|from|to|thr(u|ough)|before|(front|back|beginning|end)\\\\s+of|after|behind|in\\\\s+(front|back|beginning|end)\\\\s+of)\\\\b\",\n          \"name\": \"keyword.operator.reference.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:continue|return|exit(\\\\s+repeat)?)\\\\b\",\n          \"name\": \"keyword.control.loop.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:about|above|after|against|and|apart\\\\s+from|around|as|aside\\\\s+from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|contains|copy|div|does|eighth|else|end|equal|equals|error|every|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead\\\\s+of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out\\\\s+of|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\\\b\",\n          \"name\": \"keyword.other.applescript\"\n        }\n      ]\n    },\n    \"built-in.punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"¬\",\n          \"name\": \"punctuation.separator.continuation.line.applescript\"\n        },\n        {\n          \"comment\": \"the : in property assignments\",\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.property.applescript\"\n        },\n        {\n          \"comment\": \"the parentheses in groups\",\n          \"match\": \"[()]\",\n          \"name\": \"punctuation.section.group.applescript\"\n        }\n      ]\n    },\n    \"built-in.support\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:POSIX\\\\s+path|frontmost|id|name|running|version|days?|weekdays?|months?|years?|time|date\\\\s+string|time\\\\s+string|length|rest|reverse|items?|contents|quoted\\\\s+form|characters?|paragraphs?|words?)\\\\b\",\n          \"name\": \"support.function.built-in.property.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:activate|log|clipboard\\\\s+info|set\\\\s+the\\\\s+clipboard\\\\s+to|the\\\\s+clipboard|info\\\\s+for|list\\\\s+(disks|folder)|mount\\\\s+volume|path\\\\s+to(\\\\s+resource)?|close\\\\s+access|get\\\\s+eof|open\\\\s+for\\\\s+access|read|set\\\\s+eof|write|open\\\\s+location|current\\\\s+date|do\\\\s+shell\\\\s+script|get\\\\s+volume\\\\s+settings|random\\\\s+number|round|set\\\\s+volume|system\\\\s+(attribute|info)|time\\\\s+to\\\\s+GMT|load\\\\s+script|run\\\\s+script|scripting\\\\s+components|store\\\\s+script|copy|count|get|launch|run|set|ASCII\\\\s+(character|number)|localized\\\\s+string|offset|summarize|beep|choose\\\\s+(application|color|file(\\\\s+name)?|folder|from\\\\s+list|remote\\\\s+application|URL)|delay|display\\\\s+(alert|dialog)|say)\\\\b\",\n          \"name\": \"support.function.built-in.command.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:get|run)\\\\b\",\n          \"name\": \"support.function.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:anything|data|text|upper\\\\s+case|propert(y|ies))\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:alias|class)(es)?\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:app(lication)?|boolean|character|constant|date|event|file(\\\\s+specification)?|handler|integer|item|keystroke|linked\\\\s+list|list|machine|number|picture|preposition|POSIX\\\\s+file|real|record|reference(\\\\s+form)?|RGB\\\\s+color|script|sound|text\\\\s+item|type\\\\s+class|vector|writing\\\\s+code(\\\\s+info)?|zone|((international|styled(\\\\s+(Clipboard|Unicode))?|Unicode)\\\\s+)?text|((C|encoded|Pascal)\\\\s+)?string)s?\\\\b\",\n          \"name\": \"support.class.built-in.applescript\"\n        },\n        {\n          \"match\": \"(?ix)\\\\b\\n\\t\\t\\t\\t\\t\\t(\\t(cubic\\\\s+(centi)?|square\\\\s+(kilo)?|centi|kilo)met(er|re)s\\n\\t\\t\\t\\t\\t\\t|\\tsquare\\\\s+(yards|feet|miles)|cubic\\\\s+(yards|feet|inches)|miles|inches\\n\\t\\t\\t\\t\\t\\t|\\tlit(re|er)s|gallons|quarts\\n\\t\\t\\t\\t\\t\\t|\\t(kilo)?grams|ounces|pounds\\n\\t\\t\\t\\t\\t\\t|\\tdegrees\\\\s+(Celsius|Fahrenheit|Kelvin)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\\\b\",\n          \"name\": \"support.class.built-in.unit.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(?i:seconds|minutes|hours|days)\\\\b\",\n          \"name\": \"support.class.built-in.time.applescript\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#!)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.applescript\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.applescript\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.applescript\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.applescript\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.applescript\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.applescript\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.applescript\"\n            }\n          },\n          \"end\": \"\\\\*\\\\)\",\n          \"name\": \"comment.block.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments.nested\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments.nested\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.applescript\"\n            }\n          },\n          \"end\": \"\\\\*\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.applescript\"\n            }\n          },\n          \"name\": \"comment.block.applescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments.nested\"\n            }\n          ]\n        }\n      ]\n    },\n    \"data-structures\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.begin.applescript\"\n            }\n          },\n          \"comment\": \"We cannot necessarily distinguish \\\"records\\\" from \\\"arrays\\\", and so this could be either.\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.applescript\"\n            }\n          },\n          \"name\": \"meta.array.applescript\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.applescript\"\n                },\n                \"2\": {\n                  \"name\": \"meta.identifier.applescript\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.applescript\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.applescript\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.separator.key-value.applescript\"\n                }\n              },\n              \"match\": \"(\\\\w+|((\\\\|)[^|\\\\n]*(\\\\|)))\\\\s*(:)\"\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.applescript\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.array.applescript\"\n            },\n            {\n              \"include\": \"#inline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=application )|(?<=app ))(\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.applescript\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"name\": \"string.quoted.double.application-name.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.applescript\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"name\": \"string.quoted.double.applescript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.applescript\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.identifier.applescript\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.applescript\"\n            }\n          },\n          \"match\": \"(\\\\|)[^|\\\\n]*(\\\\|)\",\n          \"name\": \"meta.identifier.applescript\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"support.class.built-in.applescript\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.utxt.applescript\"\n            },\n            \"4\": {\n              \"name\": \"string.unquoted.data.applescript\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.applescript\"\n            },\n            \"7\": {\n              \"name\": \"support.class.built-in.applescript\"\n            }\n          },\n          \"match\": \"(«)(data) (utxt|utf8)([[:xdigit:]]*)(»)(?:\\\\s+(as)\\\\s+(?i:Unicode\\\\s+text))?\",\n          \"name\": \"constant.other.data.utxt.applescript\"\n        },\n        {\n          \"begin\": \"(«)(\\\\w+)\\\\b(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"support.class.built-in.applescript\"\n            }\n          },\n          \"end\": \"(»)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            }\n          },\n          \"name\": \"constant.other.data.raw.applescript\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.data.applescript\"\n            }\n          },\n          \"match\": \"(«)[^»]*(»)\",\n          \"name\": \"invalid.illegal.data.applescript\"\n        }\n      ]\n    },\n    \"finder\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(item|container|(computer|disk|trash)-object|disk|folder|((alias|application|document|internet location) )?file|clipping|package)s?\\\\b\",\n          \"name\": \"support.class.finder.items.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((Finder|desktop|information|preferences|clipping) )windows?\\\\b\",\n          \"name\": \"support.class.finder.window-classes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(preferences|(icon|column|list) view options|(label|column|alias list)s?)\\\\b\",\n          \"name\": \"support.class.finder.type-definitions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(copy|find|sort|clean up|eject|empty( trash)|erase|reveal|update)\\\\b\",\n          \"name\": \"support.function.finder.items.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(insertion location|product version|startup disk|desktop|trash|home|computer container|finder preferences)\\\\b\",\n          \"name\": \"support.constant.finder.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(visible)\\\\b\",\n          \"name\": \"support.variable.finder.applescript\"\n        }\n      ]\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#data-structures\"\n        },\n        {\n          \"include\": \"#built-in\"\n        },\n        {\n          \"include\": \"#standardadditions\"\n        }\n      ]\n    },\n    \"itunes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(artwork|application|encoder|EQ preset|item|source|visual|(EQ |browser )?window|((audio CD|device|shared|URL|file) )?track|playlist window|((audio CD|device|radio tuner|library|folder|user) )?playlist)s?\\\\b\",\n          \"name\": \"support.class.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(add|back track|convert|fast forward|(next|previous) track|pause|play(pause)?|refresh|resume|rewind|search|stop|update|eject|subscribe|update(Podcast|AllPodcasts)|download)\\\\b\",\n          \"name\": \"support.function.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current (playlist|stream (title|URL)|track)|player state)\\\\b\",\n          \"name\": \"support.constant.itunes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current (encoder|EQ preset|visual)|EQ enabled|fixed indexing|full screen|mute|player position|sound volume|visuals enabled|visual size)\\\\b\",\n          \"name\": \"support.variable.itunes.applescript\"\n        }\n      ]\n    },\n    \"standard-suite\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(colors?|documents?|items?|windows?)\\\\b\",\n          \"name\": \"support.class.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(close|count|delete|duplicate|exists|make|move|open|print|quit|save|activate|select|data size)\\\\b\",\n          \"name\": \"support.function.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(name|frontmost|version)\\\\b\",\n          \"name\": \"support.constant.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(selection)\\\\b\",\n          \"name\": \"support.variable.standard-suite.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(attachments?|attribute runs?|characters?|paragraphs?|texts?|words?)\\\\b\",\n          \"name\": \"support.class.text-suite.applescript\"\n        }\n      ]\n    },\n    \"standardadditions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((alert|dialog) reply)\\\\b\",\n          \"name\": \"support.class.standardadditions.user-interaction.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(file information)\\\\b\",\n          \"name\": \"support.class.standardadditions.file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(POSIX files?|system information|volume settings)\\\\b\",\n          \"name\": \"support.class.standardadditions.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(URLs?|internet address(es)?|web pages?|FTP items?)\\\\b\",\n          \"name\": \"support.class.standardadditions.internet.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(info for|list (disks|folder)|mount volume|path to( resource)?)\\\\b\",\n          \"name\": \"support.function.standardadditions.file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(beep|choose (application|color|file( name)?|folder|from list|remote application|URL)|delay|display (alert|dialog)|say)\\\\b\",\n          \"name\": \"support.function.standardadditions.user-interaction.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(ASCII (character|number)|localized string|offset|summarize)\\\\b\",\n          \"name\": \"support.function.standardadditions.string.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(set the clipboard to|the clipboard|clipboard info)\\\\b\",\n          \"name\": \"support.function.standardadditions.clipboard.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(open for access|close access|read|write|get eof|set eof)\\\\b\",\n          \"name\": \"support.function.standardadditions.file-i-o.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((load|store|run) script|scripting components)\\\\b\",\n          \"name\": \"support.function.standardadditions.scripting.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(current date|do shell script|get volume settings|random number|round|set volume|system attribute|system info|time to GMT)\\\\b\",\n          \"name\": \"support.function.standardadditions.miscellaneous.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(opening folder|(closing|moving) folder window for|adding folder items to|removing folder items from)\\\\b\",\n          \"name\": \"support.function.standardadditions.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(open location|handle CGI request)\\\\b\",\n          \"name\": \"support.function.standardadditions.internet.applescript\"\n        }\n      ]\n    },\n    \"system-events\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(audio (data|file))\\\\b\",\n          \"name\": \"support.class.system-events.audio-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(alias(es)?|(Classic|local|network|system|user) domain objects?|disk( item)?s?|domains?|file( package)?s?|folders?|items?)\\\\b\",\n          \"name\": \"support.class.system-events.disk-folder-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(delete|open|move)\\\\b\",\n          \"name\": \"support.function.system-events.disk-folder-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(folder actions?|scripts?)\\\\b\",\n          \"name\": \"support.class.system-events.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(attach action to|attached scripts|edit action of|remove action from)\\\\b\",\n          \"name\": \"support.function.system-events.folder-actions.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(movie data|movie file)\\\\b\",\n          \"name\": \"support.class.system-events.movie-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(log out|restart|shut down|sleep)\\\\b\",\n          \"name\": \"support.function.system-events.power.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(((application |desk accessory )?process|(check|combo )?box)(es)?|(action|attribute|browser|(busy|progress|relevance) indicator|color well|column|drawer|group|grow area|image|incrementor|list|menu( bar)?( item)?|(menu |pop up |radio )?button|outline|(radio|tab|splitter) group|row|scroll (area|bar)|sheet|slider|splitter|static text|table|text (area|field)|tool bar|UI element|window)s?)\\\\b\",\n          \"name\": \"support.class.system-events.processes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(click|key code|keystroke|perform|select)\\\\b\",\n          \"name\": \"support.function.system-events.processes.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(property list (file|item))\\\\b\",\n          \"name\": \"support.class.system-events.property-list.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(annotation|QuickTime (data|file)|track)s?\\\\b\",\n          \"name\": \"support.class.system-events.quicktime-file.applescript\"\n        },\n        {\n          \"match\": \"\\\\b((abort|begin|end) transaction)\\\\b\",\n          \"name\": \"support.function.system-events.system-events.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(XML (attribute|data|element|file)s?)\\\\b\",\n          \"name\": \"support.class.system-events.xml.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(print settings|users?|login items?)\\\\b\",\n          \"name\": \"support.class.sytem-events.other.applescript\"\n        }\n      ]\n    },\n    \"textmate\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(print settings)\\\\b\",\n          \"name\": \"support.class.textmate.applescript\"\n        },\n        {\n          \"match\": \"\\\\b(get url|insert|reload bundles)\\\\b\",\n          \"name\": \"support.function.textmate.applescript\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.applescript\",\n  \"uuid\": \"777CF925-14B9-428E-B07B-17FAAB8FA27E\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/asm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"asm\", \"nasm\", \"yasm\", \"inc\", \"s\"],\n  \"name\": \"asm\",\n  \"patterns\": [\n    {\n      \"include\": \"#registers\"\n    },\n    {\n      \"include\": \"#mnemonics\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"include\": \"#support\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#preprocessor\"\n    },\n    {\n      \"include\": \"#strings\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(;|(^|\\\\s)#\\\\s).*$\",\n          \"name\": \"comment.line\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block\"\n        },\n        {\n          \"begin\": \"^\\\\s*[\\\\#%]\\\\s*if\\\\s+0\\\\b\",\n          \"end\": \"^\\\\s*[\\\\#%]\\\\s*endif\\\\b\",\n          \"name\": \"comment.preprocessor\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b0[by](?:[01][01_]*)\\\\.(?:(?:[01][01_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.binary.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[by](?:[01][01_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.binary.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[oq](?:[0-7][0-7_]*)\\\\.(?:(?:[0-7][0-7_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.octal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[oq](?:[0-7][0-7_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.octal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:0[dt])?(?:[0-9][0-9_]*)\\\\.(?:(?:[0-9][0-9_]*)?(?:e[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.decimal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[0-9][0-9_]*)(?:e[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.decimal.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[0-9][0-9_]*)p(?:[0-9][0-9_]*)?\\\\b\",\n          \"name\": \"constant.numeric.decimal.packed-bcd.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)\\\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?\\\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\\\b)?\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\\\b\",\n          \"name\": \"constant.numeric.hex.floating-point.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[by](?:[01][01_]*))|(?:(?:[01][01_]*)[by]))\\\\b\",\n          \"name\": \"constant.numeric.binary.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[oq](?:[0-7][0-7_]*))|(?:(?:[0-7][0-7_]*)[oq]))\\\\b\",\n          \"name\": \"constant.numeric.octal.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[dt](?:[0-9][0-9_]*))|(?:(?:[0-9][0-9_]*)[dt]?))\\\\b\",\n          \"name\": \"constant.numeric.decimal.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)(?:\\\\$[0-9]\\\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?)\\\\b\",\n          \"name\": \"constant.numeric.hex.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:0[xh](?:[[:xdigit:]][[:xdigit:]_]*))|(?:(?:[[:xdigit:]][[:xdigit:]_]*)[hxHX]))\\\\b\",\n          \"name\": \"constant.numeric.hex.asm.x86_64\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"match\": \"((section|segment)\\\\s+)?\\\\.((ro)?data|bss|text)\",\n          \"name\": \"entity.name.section\"\n        },\n        {\n          \"match\": \"^\\\\.?(globa?l|extern)\\\\b\",\n          \"name\": \"entity.directive\"\n        },\n        {\n          \"match\": \"(\\\\$\\\\w+)\\\\b\",\n          \"name\": \"text.variable\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.special.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(\\\\.\\\\.@)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\\\:)?|\\\\b)\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(?:(\\\\.)?|\\\\b)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\\\:))\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(\\\\.)([0-9]+(?:[[:alnum:]_$#@~.?]*))(?:(\\\\:)?|\\\\b)\",\n          \"name\": \"entity.name.function.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.entity.name.function.asm.x86_64\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.asm.x86_64\"\n            }\n          },\n          \"match\": \"(?:(\\\\.)?|\\\\b)([0-9$@~](?:[[:alnum:]_$#@~.?]*))(?:(\\\\:))\",\n          \"name\": \"invalid.illegal.entity.name.function.asm.x86_64\"\n        }\n      ]\n    },\n    \"mnemonics\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-general-purpose\"\n        },\n        {\n          \"include\": \"#mnemonics-fpu\"\n        },\n        {\n          \"include\": \"#mnemonics-mmx\"\n        },\n        {\n          \"include\": \"#mnemonics-sse\"\n        },\n        {\n          \"include\": \"#mnemonics-sse2\"\n        },\n        {\n          \"include\": \"#mnemonics-sse3\"\n        },\n        {\n          \"include\": \"#mnemonics-sse4\"\n        },\n        {\n          \"include\": \"#mnemonics-aesni\"\n        },\n        {\n          \"include\": \"#mnemonics-avx\"\n        },\n        {\n          \"include\": \"#mnemonics-avx2\"\n        },\n        {\n          \"include\": \"#mnemonics-tsx\"\n        },\n        {\n          \"include\": \"#mnemonics-system\"\n        },\n        {\n          \"include\": \"#mnemonics-64bit\"\n        },\n        {\n          \"include\": \"#mnemonics-vmx\"\n        },\n        {\n          \"include\": \"#mnemonics-smx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-sgx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-mpx\"\n        },\n        {\n          \"include\": \"#mnemonics-intel-isa-sha\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-amd\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-cyrix\"\n        },\n        {\n          \"include\": \"#mnemonics-supplemental-via\"\n        },\n        {\n          \"include\": \"#mnemonics-undocumented\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel\"\n        },\n        {\n          \"include\": \"#mnemonics-pseudo-ops\"\n        }\n      ]\n    },\n    \"mnemonics-64bit\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.64-bit-mode\"\n        }\n      ]\n    },\n    \"mnemonics-aesni\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.aesni\"\n        }\n      ]\n    },\n    \"mnemonics-avx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.aes\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((andn?|x?or)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-shuffle\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(andn?|x?or))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpblend(vb|w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.supplemental.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(sra[dwq]|srl[dqw]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vblendv?p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(test|alignr))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.packed-other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vmov(d(dup|qa|qu)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(maskmovdqu|movntdqa?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx.promoted.cacheability-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcvt(ph2ps|ps2ph))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.16-bit-floating-point-conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fma\"\n        }\n      ]\n    },\n    \"mnemonics-avx2\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.promoted.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpbroadcast[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.promoted.packed\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(blendd|s[lr]lv[dq]|sravd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.blend\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx2.gather\"\n        }\n      ]\n    },\n    \"mnemonics-fpu\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(fcmov(n?([beu]|be)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.data-transfer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(i?(ld|stp?)|b(ld|stp)|xch))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.data-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.basic-arithmetic.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(u?com[ip]?p?|icomp?|tst|xam))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.transcendental\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fld(1|z|pi|l2[et]|l[ng]2))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.load-constants\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.control-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fx(save|rstor)(64)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.fpu.state-management\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-future-intel-avx512\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-opmask\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-cet\"\n        },\n        {\n          \"include\": \"#mnemonics-future-intel-other\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-avx512\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(vblendm(pd|ps)|vpblendm[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.blend\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vbroadcast[fi](32x[248]|64x[24])|v(extract|insert)[fi](32x[48]|64x[24])|vshuf[fi](32x4|64x2)|vpbroadcastm(b2q|w2d))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.bits-mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(compress|expand)p[ds]|vp(compress|expand|conflict)[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.compress\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcvt(t?p[sd]2(udq|u?qq)|(udq|u?qq)2p[ds]|t?s[ds]2usi|usi2s[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(fixupimm|fpclass|get(exp|mant)|range|(rcp|rsqrt)(14|28)|reduce|rndscale|scalef)([ps][ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v(exp2p[ds]|(scatter|(gather|scatter)pf[01])[dq]p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vmovdq(a(32|64)|u(8|16|32|64)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(andn?|x?or)[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpcmpu?[dqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(absq|(lzcnt|ternlog)[dq]|madd52[lh]uq|(max|min)[su]q|mullq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-math\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpmov(m2[bdqw]|[bdqw]2m|(u?s)?([qd][bw]|qd|wb)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(ro[rl]v?[dq]|scatter[dq][dq]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-shift\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vptestn?m[bdqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.packed-test\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vperm([bdw]|[it]2([bdwq]|p[ds])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.permutations\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(valign[dq]|vdbpsadbw|vpmultishiftqb|vpsrav[dqw])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.avx512.other\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-cet\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((inc|save|rstor)ssp|wru?ss|(set|clr)ssbsy|endbranch|endbr(32|64))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.cet\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-opmask\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(k(add|andn?|(xn?)?or|mov|not|(or)?test|shift[lr])[bdqw]|kunpck(bw|wd|dq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.opmask\"\n        }\n      ]\n    },\n    \"mnemonics-future-intel-other\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(clflushopt|clwb|pcommit)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.other\"\n        }\n      ]\n    },\n    \"mnemonics-general-purpose\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(xchg|bswap|xadd|cmpxchg(8b)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((push|pop)(ad?)?|cwde?|cdq|cbw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.data-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.binary-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(daa|das|aaa|aas|aam|aad)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(and|x?or|not)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s[ah][rl]|sh[rl]d|r[co][rl])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.control-transfer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.strings\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((in|out)(s[bdw]?)?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.io\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.flag-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(l[defgs]s)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.segment-registers\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(lea|nop|ud2|xlatb?|cpuid|movbe)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.misc\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(rdrand|rdseed)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.rng\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.general-purpose.bmi\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-mpx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(bnd(mk|c[lnu]|mov|ldx|stx))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mpx\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-sgx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx1.supervisor\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(enter|exit|getkey|report|resume)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx1.user\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(aug|mod(pr|t))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx2.supervisor\"\n        },\n        {\n          \"match\": \"(?i)\\\\be(accept(copy)?|modpe)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sgx2.user\"\n        }\n      ]\n    },\n    \"mnemonics-intel-isa-sha\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sha\"\n        }\n      ]\n    },\n    \"mnemonics-invalid\": {\n      \"patterns\": [\n        {\n          \"include\": \"#mnemonics-invalid-amd-sse5\"\n        }\n      ]\n    },\n    \"mnemonics-invalid-amd-sse5\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(com[ps][ds]|pcomu?[bdqw])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\\\\b\",\n          \"name\": \"invalid.keyword.operator.word.mnemonic.sse5.simd-integer\"\n        }\n      ]\n    },\n    \"mnemonics-mmx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov[dq])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmp((eq|gt)[bdw]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pandn?|px?or)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ps([rl]l[dwq]|raw|rad))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.shift-and-rotate\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(emms)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.mmx.state-management\"\n        }\n      ]\n    },\n    \"mnemonics-pseudo-ops\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.sse2.compare\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.avx.promoted.aes\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.avx.promoted.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\\\\b\",\n          \"name\": \"keyword.pseudo-mnemonic.supplemental.amd.xop.simd\"\n        }\n      ]\n    },\n    \"mnemonics-smx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(getsec)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.smx.getsec\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\\\\b\",\n          \"name\": \"support.constant\"\n        }\n      ]\n    },\n    \"mnemonics-sse\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov(([ahlu]|hl|lh|msk)ps|ss))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cmp[ps]s|u?comiss)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.comparison\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((andn?|x?or)ps)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((shuf|unpck[hl])ps)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.shuffle-and-unpack\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((ld|st)mxcsr)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.state-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.simd-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(maskmovq|movntps|sfence)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.cacheability-control\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(prefetch(nta|t[0-2]|w(t1)?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse.prefetch\"\n        }\n      ]\n    },\n    \"mnemonics-sse2\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(mov([auhl]|msk)pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.data-transfer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((add|div|max|min|mul|sub|sqrt)[ps]d)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((andn?|x?or)pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.logical\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((cmpp|u?comis)d)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.compare\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((shuf|unpck[hl])pd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.shuffle-and-unpack\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(cvt(dq2ps|ps2dq|tps2dq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.packed-floating-point\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(mov(dq[au]|q2dq|dq2q))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.simd-integer.mov\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.simd-integer.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(clflush|[lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse2.cacheability-control\"\n        }\n      ]\n    },\n    \"mnemonics-sse3\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ph(add|sub)(s?w|d))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse3.supplimental.other\"\n        }\n      ]\n    },\n    \"mnemonics-sse4\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(pmul(ld|dq)|dpp[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.arithmetic\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(movntdqa)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.load-hint\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(blendv?p[ds]|pblend(vb|w))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-blending\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(min|max)(u[dw]|s[bd]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-integer\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(round[ps][sd])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.packed-floating-point\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((extract|insert)ps|p((ins|ext)(r[bdq])))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.conversion\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.1.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pcmp([ei]str[im]|gtq))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.sse4.2\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-amd\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.general-purpose\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b([ls]lwpcb|lwp(ins|val))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.profiling\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(movnts[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.memory-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(prefetch|clzero)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.cache-management\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((extr|insert)q)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.sse4.a\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.fma4\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(vfrcz[ps][ds]|vpermil2p[ds])\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.xop.other\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(femms)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(pfcmp(eq|ge|gt))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-cyrix\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((sv|rs)dc|(wr|rd)shr|paddsiw)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.cyrix\"\n        }\n      ]\n    },\n    \"mnemonics-supplemental-via\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(montmul)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.via\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.supplemental.via.padlock\"\n        }\n      ]\n    },\n    \"mnemonics-system\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.system\"\n        }\n      ]\n    },\n    \"mnemonics-tsx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(x(abort|acquire|release|begin|end|test))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.tsx\"\n        }\n      ]\n    },\n    \"mnemonics-undocumented\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(ret[nf]|icebp|int1|int03|smi|ud1)\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.undocumented\"\n        }\n      ]\n    },\n    \"mnemonics-vmx\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\\\\b\",\n          \"name\": \"keyword.operator.word.mnemonic.vmx\"\n        }\n      ]\n    },\n    \"preprocessor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(error|warning)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.error.c\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.diagnostic.c\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(include|import)\\\\b\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.c\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.c.include\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.c\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.c\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.c\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.c\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.c\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[%#]\\\\s*((xi?)?define|defined|elif(def)?|else|if(macro|ctx|idni?|num|str)?|ifn?def|line|(end)?macro|pragma|undef|endif)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.c\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*[#%]\\\\s*(assign|strlen|substr|(end|exit)?rep|push|pop)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.preprocessor.nasm\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.c\"\n            }\n          ]\n        }\n      ]\n    },\n    \"registers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\\\\b\",\n          \"name\": \"constant.language.register.general-purpose.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[cdefgs]s)\\\\b\",\n          \"name\": \"constant.language.register.segment.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[er]?flags)\\\\b\",\n          \"name\": \"constant.language.register.flags.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[er]?ip)\\\\b\",\n          \"name\": \"constant.language.register.instruction-pointer.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:cr[02-4])\\\\b\",\n          \"name\": \"constant.language.register.control.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:mm|st|fpr)[0-7])\\\\b\",\n          \"name\": \"constant.language.register.mmx.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\\\\b\",\n          \"name\": \"constant.language.register.sse_avx.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:zmm(?:[12]?[0-9]|30|31))\\\\b\",\n          \"name\": \"constant.language.register.avx512.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:bnd(?:[0-3]|cfg[su]|status))\\\\b\",\n          \"name\": \"constant.language.register.memory-protection.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:(?:[gil]dt)r?|tr)\\\\b\",\n          \"name\": \"constant.language.register.system-table-pointer.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:dr[0-367])\\\\b\",\n          \"name\": \"constant.language.register.debug.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\\\\b\",\n          \"name\": \"constant.language.register.amd.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:db[0-367]|t[67]|tr[3-7]|st)\\\\b\",\n          \"name\": \"invalid.deprecated.constant.language.register.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\\\\b\",\n          \"name\": \"constant.language.register.general-purpose.alias.asm.x86_64\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.double.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.single.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.asm\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.asm\"\n            }\n          },\n          \"name\": \"string.quoted.backquote.asm\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            }\n          ]\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\\\\b\",\n          \"name\": \"storage.type.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:incbin|equ|times)\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:strict|nosplit|near|far|abs|rel)\\\\b\",\n          \"name\": \"storage.modifier.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:[ao](?:16|32|64))\\\\b\",\n          \"name\": \"storage.modifier.prefix.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\\\\b\",\n          \"name\": \"storage.modifier.prefix.asm.x86_64\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.prefix.vex.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(vex[23]|evex)}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.opmask.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(k[1-7])}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.precision.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(1to(?:8|16))}\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.rounding.asm.x86_64\"\n            }\n          },\n          \"match\": \"{(z|(?:r[nudz]-)?sae)}\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\\\\b\",\n          \"name\": \"support.constant.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|Infinity|[QS]?NaN)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b___NASM_PATCHLEVEL__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__USE_(?:ALTREG|SMARTALIGN|FP|IFUNC)__\\\\b\",\n          \"name\": \"support.function.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__PASS__\\\\b\",\n          \"name\": \"invalid.deprecated.support.constant.altreg.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b__ALIGNMODE__\\\\b\",\n          \"name\": \"support.constant.smartalign.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b(?:Inf|[QS]?NaN)\\\\b\",\n          \"name\": \"support.constant.fp.asm.x86_64\"\n        },\n        {\n          \"match\": \"\\\\b(?:float(?:8|16|32|64|80[me]|128[lh]))\\\\b\",\n          \"name\": \"support.function.fp.asm.x86_64\"\n        },\n        {\n          \"match\": \"(?i)\\\\bilog2(?:[ewfc]|[fc]w)?\\\\b\",\n          \"name\": \"support.function.ifunc.asm.x86_64\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.asm.x86_64\",\n  \"uuid\": \"05d6565d-991a-4e88-8e28-63bb21197f32\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/astro.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"fileTypes\": [\"astro\"],\n  \"foldingStartMarker\": \"(?x)\\n(<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\\\\b.*?>\\n|<!--(?!.*--\\\\s*>)\\n|^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\n|<\\\\?(?:php)?.*\\\\b(if|for(each)?|while)\\\\b.+:\\n|\\\\{\\\\{?(if|foreach|capture|literal|foreach|php|section|strip)\\n|\\\\{\\\\s*($|\\\\?>\\\\s*$|//|/\\\\*(.*\\\\*/\\\\s*$|(?!.*?\\\\*/)))\\n)\",\n  \"foldingStopMarker\": \"(?x)\\n(</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)>\\n|^(?!.*?<!--).*?--\\\\s*>\\n|^<!--\\\\ end\\\\ tminclude\\\\ -->$\\n|<\\\\?(?:php)?.*\\\\bend(if|for(each)?|while)\\\\b\\n|\\\\{\\\\{?/(if|foreach|capture|literal|foreach|php|section|strip)\\n|^[^{]*\\\\}\\n)\",\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"astro\",\n  \"scopeName\": \"source.astro\",\n  \"patterns\": [\n    {\n      \"include\": \"#astro:expressions\"\n    },\n    {\n      \"include\": \"#html:comment\"\n    },\n    {\n      \"include\": \"#html:comment:bogus\"\n    },\n    {\n      \"include\": \"#html:doctype\"\n    },\n    {\n      \"include\": \"#astro:fragment\"\n    },\n    {\n      \"include\": \"#astro:lang-scripts\"\n    },\n    {\n      \"include\": \"#astro:lang-styles\"\n    },\n    {\n      \"include\": \"#astro:component\"\n    },\n    {\n      \"include\": \"#html:element\"\n    },\n    {\n      \"include\": \"#html:entity\"\n    },\n    {\n      \"include\": \"#html:entity:bogus\"\n    },\n    {\n      \"include\": \"#frontmatter\"\n    }\n  ],\n  \"repository\": {\n    \"astro:attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#html:attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-template-literal\"\n        },\n        {\n          \"include\": \"#astro:expressions\"\n        }\n      ]\n    },\n    \"astro:component\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.component.astro astro.component.raw\",\n          \"begin\": \"(<)([$A-Z_][^/?!\\\\s<>]*|[^/?!\\\\s<>.]+\\\\.[^/?!\\\\s<>]+)(.+is:raw.*?)(>)\",\n          \"end\": \"(</)([$A-Z_][^/?!\\\\s<>]*|[^/?!\\\\s<>.]+\\\\.[^/?!\\\\s<>]+)(?=\\\\s|/?>)(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.astro\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.astro support.class.component.astro\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#astro:attribute\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.end.astro\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.astro\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.astro support.class.component.astro\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.astro\"\n            }\n          },\n          \"contentName\": \"source.unknown\"\n        },\n        {\n          \"name\": \"meta.tag.component.astro\",\n          \"begin\": \"(</?)([$A-Z_][^/?!\\\\s<>]*|[^/?!\\\\s<>.]+\\\\.[^/?!\\\\s<>]+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.astro\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.astro support.class.component.astro\"\n            }\n          },\n          \"end\": \"(/?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.astro\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#astro:attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"astro:fragment\": {\n      \"name\": \"meta.tag.component.astro\",\n      \"match\": \"(</?)(Fragment)?(\\\\s*>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.astro\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.astro support.class.fragment.astro\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.astro\"\n        }\n      }\n    },\n    \"astro:lang-scripts\": {\n      \"begin\": \"(<)(script)\",\n      \"end\": \"(</)(script)\\\\s*(>)|(/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"Treat script tag with application/ld+json as JSON. This needs to be higher than is:raw since it's a very possible situation to have is:raw on a JSON script tag\",\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?type\\\\s*=\\\\s*(['\\\"]|)(?i:application/ld\\\\+json)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.json\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.json\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Treat script tag with JS-compatible types as JS\",\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?type\\\\s*=\\\\s*(['\\\"]|)(?i:module|(?:text/javascript|text/partytown|application/node|application/javascript))\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Treat anything with an unknown type as unknown\",\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?type\\\\s*=\\\\s*(['\\\"]|)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"name\": \"source.unknown\"\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:jsx?|javascript)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:ts|typescript)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:tsx)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.tsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.tsx\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"contentName\": \"source.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#html:tag-attributes\"\n        }\n      ]\n    },\n    \"astro:lang-styles\": {\n      \"begin\": \"(<)(style)\",\n      \"end\": \"(</)(style)\\\\s*(>)|(/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:css)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:less)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.css.less\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css.less\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:sass)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.sass\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.sass\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:scss)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.css.scss\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css.scss\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?lang\\\\s*=\\\\s*(['\\\"]|)(?i:styl(?:us)?)\\\\1)\",\n          \"end\": \"(?=</|/>)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=>)(?!</)\",\n              \"end\": \"(?=</)\",\n              \"contentName\": \"source.stylus\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.stylus\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#html:tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"contentName\": \"source.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#html:tag-attributes\"\n        }\n      ]\n    },\n    \"html:attribute\": {\n      \"name\": \"meta.attribute.$1.html\",\n      \"match\": \"([a-zA-Z\\\\-:@_.]+)(=?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      }\n    },\n    \"html:tag-attributes\": {\n      \"begin\": \"\\\\G\",\n      \"end\": \"(?=/>)|>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#astro:attribute\"\n        }\n      ]\n    },\n    \"html:comment\": {\n      \"name\": \"comment.block.html\",\n      \"begin\": \"<!--\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html punctuation.definition.comment.begin.html\"\n        }\n      },\n      \"end\": \"--!?>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html punctuation.definition.comment.end.html\"\n        }\n      }\n    },\n    \"html:comment:bogus\": {\n      \"name\": \"comment.block.html\",\n      \"begin\": \"<\\\\?\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html punctuation.definition.comment.begin.html\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html punctuation.definition.comment.end.html\"\n        }\n      }\n    },\n    \"html:doctype\": {\n      \"name\": \"meta.tag.metadata.doctype.html\",\n      \"begin\": \"(<!)([Dd][Oo][Cc][Tt][Yy][Pp][Ee])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"match\": \"[^\\\\s>]+\",\n          \"name\": \"entity.other.attribute-name.html\"\n        }\n      ]\n    },\n    \"html:element\": {\n      \"patterns\": [\n        {\n          \"name\": \"astro.element.raw\",\n          \"begin\": \"(<)([^/?!\\\\s<>]+)(.+is:raw.*?)(>)\",\n          \"end\": \"(</)([^/?!\\\\s<>]+)(?=\\\\s|/?>)(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#astro:attribute\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"contentName\": \"source.unknown\"\n        },\n        {\n          \"name\": \"meta.tag.any.$2.start.html\",\n          \"begin\": \"(<)([^/?!\\\\s<>]+)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#astro:attribute\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.tag.any.$2.end.html\",\n          \"begin\": \"(</)([^/?!\\\\s<>]+)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#astro:attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"html:entity\": {\n      \"name\": \"constant.character.entity.html\",\n      \"match\": \"(&)([0-9A-Za-z]+|#x[0-9A-Fa-f]+|x[0-9]+)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        }\n      }\n    },\n    \"html:entity:bogus\": {\n      \"name\": \"constant.character.entity.html\",\n      \"match\": \"(&)([0-9A-Za-z]+|#x[0-9A-Fa-f]+|x[0-9]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.html\"\n        }\n      }\n    },\n    \"astro:expressions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.tsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.tsx\"\n            }\n          },\n          \"name\": \"expression.embedded.astro\",\n          \"contentName\": \"source.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"source.tsx\"\n            }\n          ]\n        }\n      ]\n    },\n    \"frontmatter\": {\n      \"comment\": \"The frontmatter is treated as comments in order to get the \\\"faded\\\" look\",\n      \"begin\": \"\\\\A(-{3})\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"comment\"\n        }\n      },\n      \"contentName\": \"source.ts\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"end\": \"(^|\\\\G)(-{3})|\\\\.{3}\\\\s*$\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"comment\"\n        }\n      }\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#html:entity\"\n        },\n        {\n          \"include\": \"#html:entity:bogus\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#html:entity\"\n        },\n        {\n          \"include\": \"#html:entity:bogus\"\n        }\n      ]\n    },\n    \"string-template-literal\": {\n      \"begin\": \"`\",\n      \"end\": \"`\",\n      \"name\": \"string.template.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.tsx#template-substitution-element\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/awk.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"awk\"],\n  \"name\": \"awk\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#procedure\"\n    },\n    {\n      \"include\": \"#pattern\"\n    }\n  ],\n  \"repository\": {\n    \"builtin-pattern\": {\n      \"match\": \"\\\\b(BEGINFILE|BEGIN|ENDFILE|END)\\\\b\",\n      \"name\": \"constant.language.awk\"\n    },\n    \"command\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:next|print|printf)\\\\b\",\n          \"name\": \"keyword.other.command.awk\"\n        },\n        {\n          \"match\": \"\\\\b(?:close|getline|delete|system)\\\\b\",\n          \"name\": \"keyword.other.command.nawk\"\n        },\n        {\n          \"match\": \"\\\\b(?:fflush|nextfile)\\\\b\",\n          \"name\": \"keyword.other.command.bell-awk\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"match\": \"#.*\",\n      \"name\": \"comment.line.number-sign.awk\"\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-constant\"\n        },\n        {\n          \"include\": \"#string-constant\"\n        }\n      ]\n    },\n    \"escaped-char\": {\n      \"match\": \"\\\\\\\\(?:[\\\\\\\\abfnrtv/\\\"]|x[0-9A-Fa-f]{2}|[0-7]{3})\",\n      \"name\": \"constant.character.escape.awk\"\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#command\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#regexp-in-expression\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#groupings\"\n        }\n      ]\n    },\n    \"function\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:exp|int|log|sqrt|index|length|split|sprintf|substr)\\\\b\",\n          \"name\": \"support.function.awk\"\n        },\n        {\n          \"match\": \"\\\\b(?:atan2|cos|rand|sin|srand|gsub|match|sub|tolower|toupper)\\\\b\",\n          \"name\": \"support.function.nawk\"\n        },\n        {\n          \"match\": \"\\\\b(?:gensub|strftime|systime)\\\\b\",\n          \"name\": \"support.function.gawk\"\n        }\n      ]\n    },\n    \"function-definition\": {\n      \"begin\": \"\\\\b(function)\\\\s+(\\\\w+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.awk\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.awk\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.awk\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"name\": \"variable.parameter.function.awk\"\n        },\n        {\n          \"match\": \"\\\\b(,)\\\\b\",\n          \"name\": \"punctuation.separator.parameters.awk\"\n        }\n      ]\n    },\n    \"groupings\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"meta.brace.round.awk\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"meta.brace.round.awk\"\n        },\n        {\n          \"match\": \"\\\\,\",\n          \"name\": \"punctuation.separator.parameters.awk\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"\\\\b(?:break|continue|do|while|exit|for|if|else|return)\\\\b\",\n      \"name\": \"keyword.control.awk\"\n    },\n    \"numeric-constant\": {\n      \"match\": \"\\\\b[0-9]+(?:\\\\.[0-9]+)?(?:e[+-][0-9]+)?\\\\b\",\n      \"name\": \"constant.numeric.awk\"\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(!?~|[=<>!]=|[<>])\",\n          \"name\": \"keyword.operator.comparison.awk\"\n        },\n        {\n          \"match\": \"\\\\b(in)\\\\b\",\n          \"name\": \"keyword.operator.comparison.awk\"\n        },\n        {\n          \"match\": \"([+\\\\-*/%^]=|\\\\+\\\\+|--|>>|=)\",\n          \"name\": \"keyword.operator.assignment.awk\"\n        },\n        {\n          \"match\": \"(\\\\|\\\\||&&|!)\",\n          \"name\": \"keyword.operator.boolean.awk\"\n        },\n        {\n          \"match\": \"([+\\\\-*/%^])\",\n          \"name\": \"keyword.operator.arithmetic.awk\"\n        },\n        {\n          \"match\": \"([?:])\",\n          \"name\": \"keyword.operator.trinary.awk\"\n        },\n        {\n          \"match\": \"(\\\\[|\\\\])\",\n          \"name\": \"keyword.operator.index.awk\"\n        }\n      ]\n    },\n    \"pattern\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-as-pattern\"\n        },\n        {\n          \"include\": \"#function-definition\"\n        },\n        {\n          \"include\": \"#builtin-pattern\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"procedure\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#procedure\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"regex-as-assignment\": {\n      \"begin\": \"([^=<>!+\\\\-*/%^]=)\\\\s*(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.awk\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.regex.begin.awk\"\n        }\n      },\n      \"contentName\": \"string.regexp\",\n      \"end\": \"/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp\"\n        }\n      ]\n    },\n    \"regex-as-comparison\": {\n      \"begin\": \"(!?~)\\\\s*(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.comparison.awk\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.regex.begin.awk\"\n        }\n      },\n      \"contentName\": \"string.regexp\",\n      \"end\": \"/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp\"\n        }\n      ]\n    },\n    \"regex-as-first-argument\": {\n      \"begin\": \"(\\\\()\\\\s*(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.awk\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.regex.begin.awk\"\n        }\n      },\n      \"contentName\": \"string.regexp\",\n      \"end\": \"/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp\"\n        }\n      ]\n    },\n    \"regex-as-nth-argument\": {\n      \"begin\": \"(,)\\\\s*(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.awk\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.regex.begin.awk\"\n        }\n      },\n      \"contentName\": \"string.regexp\",\n      \"end\": \"/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp\"\n        }\n      ]\n    },\n    \"regexp-as-pattern\": {\n      \"begin\": \"/\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.begin.awk\"\n        }\n      },\n      \"contentName\": \"string.regexp\",\n      \"end\": \"/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regex.end.awk\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.regexp\"\n        }\n      ]\n    },\n    \"regexp-in-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-as-assignment\"\n        },\n        {\n          \"include\": \"#regex-as-comparison\"\n        },\n        {\n          \"include\": \"#regex-as-first-argument\"\n        },\n        {\n          \"include\": \"#regex-as-nth-argument\"\n        }\n      ]\n    },\n    \"string-constant\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.awk\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.awk\"\n        }\n      },\n      \"name\": \"string.quoted.double.awk\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped-char\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$[0-9]+\",\n          \"name\": \"variable.language.awk\"\n        },\n        {\n          \"match\": \"\\\\b(?:FILENAME|FS|NF|NR|OFMT|OFS|ORS|RS)\\\\b\",\n          \"name\": \"variable.language.awk\"\n        },\n        {\n          \"match\": \"\\\\b(?:ARGC|ARGV|CONVFMT|ENVIRON|FNR|RLENGTH|RSTART|SUBSEP)\\\\b\",\n          \"name\": \"variable.language.nawk\"\n        },\n        {\n          \"match\": \"\\\\b(?:ARGIND|ERRNO|FIELDWIDTHS|IGNORECASE|RT)\\\\b\",\n          \"name\": \"variable.language.gawk\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.awk\",\n  \"uuid\": \"67bd1ff0-006b-4c32-8b97-8bc198777582\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ballerina.tmLanguage.json",
    "content": "{\n  \"name\": \"ballerina\",\n  \"scopeName\": \"source.ballerina\",\n  \"fileTypes\": [\"bal\"],\n  \"uuid\": \"c01f5512-489a-41bd-ba5d-caf4b55ae3b3\",\n  \"monarchVariables\": {\n    \"typeScope\": \"type\",\n    \"annotationScope\": \"type\",\n    \"numberScope\": \"number\",\n    \"xmlTagAngle\": \"tag\",\n    \"xmlAttribute\": \"variable.parameter\",\n    \"xmlTag\": \"tag\",\n    \"primitiveScope\": \"type\"\n  },\n  \"tmlVariables\": {\n    \"typeScope\": \"storage.type.ballerina\",\n    \"annotationScope\": \"support.type.ballerina\",\n    \"numberScope\": \"constant.numeric.decimal.ballerina\",\n    \"xmlTagAngle\": \"punctuation.definition.tag.begin.xml.ballerina\",\n    \"xmlAttribute\": \"entity.other.attribute-name.xml.ballerina\",\n    \"xmlTag\": \"entity.name.tag.xml.ballerina\",\n    \"primitiveScope\": \"support.type.primitive.ballerina\"\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#statements\"\n    }\n  ],\n  \"repository\": {\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#stringTemplate\"\n        },\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#annotationAttachment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#typeDefinition\"\n        },\n        {\n          \"include\": \"#function-defn\"\n        },\n        {\n          \"include\": \"#service-decl\"\n        },\n        {\n          \"include\": \"#class-defn\"\n        },\n        {\n          \"include\": \"#enum-decl\"\n        },\n        {\n          \"include\": \"#source\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.ballerina\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.ballerina\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xml\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#stringTemplate\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#paranthesised\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.ballerina\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.ballerina\",\n      \"begin\": \"\\\\bimport\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.import.ballerina\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.statement.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\')([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"name\": \"variable.other.property.ballerina\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#import-clause\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.ballerina\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"name\": \"keyword.control.ballerina\",\n          \"match\": \"\\\\b(check|foreach|if|checkpanic)\\\\b\"\n        },\n        {\n          \"include\": \"#call\"\n        },\n        {\n          \"name\": \"support.type.primitive.ballerina\",\n          \"match\": \"\\\\b(var)\\\\b\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)((\\\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\\\()(\\\\)))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.ballerina\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.ballerina\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.parameters.end.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\')([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"name\": \"variable.other.property.ballerina\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-defn\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"name\": \"meta.object.member.ballerina meta.object-literal.key.ballerina\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ballerina meta.object-literal.key.ballerina\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\n*})|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ballerina meta.object-literal.key.ballerina\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numbers\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.ballerina\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ballerina\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ballerina\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.ballerina\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ballerina\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\"\n        },\n        {\n          \"name\": \"meta.object.member.ballerina\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.assignment.compound.ballerina\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.ballerina\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.ballerina\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.ballerina\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.ballerina\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.ballerina\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.ballerina\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ballerina\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.ballerina\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.ballerina\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.ballerina\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.comma.ballerina\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"punctuation-semicolon\": {\n      \"patterns\": [\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.ballerina\"\n        }\n      ]\n    },\n    \"punctuation-accessor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ballerina\"\n            }\n          }\n        }\n      ]\n    },\n    \"annotationAttachment\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@)((?:[_$[:alpha:]][_$[:alnum:]]*))\\\\s*(:?)\\\\s*((?:[_$[:alpha:]][_$[:alnum:]]*)?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.decorator.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"support.type.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"support.type.ballerina\"\n            }\n          }\n        }\n      ]\n    },\n    \"annotationDefinition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bannotation\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \";\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"booleans\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false)\\\\b\",\n          \"name\": \"constant.language.boolean.ballerina\"\n        }\n      ]\n    },\n    \"butExp\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bbut\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#butExpBody\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"butExpBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter\"\n            },\n            {\n              \"include\": \"#butClause\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"butClause\": {\n      \"patterns\": [\n        {\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.arrow.ballerina storage.type.function.arrow.ballerina\"\n            }\n          },\n          \"end\": \",|(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"call\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\')?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=\\\\()\",\n          \"name\": \"entity.name.function.ballerina\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.ballerina\",\n          \"match\": \"\\\\/\\\\/.*\"\n        }\n      ]\n    },\n    \"constrainType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<\",\n          \"end\": \">\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"name\": \"storage.type.ballerina\",\n              \"match\": \"\\\\b([_$[:alpha:]][_$[:alnum:]]*)\\\\b\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tupleType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"(?=\\\\]|;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"include\": \"#paranthesisedBracket\"\n            },\n            {\n              \"name\": \"storage.type.ballerina\",\n              \"match\": \"\\\\b([_$[:alpha:]][_$[:alnum:]]*)\\\\b\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.ballerina\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"end\": \"(?=\\\\} external;)|(\\\\})\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        }\n      ]\n    },\n    \"defaultValue\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[=:]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ballerina\"\n            }\n          },\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"documentationDef\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?:documentation|deprecated)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"delimiter.curly\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#documentationBody\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"documentationBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(P|R|T|F|V)({{)(.*)(}})\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.ballerina.documentation\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.ballerina.documentation\"\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.ballerina.documentation\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.ballerina.documentation\"\n                }\n              }\n            },\n            {\n              \"name\": \"comment.block.code.ballerina.documentation\",\n              \"begin\": \"\\\\```\",\n              \"end\": \"\\\\```\"\n            },\n            {\n              \"name\": \"comment.block.code.ballerina.documentation\",\n              \"begin\": \"\\\\``\",\n              \"end\": \"\\\\``\"\n            },\n            {\n              \"name\": \"comment.block.code.ballerina.documentation\",\n              \"begin\": \"\\\\`\",\n              \"end\": \"\\\\`\"\n            },\n            {\n              \"name\": \"comment.block.ballerina.documentation\",\n              \"match\": \".\"\n            }\n          ]\n        }\n      ]\n    },\n    \"enum-decl\": {\n      \"name\": \"meta.enum.declaration.ballerina\",\n      \"begin\": \"(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ballerina\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.ballerina\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.enum.ballerina\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#mdDocumentation\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.ballerina\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"errorDestructure\": {\n      \"patterns\": [\n        {\n          \"begin\": \"error\",\n          \"end\": \"(?==>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"callableUnitBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"(?=\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#workerDef\"\n            },\n            {\n              \"include\": \"#service-decl\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            },\n            {\n              \"include\": \"#function-defn\"\n            },\n            {\n              \"include\": \"#forkStatement\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))foreach\\\\s*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.ballerina\"\n        },\n        \"1\": {\n          \"name\": \"support.type.primitive.ballerina\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\bin\\\\b\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"forkBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"(?=\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#workerDef\"\n            }\n          ]\n        }\n      ]\n    },\n    \"forkStatement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfork\\\\b\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#forkBody\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#functionParameters\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"begin\": \"\\\\=>\",\n          \"name\": \"meta.block.ballerina\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.arrow.ballerina storage.type.function.arrow.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\;)|(?=\\\\,)|(?=)(?=\\\\);)\",\n          \"patterns\": [\n            {\n              \"include\": \"#statements\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.ballerina\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"function-defn\": {\n      \"name\": \"meta.function.ballerina\",\n      \"begin\": \"(?:(public|private)\\\\s+)?(function\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.ballerina\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.ballerina\"\n        }\n      },\n      \"end\": \"(?<=\\\\;)|(?<=\\\\})|(?<=\\\\,)|(?=)(?=\\\\);)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bexternal\\\\b\",\n          \"name\": \"keyword.ballerina\"\n        },\n        {\n          \"include\": \"#stringTemplate\"\n        },\n        {\n          \"include\": \"#annotationAttachment\"\n        },\n        {\n          \"include\": \"#functionReturns\"\n        },\n        {\n          \"include\": \"#functionName\"\n        },\n        {\n          \"include\": \"#functionParameters\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"functionName\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\bfunction\\\\b\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\s+(\\\\b(self)|\\\\b(is|new|isolated|null|function|in)\\\\b|(string|int|boolean|float|byte|decimal|json|xml|anydata)\\\\b|\\\\b(readonly|error|map)\\\\b|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"variable.language.this.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.ballerina\"\n            },\n            \"6\": {\n              \"name\": \"meta.definition.function.ballerina entity.name.function.ballerina\"\n            }\n          }\n        }\n      ]\n    },\n    \"functionParameters\": {\n      \"name\": \"meta.parameters.ballerina\",\n      \"begin\": \"\\\\(|\\\\[\",\n      \"end\": \"\\\\)|\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.ballerina\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#annotationAttachment\"\n        },\n        {\n          \"include\": \"#recordLiteral\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ballerina\",\n          \"match\": \"\\\\,\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(var)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|(string|int|boolean|float|byte|decimal|json|xml|anydata)|\\\\b(is|new|isolated|null|function|in)\\\\b|\\\\b(true|false)\\\\b|\\\\b(check|foreach|if|checkpanic)\\\\b|\\\\b(readonly|error|map)\\\\b|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"keyword.other.ballerina\"\n            },\n            \"5\": {\n              \"name\": \"constant.language.boolean.ballerina\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.flow.ballerina\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.ballerina\"\n            },\n            \"8\": {\n              \"name\": \"variable.parameter.ballerina\"\n            },\n            \"9\": {\n              \"name\": \"variable.parameter.ballerina\"\n            },\n            \"10\": {\n              \"name\": \"keyword.operator.optional.ballerina\"\n            }\n          }\n        }\n      ]\n    },\n    \"functionReturns\": {\n      \"name\": \"meta.type.function.return.ballerina\",\n      \"begin\": \"\\\\s*(returns)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.ballerina\"\n        }\n      },\n      \"end\": \"(?==>)|(\\\\=)|(?=\\\\{)|(\\\\))|(?=\\\\;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(var)(?=\\\\s+|\\\\[|\\\\?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.ballerina\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.optional.ballerina\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"name\": \"variable.other.readwrite.ballerina\"\n        }\n      ]\n    },\n    \"functionType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunction\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?=\\\\|)|(?=\\\\:)|(?==>)|(?=\\\\))|(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#functionTypeParamList\"\n            },\n            {\n              \"include\": \"#functionTypeReturns\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functionTypeParamList\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"delimiter.parenthesis\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"delimiter.parenthesis\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"public\",\n              \"name\": \"keyword\"\n            },\n            {\n              \"include\": \"#annotationAttachment\"\n            },\n            {\n              \"include\": \"#recordLiteral\"\n            },\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            },\n            {\n              \"include\": \"#functionType\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"include\": \"#parameterTuple\"\n            },\n            {\n              \"include\": \"#functionTypeType\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functionTypeType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?:\\\\|)|(?=\\\\])|(?=\\\\))\"\n        }\n      ]\n    },\n    \"functionTypeReturns\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\breturns\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?:\\\\|)|(?=\\\\])|(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#functionTypeReturnsParameter\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functionTypeReturnsParameter\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?=record|object|function)|(?:[_$[:alpha:]][_$[:alnum:]]*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?:\\\\|)|(?:\\\\:)|(?==>)|(?=\\\\))|(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            },\n            {\n              \"include\": \"#functionType\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"include\": \"#defaultValue\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#parameterTuple\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"default.variable.parameter.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\b\\\\s*(?!\\\\{))\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.ballerina\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.ballerina\"\n                }\n              },\n              \"end\": \"(\\\\))|(?=\\\\{)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.ballerina\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#decl-block\"\n                },\n                {\n                  \"include\": \"#keywords\"\n                },\n                {\n                  \"include\": \"#identifiers\"\n                },\n                {\n                  \"include\": \"#type-primitive\"\n                },\n                {\n                  \"include\": \"#xml\"\n                },\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#stringTemplate\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#ternary-expression\"\n                },\n                {\n                  \"include\": \"#expression-operators\"\n                },\n                {\n                  \"include\": \"#literal\"\n                },\n                {\n                  \"include\": \"#paranthesised\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))(?=\\\\s|\\\\=)\",\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal\"\n                },\n                {\n                  \"include\": \"#keywords\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.readwrite.ballerina meta.import.module.ballerina\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.default.ballerina\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.readwrite.alias.ballerina\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.readwrite.alias.ballerina\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"maps\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"matchStatementPatternClause\": {\n      \"patterns\": [\n        {\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \"((\\\\})|;|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#callableUnitBody\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"matchStatement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmatch\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#matchStatementBody\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"matchStatementBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina.documentation\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literal\"\n            },\n            {\n              \"include\": \"#matchBindingPattern\"\n            },\n            {\n              \"include\": \"#matchStatementPatternClause\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"matchBindingPattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"var\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?==>)|,\",\n          \"patterns\": [\n            {\n              \"include\": \"#errorDestructure\"\n            },\n            {\n              \"include\": \"#code\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"variable.parameter.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mdDocumentation\": {\n      \"name\": \"comment.mddocs.ballerina\",\n      \"begin\": \"\\\\#\",\n      \"end\": \"[\\\\r\\\\n]+\",\n      \"patterns\": [\n        {\n          \"include\": \"#mdDocumentationReturnParamDescription\"\n        },\n        {\n          \"include\": \"#mdDocumentationParamDescription\"\n        }\n      ]\n    },\n    \"mdDocumentationParamDescription\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\+\\\\s+)(\\\\'?[_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\-\\\\s+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.ballerina\"\n            }\n          },\n          \"end\": \"(?=[^#\\\\r\\\\n]|(?:# *?\\\\+))\",\n          \"patterns\": [\n            {\n              \"match\": \"#.*\",\n              \"name\": \"comment.mddocs.paramdesc.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mdDocumentationReturnParamDescription\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(#)(?: *?)(\\\\+)(?: *)(return)(?: *)(-)?(.*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.mddocs.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"keyword.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"keyword.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"keyword.ballerina\"\n            },\n            \"5\": {\n              \"name\": \"comment.mddocs.returnparamdesc.ballerina\"\n            }\n          },\n          \"end\": \"(?=[^#\\\\r\\\\n]|(?:# *?\\\\+))\",\n          \"patterns\": [\n            {\n              \"match\": \"#.*\",\n              \"name\": \"comment.mddocs.returnparamdesc.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"multiType\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\|)([_$[:alpha:]][_$[:alnum:]]*)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\|)\",\n          \"name\": \"storage.type.ballerina\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.ballerina\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b0[xX][\\\\da-fA-F]+\\\\b|\\\\b\\\\d+(?:\\\\.(?:\\\\d+|$))?\",\n          \"name\": \"constant.numeric.decimal.ballerina\"\n        }\n      ]\n    },\n    \"class-body\": {\n      \"name\": \"meta.class.body.ballerina\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        },\n        {\n          \"include\": \"#function-defn\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"name\": \"storage.modifier.ballerina keyword.other.ballerina\"\n        }\n      ]\n    },\n    \"class-defn\": {\n      \"name\": \"meta.class.ballerina\",\n      \"begin\": \"(\\\\s+)(class\\\\b)|^class\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.class.ballerina keyword.other.ballerina\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.ballerina\"\n            }\n          }\n        },\n        {\n          \"include\": \"#class-body\"\n        }\n      ]\n    },\n    \"objectDec\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bobject\\\\b(?!:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.ballerina\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"objectInitBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"(?=\\\\})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"objectInitParameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            },\n            {\n              \"match\": \"\\\\b([_$[:alpha:]][_$[:alnum:]]*)\\\\b\",\n              \"name\": \"variable.parameter.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"objectMemberFunctionDec\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunction\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#functionParameters\"\n            },\n            {\n              \"match\": \"\\\\breturns\\\\b\",\n              \"name\": \"keyword.ballerina\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"paranthesised\": {\n      \"name\": \"meta.brace.round.block.ballerina\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ballerina\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"include\": \"#function-defn\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#parameters\"\n        },\n        {\n          \"include\": \"#annotationAttachment\"\n        },\n        {\n          \"include\": \"#recordLiteral\"\n        },\n        {\n          \"include\": \"#stringTemplate\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"paranthesisedBracket\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.ballerina\",\n          \"match\": \"\\\\s*(return|break|continue|check|checkpanic|panic|trap|from|where)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\s*(let|select)\\\\b\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ballerina\",\n          \"match\": \"\\\\,\"\n        }\n      ]\n    },\n    \"record\": {\n      \"name\": \"meta.record.ballerina\",\n      \"begin\": \"\\\\brecord\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.ballerina\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#recordBody\"\n        }\n      ]\n    },\n    \"recordBody\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"recordLiteral\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"serviceBody\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        },\n        {\n          \"include\": \"#documentationDef\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"service-decl\": {\n      \"name\": \"meta.service.declaration.ballerina\",\n      \"begin\": \"\\\\bservice\\\\b\",\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))|(?<=\\\\})|(?<=\\\\,)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#class-defn\"\n        },\n        {\n          \"include\": \"#serviceName\"\n        },\n        {\n          \"include\": \"#serviceOn\"\n        },\n        {\n          \"include\": \"#serviceBody\"\n        },\n        {\n          \"include\": \"#objectDec\"\n        }\n      ]\n    },\n    \"serviceName\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.service.path.ballerina\",\n          \"match\": \"(\\\\/([_$[:alpha:]][_$[:alnum:]]**)|\\\\\\\"[_$[:alpha:]][_$[:alnum:]]*\\\\\\\")\"\n        }\n      ]\n    },\n    \"serviceOn\": {\n      \"patterns\": [\n        {\n          \"begin\": \"on\",\n          \"end\": \"(?={)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\\\\"\",\n          \"end\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.begin.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.ballerina\",\n              \"match\": \"\\\\\\\\.\"\n            },\n            {\n              \"name\": \"string\",\n              \"match\": \".\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.ballerina\",\n          \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n        }\n      ]\n    },\n    \"stringTemplate\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.ballerina\",\n          \"begin\": \"((string)|([_$[:alpha:]][_$[:alnum:]]*))?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.template.begin.ballerina\"\n            }\n          },\n          \"end\": \"\\\\\\\\?`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.template.expression.ballerina\",\n          \"begin\": \"\\\\$\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.begin.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ],\n          \"contentName\": \"meta.embedded.line.ballerina\"\n        }\n      ]\n    },\n    \"typeDefinition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\btype\\\\b)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.ballerina\"\n            }\n          },\n          \"end\": \"\\\\;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.statement.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#functionParameters\"\n            },\n            {\n              \"include\": \"#functionReturns\"\n            },\n            {\n              \"include\": \"#mdDocumentation\"\n            },\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#multiType\"\n            },\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"variable.other.readwrite.ballerina\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#typeDescription\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeDescription\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"storage.type.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.ballerina\",\n          \"begin\": \"(?=\\\\b(var))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.ballerina support.type.primitive.ballerina\"\n            }\n          },\n          \"end\": \"(?!\\\\b(var))((?=;|}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=(if)\\\\s+))|((?<!^string|[^\\\\._$[:alnum:]]string|^int|[^\\\\._$[:alnum:]]int)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(var)(?=\\\\s+|\\\\[|\\\\?|\\\\||\\\\:)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"support.type.primitive.ballerina\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"keyword.operator.type.annotation.ballerina\"\n            },\n            {\n              \"name\": \"keyword.other.ballerina\",\n              \"match\": \"\\\\bin\\\\b\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#stringTemplate\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#multiType\"\n            },\n            {\n              \"include\": \"#self-literal\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#type-tuple\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"meta.var.expr.ballerina\",\n          \"begin\": \"(?=\\\\b(const(?!\\\\s+enum\\\\b)))\",\n          \"end\": \"(?!\\\\b(const(?!\\\\s+enum\\\\b)))((?=\\\\bannotation\\\\b|;|}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))|((?<!^string|[^\\\\._$[:alnum:]]string|^int|[^\\\\._$[:alnum:]]int)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(const(?!\\\\s+enum\\\\b))\\\\s+\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.other.ballerina\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#stringTemplate\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"meta.var.expr.ballerina\",\n          \"begin\": \"(string|int|boolean|float|byte|decimal|json|xml|anydata)(?=\\\\s+|\\\\[|\\\\?|\\\\||\\\\:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            }\n          },\n          \"end\": \"(?!\\\\b(var))((?=;|}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\\\b))|((?<!^string|[^\\\\._$[:alnum:]]string|^int|[^\\\\._$[:alnum:]]int)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#xml\"\n            },\n            {\n              \"begin\": \"(string|int|boolean|float|byte|decimal|json|xml|anydata)(?=\\\\s+|\\\\[|\\\\?|\\\\||\\\\:)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"support.type.primitive.ballerina\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"keyword.operator.type.annotation.ballerina\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#stringTemplate\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#multiType\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#type-tuple\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.ballerina\",\n          \"begin\": \"((string|int|boolean|float|byte|decimal|json|xml|anydata)|\\\\b(readonly|error|map)\\\\b|([_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+|\\\\;|\\\\>|\\\\|)\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.ballerina\"\n            },\n            \"4\": {\n              \"name\": \"meta.definition.variable.ballerina variable.other.readwrite.ballerina\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.statement.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#call\"\n            },\n            {\n              \"include\": \"#self-literal\"\n            },\n            {\n              \"include\": \"#if-statement\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ballerina\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ballerina variable.other.readwrite.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.ballerina\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\s+))\"\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.ballerina\"\n        },\n        {\n          \"begin\": \"\\\\b(var)\\\\s*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ballerina variable.other.constant.ballerina\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\s+))\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=|>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ballerina\"\n            }\n          },\n          \"end\": \"(?=$|[,);}\\\\]])\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\')([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"name\": \"variable.other.property.ballerina\"\n            },\n            {\n              \"include\": \"#xml\"\n            },\n            {\n              \"include\": \"#function-defn\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=|>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ballerina\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variableDef\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?!\\\\+)[_$[:alpha:]][_$[:alnum:]]*)(?: |\\\\t)|(?=\\\\()\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)|(?=\\\\,)|(?=;)|\\\\.\\\\.\\\\.\",\n          \"patterns\": [\n            {\n              \"include\": \"#tupleType\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variableDefInline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=record)|(?=object)\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            }\n          ]\n        }\n      ]\n    },\n    \"workerDef\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bworker\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.ballerina\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#functionReturns\"\n            },\n            {\n              \"include\": \"#workerBody\"\n            }\n          ]\n        }\n      ]\n    },\n    \"workerBody\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?=record|object|function)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\|)|(?:[_$[:alpha:]][_$[:alnum:]]*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?:\\\\,)|(?:\\\\|)|(?:\\\\:)|(?==>)|(?=\\\\))|(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameterWithDescriptor\"\n            },\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            },\n            {\n              \"include\": \"#functionType\"\n            },\n            {\n              \"include\": \"#constrainType\"\n            },\n            {\n              \"include\": \"#defaultValue\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#parameterTuple\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"default.variable.parameter.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameterTuple\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"(?=\\\\,)|(?=\\\\|)|(?=\\\\:)|(?==>)|(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#record\"\n            },\n            {\n              \"include\": \"#objectDec\"\n            },\n            {\n              \"include\": \"#parameterTupleType\"\n            },\n            {\n              \"include\": \"#parameterTupleEnd\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameterTupleType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.ballerina\"\n            }\n          },\n          \"end\": \"(?:\\\\,)|(?:\\\\|)|(?=\\\\])\"\n        }\n      ]\n    },\n    \"parameterTupleEnd\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\]\",\n          \"end\": \"(?=\\\\,)|(?=\\\\|)|(?=\\\\:)|(?==>)|(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#defaultWithParentheses\"\n            },\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"name\": \"default.variable.parameter.ballerina\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameterWithDescriptor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\&\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?=\\\\|)|(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter\"\n            }\n          ]\n        }\n      ]\n    },\n    \"defaultWithParentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ballerina\"\n            }\n          }\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"name\": \"string.quoted.double.ballerina\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ballerina\"\n            }\n          },\n          \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"source\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\bsource\\\\b)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.ballerina\"\n            }\n          },\n          \"end\": \"(?=\\\\,)|(?=\\\\;)\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.ballerina\",\n          \"match\": \"\\\\b(handle|any|future|typedesc)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.primitive.ballerina\",\n          \"match\": \"\\\\b(boolean|int|string|float|decimal|byte|json|xml|anydata)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.ballerina\",\n          \"match\": \"\\\\b(map|error|never|readonly|distinct)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.ballerina\",\n          \"match\": \"\\\\b(stream)\\\\b\"\n        }\n      ]\n    },\n    \"xml\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\bxml)(\\\\s*)(`)\",\n          \"name\": \"string.template.ballerina\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.primitive.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.template.begin.ballerina\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xmlTag\"\n            },\n            {\n              \"include\": \"#xmlComment\"\n            },\n            {\n              \"include\": \"#templateVariable\"\n            },\n            {\n              \"name\": \"string\",\n              \"match\": \".\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xmlTag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<\\\\/?\\\\??)\\\\s*([-_a-zA-Z0-9]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.xml.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.xml.ballerina\"\n            }\n          },\n          \"end\": \"\\\\??\\\\/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.xml.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xmlSingleQuotedString\"\n            },\n            {\n              \"include\": \"#xmlDoubleQuotedString\"\n            },\n            {\n              \"name\": \"keyword.other.ballerina\",\n              \"match\": \"xmlns\"\n            },\n            {\n              \"name\": \"entity.other.attribute-name.xml.ballerina\",\n              \"match\": \"([a-zA-Z0-9-]+)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xmlComment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<!--\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.xml.ballerina\"\n            }\n          },\n          \"end\": \"-->\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.xml.ballerina\"\n            }\n          },\n          \"name\": \"comment.block.xml.ballerina\"\n        }\n      ]\n    },\n    \"xmlSingleQuotedString\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\'\",\n          \"end\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.begin.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.ballerina\",\n              \"match\": \"\\\\\\\\.\"\n            },\n            {\n              \"name\": \"string\",\n              \"match\": \".\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xmlDoubleQuotedString\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\\\\"\",\n          \"end\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.begin.ballerina\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.end.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.ballerina\",\n              \"match\": \"\\\\\\\\.\"\n            },\n            {\n              \"name\": \"string\",\n              \"match\": \".\"\n            }\n          ]\n        }\n      ]\n    },\n    \"templateVariable\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\${\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.ballerina\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.ballerina\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.ballerina\"\n        }\n      },\n      \"end\": \"\\\\s*\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.ballerina\",\n          \"begin\": \"(\\\\:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ballerina\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]\\\\?\\\\>\\\\=>]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))(\\\\?)?\",\n          \"patterns\": [\n            {\n              \"include\": \"#booleans\"\n            },\n            {\n              \"include\": \"#stringTemplate\"\n            },\n            {\n              \"include\": \"#self-literal\"\n            },\n            {\n              \"include\": \"#xml\"\n            },\n            {\n              \"include\": \"#call\"\n            },\n            {\n              \"match\": \"\\\\b(is|new|isolated|null|function|in)\\\\b|\\\\b(true|false)\\\\b|\\\\b(check|foreach|if|checkpanic)\\\\b|\\\\b(readonly|error|map)\\\\b|\\\\b(var)\\\\b|([_$[:alpha:]][_$[:alnum:]]*)((\\\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\\\()(\\\\)))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.ballerina\"\n                },\n                \"2\": {\n                  \"name\": \"constant.language.boolean.ballerina\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.ballerina\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.ballerina\"\n                },\n                \"5\": {\n                  \"name\": \"support.type.primitive.ballerina\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.readwrite.ballerina\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.accessor.ballerina\"\n                },\n                \"9\": {\n                  \"name\": \"entity.name.function.ballerina\"\n                },\n                \"10\": {\n                  \"name\": \"punctuation.definition.parameters.begin.ballerina\"\n                },\n                \"11\": {\n                  \"name\": \"punctuation.definition.parameters.end.ballerina\"\n                }\n              }\n            },\n            {\n              \"name\": \"keyword.operator.optional.ballerina\",\n              \"match\": \"\\\\?\"\n            },\n            {\n              \"include\": \"#multiType\"\n            },\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#paranthesised\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.ballerina\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ballerina\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"include\": \"#booleans\"\n        },\n        {\n          \"name\": \"keyword.operator.rest.ballerina\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.ballerina\"\n            }\n          }\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.ballerina\",\n          \"match\": \"\\\\b(fork|join|while|returns|transaction|transactional|retry|commit|rollback|typeof|enum|wait|match)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.flow.ballerina\",\n          \"match\": \"\\\\b(return|break|continue|check|checkpanic|panic|trap|from|where)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\b(public|private|external|return|record|object|remote|abstract|client|true|false|fail|import|version)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\b(as|on|function|resource|listener|const|final|is|null|lock|annotation|source|worker|parameter|field|isolated|in)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\b(xmlns|table|key|let|new|select|start|flush|default|do|base16|base64|conflict)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.ballerina\",\n          \"match\": \"\\\\b(limit|outer|equals|order|by|ascending|descending|class|configurable|variable|module|service)\\\\b\"\n        },\n        {\n          \"name\": \"meta.arrow.ballerina storage.type.function.arrow.ballerina\",\n          \"match\": \"(=>)\"\n        },\n        {\n          \"name\": \"keyword.operator.ballerina\",\n          \"match\": \"(!|%|\\\\+|\\\\-|~=|===|==|=|!=|!==|<|>|&|\\\\||\\\\?:|\\\\.\\\\.\\\\.|<=|>=|&&|\\\\|\\\\||~|>>|>>>)\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#booleans\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#maps\"\n        },\n        {\n          \"include\": \"#self-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.ballerina\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ballerina\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ballerina\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"self-literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\bself\\\\b)\\\\s*(.)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.language.this.ballerina\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ballerina\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ballerina\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))self\\\\b(?!\\\\$)\",\n          \"name\": \"variable.language.this.ballerina\"\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#booleans\"\n        },\n        {\n          \"include\": \"#matchStatement\"\n        },\n        {\n          \"include\": \"#butExp\"\n        },\n        {\n          \"include\": \"#xml\"\n        },\n        {\n          \"include\": \"#stringTemplate\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#mdDocumentation\"\n        },\n        {\n          \"include\": \"#annotationAttachment\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#maps\"\n        },\n        {\n          \"include\": \"#paranthesised\"\n        },\n        {\n          \"include\": \"#paranthesisedBracket\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|int|boolean|float|byte|decimal|json|xml|anydata)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"name\": \"support.type.primitive.ballerina\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/bat.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/mmims/language-batchfile/blob/master/grammars/batchfile.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/mmims/language-batchfile/commit/6154ae25a24e01ac9329e7bcf958e093cd8733a9\",\n  \"name\": \"bat\",\n  \"scopeName\": \"source.batchfile\",\n  \"injections\": {\n    \"L:meta.block.repeat.batchfile\": {\n      \"patterns\": [\n        {\n          \"include\": \"#repeatParameter\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#controls\"\n    },\n    {\n      \"include\": \"#escaped_characters\"\n    },\n    {\n      \"include\": \"#labels\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#variables\"\n    }\n  ],\n  \"repository\": {\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|[\\\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scp|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|sftp|shadow|shift|showmount|shutdown|sort|ssh|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|wmic|wscript|wsl|xcopy)(?=$|\\\\s)\",\n          \"name\": \"keyword.command.batchfile\"\n        },\n        {\n          \"begin\": \"(?i)(?<=^|[\\\\s@])(echo)(?:(?=$|\\\\.|:)|\\\\s+(?:(on|off)(?=\\\\s*$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.command.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_characters\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(?<=^|[\\\\s@])(setlocal)(?:\\\\s*$|\\\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\\\s*$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.command.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        },\n        {\n          \"include\": \"#command_set\"\n        }\n      ]\n    },\n    \"command_set\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i:SET)(?=$|\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.command.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_inside\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_inside\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_characters\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#command_set_strings\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"begin\": \"([^ ][^=]*)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_characters\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s+/[aA]\\\\s+\",\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"name\": \"meta.expression.set.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.batchfile\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.batchfile\"\n                }\n              },\n              \"name\": \"string.quoted.double.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#command_set_inside_arithmetic\"\n                },\n                {\n                  \"include\": \"#command_set_group\"\n                },\n                {\n                  \"include\": \"#variables\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#command_set_inside_arithmetic\"\n            },\n            {\n              \"include\": \"#command_set_group\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s+/[pP]\\\\s+\",\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_strings\"\n            },\n            {\n              \"begin\": \"([^ ][^=]*)(=)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.readwrite.batchfile\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.batchfile\"\n                }\n              },\n              \"end\": \"(?=$\\\\n|[&|><)])\",\n              \"name\": \"meta.prompt.set.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#strings\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_group\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.batchfile\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.batchfile\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#command_set_inside_arithmetic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_set_inside_arithmetic\": {\n      \"patterns\": [\n        {\n          \"include\": \"#command_set_operators\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.batchfile\"\n        }\n      ]\n    },\n    \"command_set_operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"([^ ]*)(\\\\+\\\\=|\\\\-\\\\=|\\\\*\\\\=|\\\\/\\\\=|%%\\\\=|&\\\\=|\\\\|\\\\=|\\\\^\\\\=|<<\\\\=|>>\\\\=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.augmented.batchfile\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\+|\\\\-|/|\\\\*|%%|\\\\||&|\\\\^|<<|>>|~\",\n          \"name\": \"keyword.operator.arithmetic.batchfile\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.logical.batchfile\"\n        },\n        {\n          \"match\": \"([^ =]*)(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          }\n        }\n      ]\n    },\n    \"command_set_strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\")\\\\s*([^ ][^=]*)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.batchfile\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.batchfile\"\n            }\n          },\n          \"name\": \"string.quoted.double.batchfile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#escaped_characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:^|(&))\\\\s*(?=((?::[+=,;: ])))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.conditional.batchfile\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"((?::[+=,;: ]))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.batchfile\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"name\": \"comment.line.colon.batchfile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i)(REM)(\\\\.)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.command.rem.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            }\n          },\n          \"end\": \"(?=$\\\\n|[&|><)])\",\n          \"name\": \"comment.line.rem.batchfile\"\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s@])(?i:rem)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.command.rem.batchfile\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.rem.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \"[><|]\",\n              \"name\": \"invalid.illegal.unexpected-character.batchfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:NUL)\\\\b\",\n          \"name\": \"constant.language.batchfile\"\n        }\n      ]\n    },\n    \"controls\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=^|\\\\s)(?:call|exit(?=$|\\\\s)|goto(?=$|\\\\s|:))\",\n          \"name\": \"keyword.control.statement.batchfile\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i)(if)\\\\s+(?:(not)\\\\s+)?(exist|defined|errorlevel|cmdextversion)(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.logical.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)(?i)(?:if|else)(?=$|\\\\s)\",\n          \"name\": \"keyword.control.conditional.batchfile\"\n        },\n        {\n          \"begin\": \"(?<=^|[\\\\s(&^])(?i)for(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.repeat.batchfile\"\n            }\n          },\n          \"name\": \"meta.block.repeat.batchfile\",\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=[\\\\s^])(?i)in(?=\\\\s)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.repeat.in.batchfile\"\n                }\n              },\n              \"end\": \"(?<=[\\\\s)^])(?i)do(?=\\\\s)|\\\\n\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.repeat.do.batchfile\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"escaped_characters\": {\n      \"patterns\": [\n        {\n          \"match\": \"%%|\\\\^\\\\^!|\\\\^(?=.)|\\\\^\\\\n\",\n          \"name\": \"constant.character.escape.batchfile\"\n        }\n      ]\n    },\n    \"labels\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?:^\\\\s*|(?<=call|goto)\\\\s*)(:)([^+=,;:\\\\s]\\\\S*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.special-method.batchfile\"\n            }\n          }\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|\\\\s|=)(0[xX][0-9A-Fa-f]*|[+-]?\\\\d+)(?=$|\\\\s|<|>)\",\n          \"name\": \"constant.numeric.batchfile\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"@(?=\\\\S)\",\n          \"name\": \"keyword.operator.at.batchfile\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?i:EQU|NEQ|LSS|LEQ|GTR|GEQ)(?=\\\\s)|==\",\n          \"name\": \"keyword.operator.comparison.batchfile\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?i)(NOT)(?=\\\\s)\",\n          \"name\": \"keyword.operator.logical.batchfile\"\n        },\n        {\n          \"match\": \"(?<!\\\\^)&&?|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.conditional.batchfile\"\n        },\n        {\n          \"match\": \"(?<!\\\\^)\\\\|\",\n          \"name\": \"keyword.operator.pipe.batchfile\"\n        },\n        {\n          \"match\": \"<&?|>[&>]?\",\n          \"name\": \"keyword.operator.redirection.batchfile\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.batchfile\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.batchfile\"\n            }\n          },\n          \"name\": \"meta.group.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \",|;\",\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"repeatParameter\": {\n      \"patterns\": [\n        {\n          \"match\": \"(%%)(?:(?i:~[fdpnxsatz]*(?:\\\\$PATH:)?)?[a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.batchfile\"\n            }\n          },\n          \"name\": \"variable.parameter.repeat.batchfile\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.batchfile\"\n            }\n          },\n          \"end\": \"(\\\")|(\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.batchfile\"\n            }\n          },\n          \"name\": \"string.quoted.double.batchfile\",\n          \"patterns\": [\n            {\n              \"match\": \"%%\",\n              \"name\": \"constant.character.escape.batchfile\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(%)(?:(?i:~[fdpnxsatz]*(?:\\\\$PATH:)?)?\\\\d|\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.batchfile\"\n            }\n          },\n          \"name\": \"variable.parameter.batchfile\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#variable_delayed_expansion\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"begin\": \"%(?=[^%]+%)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.begin.batchfile\"\n            }\n          },\n          \"end\": \"(%)|\\\\n\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.end.batchfile\"\n            }\n          },\n          \"name\": \"variable.other.readwrite.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \":~\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=%|\\\\n)\",\n              \"name\": \"meta.variable.substring.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_substring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=%|\\\\n)\",\n              \"name\": \"meta.variable.substitution.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_replace\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.batchfile\"\n                    }\n                  },\n                  \"end\": \"(?=%|\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variable_delayed_expansion\"\n                    },\n                    {\n                      \"match\": \"[^%]+\",\n                      \"name\": \"string.unquoted.batchfile\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variable_delayed_expansion\": {\n      \"patterns\": [\n        {\n          \"begin\": \"!(?=[^!]+!)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.begin.batchfile\"\n            }\n          },\n          \"end\": \"(!)|\\\\n\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.end.batchfile\"\n            }\n          },\n          \"name\": \"variable.other.readwrite.batchfile\",\n          \"patterns\": [\n            {\n              \"begin\": \":~\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=!|\\\\n)\",\n              \"name\": \"meta.variable.substring.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variable_substring\"\n                }\n              ]\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.batchfile\"\n                }\n              },\n              \"end\": \"(?=!|\\\\n)\",\n              \"name\": \"meta.variable.substitution.batchfile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_characters\"\n                },\n                {\n                  \"include\": \"#variable_replace\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.batchfile\"\n                    }\n                  },\n                  \"end\": \"(?=!|\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variable\"\n                    },\n                    {\n                      \"match\": \"[^!]+\",\n                      \"name\": \"string.unquoted.batchfile\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variable_replace\": {\n      \"patterns\": [\n        {\n          \"match\": \"[^=%!\\\\n]+\",\n          \"name\": \"string.unquoted.batchfile\"\n        }\n      ]\n    },\n    \"variable_substring\": {\n      \"patterns\": [\n        {\n          \"match\": \"([+-]?\\\\d+)(?:(,)([+-]?\\\\d+))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.batchfile\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.batchfile\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.batchfile\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/berry.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"berry\",\n  \"patterns\": [\n    {\n      \"include\": \"#controls\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#comment-block\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#member\"\n    },\n    {\n      \"include\": \"#identifier\"\n    },\n    {\n      \"include\": \"#number\"\n    },\n    {\n      \"include\": \"#operator\"\n    }\n  ],\n  \"repository\": {\n    \"controls\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.berry\",\n          \"match\": \"\\\\b(if|elif|else|for|while|do|end|break|continue|return|try|except|raise)\\\\b\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.berry\",\n          \"match\": \"\\\"(\\\\\\\\.|[^\\\"])*\\\"\"\n        },\n        {\n          \"name\": \"string.quoted.single.berry\",\n          \"match\": \"'(\\\\\\\\.|[^'])*'\"\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"name\": \"comment.berry\",\n      \"begin\": \"\\\\#\\\\-\",\n      \"end\": \"\\\\-#\",\n      \"patterns\": [{}]\n    },\n    \"comments\": {\n      \"name\": \"comment.line.berry\",\n      \"begin\": \"\\\\#\",\n      \"end\": \"\\\\n\",\n      \"patterns\": [{}]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.berry\",\n          \"match\": \"\\\\b(var|static|def|class|true|false|nil|self|super|import|as)\\\\b\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"patterns\": [\n        {\n          \"name\": \"identifier.berry\",\n          \"match\": \"\\\\b[_A-Za-z]\\\\w+\\\\b\"\n        }\n      ]\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.berry\",\n          \"match\": \"0x[a-fA-F0-9]+|\\\\d+|(\\\\d+\\\\.?|\\\\.\\\\d)\\\\d*([eE][+-]?\\\\d+)?\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.berry\",\n          \"match\": \"\\\\(|\\\\)|\\\\[|\\\\]|\\\\.|-|\\\\!|~|\\\\*|/|%|\\\\+|&|\\\\^|\\\\||<|>|=|:\"\n        }\n      ]\n    },\n    \"member\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.berry\"\n            }\n          }\n        }\n      ]\n    },\n    \"function\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.function.berry\",\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*(?=\\\\s*\\\\())\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.berry\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/bibtex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/Bibtex.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/b98c2d4911652824fc990f4b26c9c30be59b78a2\",\n  \"name\": \"bibtex\",\n  \"scopeName\": \"text.bibtex\",\n  \"comment\": \"Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment\\n\\t\\n\\tTODO: Does not support @preamble\\n\\t\",\n  \"patterns\": [\n    {\n      \"begin\": \"@Comment\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.bibtex\"\n        }\n      },\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.line.at-sign.bibtex\"\n    },\n    {\n      \"begin\": \"((@)(?i:string))\\\\s*(\\\\{)\\\\s*([a-zA-Z]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.string-constant.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.string-constant.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.bibtex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.string-constant.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.string-constant.braces.bibtex\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)i(?i::string))\\\\s*(\\\\()\\\\s*([a-zA-Z]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.string-constant.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.string-constant.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.bibtex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.string-constant.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.string-constant.parenthesis.bibtex\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)[a-zA-Z]+)\\\\s*(\\\\{)\\\\s*([^\\\\s,]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.entry-type.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.entry.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.entry-key.bibtex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.entry.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.entry.braces.bibtex\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\!\\\\$\\\\&\\\\*\\\\+\\\\-\\\\.\\\\/\\\\:\\\\;\\\\<\\\\>\\\\?\\\\[\\\\]\\\\^\\\\_\\\\`\\\\|]+)\\\\s*(\\\\=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.key.bibtex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.bibtex\"\n            }\n          },\n          \"end\": \"(?=[,}])\",\n          \"name\": \"meta.key-assignment.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_var\"\n            },\n            {\n              \"include\": \"#string_content\"\n            },\n            {\n              \"include\": \"#integer\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"((@)[a-zA-Z]+)\\\\s*(\\\\()\\\\s*([^\\\\s,]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.entry-type.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.entry.begin.bibtex\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.entry-key.bibtex\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.entry.end.bibtex\"\n        }\n      },\n      \"name\": \"meta.entry.parenthesis.bibtex\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\!\\\\$\\\\&\\\\*\\\\+\\\\-\\\\.\\\\/\\\\:\\\\;\\\\<\\\\>\\\\?\\\\[\\\\]\\\\^\\\\_\\\\`\\\\|]+)\\\\s*(\\\\=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.key.bibtex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.bibtex\"\n            }\n          },\n          \"end\": \"(?=[,)])\",\n          \"name\": \"meta.key-assignment.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_var\"\n            },\n            {\n              \"include\": \"#string_content\"\n            },\n            {\n              \"include\": \"#integer\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"[^@\\\\n]\",\n      \"end\": \"(?=@)\",\n      \"name\": \"comment.block.bibtex\"\n    }\n  ],\n  \"repository\": {\n    \"integer\": {\n      \"match\": \"\\\\d+\",\n      \"name\": \"constant.numeric.bibtex\"\n    },\n    \"nested_braces\": {\n      \"begin\": \"(?<!\\\\\\\\)\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.group.begin.bibtex\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.group.end.bibtex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"string_var\": {\n      \"match\": \"(#)?\\\\s*([a-zA-Z]+)\\\\s*(#)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.bibtex\"\n        },\n        \"2\": {\n          \"name\": \"support.variable.bibtex\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.bibtex\"\n        }\n      }\n    },\n    \"string_content\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.bibtex\"\n            }\n          },\n          \"end\": \"(\\\\})(?=(?:,?\\\\s*\\\\}?\\\\s*\\\\n)|(?:\\\\s*#))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.bibtex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@\",\n              \"name\": \"invalid.illegal.at-sign.bibtex\"\n            },\n            {\n              \"include\": \"#nested_braces\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.bibtex\"\n            }\n          },\n          \"end\": \"\\\"(?=(?:,?\\\\s*\\\\}?\\\\s*\\\\n)|(?:\\\\s*#))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.bibtex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"@\",\n              \"name\": \"invalid.illegal.at-sign.bibtex\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/bicep.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"bicep\",\n  \"scopeName\": \"source.bicep\",\n  \"fileTypes\": [\".bicep\"],\n  \"patterns\": [\n    {\n      \"include\": \"#expression\"\n    },\n    {\n      \"include\": \"#comments\"\n    }\n  ],\n  \"repository\": {\n    \"array-literal\": {\n      \"name\": \"meta.array-literal.bicep\",\n      \"begin\": \"\\\\[(?!(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\bfor\\\\b)\",\n      \"end\": \"]\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"name\": \"comment.block.bicep\",\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#line-comment\"\n        },\n        {\n          \"include\": \"#block-comment\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.bicep\",\n      \"begin\": \"@(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*(?=\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b)\",\n      \"end\": \"\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"directive\": {\n      \"name\": \"meta.directive.bicep\",\n      \"begin\": \"#\\\\b[_a-zA-Z-0-9]+\\\\b\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#directive-variable\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"directive-variable\": {\n      \"name\": \"keyword.control.declaration.bicep\",\n      \"match\": \"\\\\b[_a-zA-Z-0-9]+\\\\b\"\n    },\n    \"escape-character\": {\n      \"name\": \"constant.character.escape.bicep\",\n      \"match\": \"\\\\\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\\\\\|'|\\\\${)\"\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#string-verbatim\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#named-literal\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#identifier\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#lambda-start\"\n        },\n        {\n          \"include\": \"#directive\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"name\": \"meta.function-call.bicep\",\n      \"begin\": \"(\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b)(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\(\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.bicep\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.bicep\",\n      \"match\": \"\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?!(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\()\"\n    },\n    \"keyword\": {\n      \"name\": \"keyword.control.declaration.bicep\",\n      \"match\": \"\\\\b(targetScope|resource|module|param|var|output|for|in|if|existing|import|from)\\\\b\"\n    },\n    \"lambda-start\": {\n      \"name\": \"meta.lambda-start.bicep\",\n      \"begin\": \"(\\\\((?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*(,(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*)*\\\\)|\\\\((?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\)|(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*)(?=(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.undefined.bicep\",\n          \"patterns\": [\n            {\n              \"include\": \"#identifier\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*=>\"\n    },\n    \"line-comment\": {\n      \"name\": \"comment.line.double-slash.bicep\",\n      \"match\": \"//.*(?=$)\"\n    },\n    \"named-literal\": {\n      \"name\": \"constant.language.bicep\",\n      \"match\": \"\\\\b(true|false|null)\\\\b\"\n    },\n    \"numeric-literal\": {\n      \"name\": \"constant.numeric.bicep\",\n      \"match\": \"[0-9]+\"\n    },\n    \"object-literal\": {\n      \"name\": \"meta.object-literal.bicep\",\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#object-property-key\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"object-property-key\": {\n      \"name\": \"variable.other.property.bicep\",\n      \"match\": \"\\\\b[_$[:alpha:]][_$[:alnum:]]*\\\\b(?=(?:[ \\\\t\\\\r\\\\n]|\\\\/\\\\*(?:\\\\*(?!\\\\/)|[^*])*\\\\*\\\\/)*:)\"\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.single.bicep\",\n      \"begin\": \"'(?!'')\",\n      \"end\": \"'\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-character\"\n        },\n        {\n          \"include\": \"#string-literal-subst\"\n        }\n      ]\n    },\n    \"string-literal-subst\": {\n      \"name\": \"meta.string-literal-subst.bicep\",\n      \"begin\": \"(?<!\\\\\\\\)(\\\\${)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.template-expression.begin.bicep\"\n        }\n      },\n      \"end\": \"(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.template-expression.end.bicep\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"string-verbatim\": {\n      \"name\": \"string.quoted.multi.bicep\",\n      \"begin\": \"'''\",\n      \"end\": \"'''\",\n      \"patterns\": []\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/blade.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"text.html.php.blade\",\n  \"name\": \"blade\",\n  \"fileTypes\": [\"blade.php\"],\n  \"foldingStartMarker\": \"(/\\\\*|\\\\{\\\\s*$|<<<HTML)\",\n  \"foldingStopMarker\": \"(\\\\*/|^\\\\s*\\\\}|^HTML;)\",\n  \"injections\": {\n    \"text.html.php.blade - (meta.embedded | meta.tag | comment.block.blade), L:(text.html.php.blade meta.tag - (comment.block.blade | meta.embedded.block.blade)), L:(source.js.embedded.html - (comment.block.blade | meta.embedded.block.blade))\": {\n      \"patterns\": [\n        {\n          \"include\": \"#blade\"\n        },\n        {\n          \"begin\": \"(^\\\\s*)(?=<\\\\?(?![^?]*\\\\?>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)>\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"name\": \"meta.embedded.block.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.block.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            }\n          },\n          \"name\": \"meta.embedded.line.php\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"source.php\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"3\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"match\": \"\\\\G(\\\\s*)((\\\\?))(?=>)\",\n              \"name\": \"meta.special.empty-tag.php\"\n            },\n            {\n              \"begin\": \"\\\\G\",\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)(?=>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"blade\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{{--\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.blade\"\n            }\n          },\n          \"end\": \"--}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.blade\"\n            }\n          },\n          \"name\": \"comment.block.blade\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.php-code-in-comment.blade\",\n              \"begin\": \"(^\\\\s*)(?=<\\\\?(?![^?]*\\\\?>))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.whitespace.embedded.leading.php\"\n                }\n              },\n              \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.whitespace.embedded.trailing.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"<\\\\?(?i:php|=)?\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.php\"\n                    }\n                  },\n                  \"contentName\": \"source.php\",\n                  \"end\": \"(\\\\?)>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.block.php\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#language\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"contentName\": \"source.php\",\n              \"end\": \"(\\\\?)>\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                },\n                \"1\": {\n                  \"name\": \"source.php\"\n                }\n              },\n              \"name\": \"invalid.illegal.php-code-in-comment.blade.meta.embedded.block.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"<\\\\?(?i:php|=)?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.begin.php\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.embedded.end.php\"\n                }\n              },\n              \"name\": \"invalid.illegal.php-code-in-comment.blade.meta.embedded.line.php\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"match\": \"\\\\G(\\\\s*)((\\\\?))(?=>)\",\n                  \"name\": \"meta.special.empty-tag.php\"\n                },\n                {\n                  \"begin\": \"\\\\G\",\n                  \"contentName\": \"source.php\",\n                  \"end\": \"(\\\\?)(?=>)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.php\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#language\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!@){{{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"}}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![@{]){{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!@){!!\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.begin.blade\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"!!}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.construct.end.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(@){{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"begin.bracket.round.blade\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.index.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"}}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.function.echo.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)(?<![A-Za-z0-9_@]) (@  (?i:\\n    auth\\n    |break\\n    |can\\n    |cannot\\n    |case\\n    |choice\\n    |component\\n    |continue\\n    |dd\\n    |dump\\n    |each\\n    |elsecan\\n    |elsecannot\\n    |elseif\\n    |empty\\n    |error\\n    |extends\\n    |for\\n    |foreach\\n    |forelse\\n    |guest\\n    |hassection\\n    |if\\n    |include\\n    |includefirst\\n    |includeif\\n    |includeunless\\n    |includewhen\\n    |inject\\n    |isset\\n    |json\\n    |lang\\n    |once\\n    |prepend\\n    |push\\n    |section\\n    |sectionMissing\\n    |slot\\n    |stack\\n    |switch\\n    |unless\\n    |unset\\n    |while\\n    |yield\\n    |servers\\n    |task\\n    |story\\n    |finished\\n    |production\\n    |slack\\n    |method\\n    |props\\n    |env\\n    |livewire\\n    |php\\n  )[\\\\t ]*\\n)(\\\\() # Followed by opening parentheses\\n\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)(?<![A-Za-z0-9_@]) (@  (?i:\\n    append\\n    |default\\n    |else\\n    |endauth\\n    |endcan\\n    |endcannot\\n    |endcomponent\\n    |endempty\\n    |enderror\\n    |endfor\\n    |endforeach\\n    |endforelse\\n    |endguest\\n    |endif\\n    |endisset\\n    |endlang\\n    |endonce\\n    |endprepend\\n    |endpush\\n    |endsection\\n    |endslot\\n    |endswitch\\n    |endunless\\n    |endwhile\\n    |overwrite\\n    |parent\\n    |show\\n    |stop\\n    |endtask\\n    |endstory\\n    |endfinished\\n    |endproduction\\n    |endenv\\n  )[\\\\t ]*\\n)(\\\\() # Followed by opening parentheses\\n\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"comment.blade\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)(?<![A-Za-z0-9_@]) @(?:  append\\n  |break\\n  |continue\\n  |csrf\\n  |default\\n  |each\\n  |else\\n  |overwrite\\n  |parent\\n  |sectionMissing\\n  |show\\n  |stack\\n  |stop\\n  |livewireStyles\\n  |livewireScripts\\n)\\\\b\\n\",\n          \"name\": \"keyword.blade\"\n        },\n        {\n          \"match\": \"(?x)(?<![A-Za-z0-9_@]) @(end)? (?i:  auth\\n  |can\\n  |cannot\\n  |component\\n  |empty\\n  |error\\n  |for\\n  |foreach\\n  |forelse\\n  |guest\\n  |if\\n  |isset\\n  |lang\\n  |prepend\\n  |push\\n  |section\\n  |slot\\n  |switch\\n  |unless\\n  |verbatim\\n  |while\\n  |task\\n  |story\\n  |finished\\n  |production\\n  |env\\n  |once\\n)\\\\b\\n\",\n          \"name\": \"keyword.blade\"\n        },\n        {\n          \"begin\": \"(?<![A-Za-z0-9_@])@(?i:php|setup)\\\\b\",\n          \"end\": \"(?<![A-Za-z0-9_@])(?=@(?i:endphp|endsetup)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"name\": \"meta.embedded.block.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)(?<![A-Za-z0-9_@]) (@(?i:endphp|endsetup)[\\\\t ]*) (\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"comment.blade\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)(?<![A-Za-z0-9_@]) @(?:(?i)endphp|endsetup)\\\\b\",\n          \"name\": \"punctuation.section.embedded.end.php\"\n        },\n        {\n          \"begin\": \"(?x)(?<![A-Za-z0-9_@]) (@\\\\w+(?:::w+)?[\\\\t ]*) (\\\\() # Followed by opening parentheses\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.blade\"\n            },\n            \"2\": {\n              \"name\": \"begin.bracket.round.blade.php\"\n            }\n          },\n          \"contentName\": \"source.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"end.bracket.round.blade.php\"\n            }\n          },\n          \"name\": \"meta.directive.custom.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)(?<![A-Za-z0-9_@]) @\\\\w+(?:::w+)?\\\\b\",\n          \"name\": \"entity.name.function.blade\"\n        }\n      ]\n    },\n    \"balance_brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#balance_brackets\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^()]+\"\n        }\n      ]\n    },\n    \"class-builtin\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b\\n((APC|Append)Iterator|Array(Access|Iterator|Object)\\n|Bad(Function|Method)CallException\\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\\n    |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\\n|(Error)?Exception|EmptyIterator\\n|finfo\\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\\n|FANNConnection|(Filter|Filesystem)Iterator\\n|Gender\\\\\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\\n|HRTime\\\\\\\\(PerformanceCounter|StopWatch)\\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\\n|Imagick(Draw|Pixel(Iterator)?)?\\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\\n|JsonSerializable\\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\\n      |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\\n      |UpdateBatch|Write(Batch|ConcernException))?\\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\\n|mysqli(_(driver|stmt|warning|result))?\\n|MysqlndUh(Connection|PreparedStatement)\\n|NoRewindIterator|Normalizer|NumberFormatter\\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\\n|QuickHash(Int(Set|StringHash)|StringIntHash)\\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\\n     |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\\n|Soap(Client|Fault|Header|Param|Server|Var)\\n|SphinxClient|Spoofchecker\\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\\n    |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\\n|UConverter|(Underflow|UnexpectedValue)Exception\\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\\n|Worker|Weak(Map|Ref)\\n|XML(Diff\\\\\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\\n     |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\\n     |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\\n     |Response_Abstract|Router|Session|View_(Simple|Interface))\\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\n\\\\b\",\n          \"name\": \"support.class.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9]+\\\\\\\\)\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"begin\": \"(?=[\\\\\\\\a-zA-Z_])\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"name\": \"comment.block.documentation.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.php\"\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.double-slash.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\\\b\",\n          \"name\": \"constant.language.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(DEFAULT_INCLUDE_PATH\\n|EAR_(INSTALL|EXTENSION)_DIR\\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\\n   |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\\n     |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\\n     |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\\n     |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\\n     |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\\n     |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\\n              |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\\n              |PRODUCTTYPE|PLATFORM)\\n     |LIBDIR|LOCALSTATEDIR)\\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\n\\\\b\",\n          \"name\": \"support.constant.core.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\\n     |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\\n|YES(EXPR|STR))\\n\\\\b\",\n          \"name\": \"support.constant.std.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\\n     |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\\n     |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\\n            |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\\n            |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\\n            |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\\n     |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\\n     |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\\n       |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\\n        |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\\n        |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\\n        |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\\n        |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\\n        |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\\n        |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\\n        |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\\n              |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\\n        |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\\n        |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\\n        |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\\n        |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\\n        |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\\n        |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\\n        |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\\n        |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\\n                |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\\n        |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\\n        |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\\n        |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\\n        |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\\n        |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\\n        |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\\n     |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\\n     |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\\n     |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\\n           |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\\n           |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\\n           |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\\n     |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\\n          |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\\n          |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\\n          |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\\n          |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\\n          |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\\n          |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\\n          |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\\n          |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\\n          |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\\n          |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\\n          |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\\n          |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\\n          |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\\n          |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\\n          |AUTOREFERER)\\n     |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\\n     |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\\n        |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\\n        |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\\n        |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\\n        |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\\n        |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\\n        |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\\n        |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\\n             |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\\n             |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\\n        |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\\n        |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\\n     |VERSION_NOW\\n     |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\\n     |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\\n      |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\\n|DOM(STRING_SIZE_ERR)\\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\\n     |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\\n      |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\\n        |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\\n                  |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\\n        |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\\n        |FORCE_ARRAY\\n        |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\\n              |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\\n              |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\\n|FORCE_(DEFLATE|GZIP)\\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\\n        |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\\n\\\\b\",\n          \"name\": \"support.constant.ext.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\\n   |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\\n   |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\\n   |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\\n   |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\\n   |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\\n   |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\\n   |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\\n   |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\\n   |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\\n   |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\\n   |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\\n\\\\b\",\n          \"name\": \"support.constant.parser-token.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n          \"name\": \"constant.other.php\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(array)                                                            # Typehint\\n\\\\s+((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*(array)\\\\s*(\\\\()                                        # Default value\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.array.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(array|callable)                                                   # Typehint\\n\\\\s+((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n(?:                                                                # Optional default value\\n  \\\\s*(=)\\\\s*\\n  (?:\\n    (null)\\n    |\\n    (\\\\[)((?>[^\\\\[\\\\]]+|\\\\[\\\\g<8>\\\\])*)(\\\\])\\n    |((?:\\\\S*?\\\\(\\\\))|(?:\\\\S*?))\\n  )\\n)?\\n\\\\s*(?=,|\\\\)|/[/*]|\\\\#|$) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"name\": \"meta.function.parameter.array.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.php\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            },\n            \"9\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            },\n            \"10\": {\n              \"name\": \"invalid.illegal.non-null-typehinted.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?xi)\\n(\\\\\\\\?(?:[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)*)                 # Optional namespace\\n([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)                               # Typehinted class name\\n\\\\s+((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.other.namespace.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n          \"name\": \"meta.function.parameter.typehinted.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(?=,|\\\\)|/[/*]|\\\\#|$) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"name\": \"meta.function.parameter.no-default.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((&)?\\\\s*(\\\\.\\\\.\\\\.)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*\\n(?:(\\\\[)((?>[^\\\\[\\\\]]+|\\\\[\\\\g<6>\\\\])*)(\\\\]))?                              # Optional default type\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"end\": \"(?=,|\\\\)|/[/*]|\\\\#)\",\n          \"name\": \"meta.function.parameter.default.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?xi)\\n(\\n  \\\\\\\\?\\\\b                                                # Optional root namespace\\n  [a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*          # First namespace\\n  (?:\\\\\\\\[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)+ # Additional namespaces\\n)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(\\\\\\\\)?\\\\b([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#support\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=<<<\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\1)\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.heredoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc_interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<<<\\\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.nowdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#nowdoc_interior\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(HTML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(XML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(SQL)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JAVASCRIPT|JS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JSON)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(CSS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(REGEXP?)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.heredoc.php\",\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{ff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{ff}]+[a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\2)(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^(\\\\3)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nowdoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*'(HTML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(XML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(SQL)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JAVASCRIPT|JS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JSON)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(CSS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(REGEXP?)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.nowdoc.php\",\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{ff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*'([a-z_\\\\x{7f}-\\\\x{ff}]+[a-z0-9_\\\\x{7f}-\\\\x{ff}]*)'(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^(\\\\2)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"instantiation\": {\n      \"begin\": \"(?i)(new)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(parent|static|self)(?![a-z0-9_\\\\x{7f}-\\\\x{ff}])\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.character.escape.octal.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{1,2}\",\n          \"name\": \"constant.character.escape.hex.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\u{[0-9A-Fa-f]+}\",\n          \"name\": \"constant.character.escape.unicode.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\[nrtvef$\\\"\\\\\\\\]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"begin\": \"{(?=\\\\$.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"invoke-call\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.php\"\n        }\n      },\n      \"match\": \"(?i)(\\\\$+)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=\\\\s*\\\\()\",\n      \"name\": \"meta.function-call.invoke.php\"\n    },\n    \"language\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(interface)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(extends)?\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)((?:[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\s*,\\\\s*)*)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\\\\s*(?:(?={)|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.classes.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.php\"\n            }\n          },\n          \"name\": \"meta.interface.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(trait)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.trait.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trait.php\"\n            }\n          },\n          \"end\": \"(?={)\",\n          \"name\": \"meta.trait.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+([a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+)(?=\\\\s*;)\",\n          \"name\": \"meta.namespace.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.namespace.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.namespace.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.namespace.php\"\n            }\n          },\n          \"end\": \"(?<=})|(?=\\\\?>)\",\n          \"name\": \"meta.namespace.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(?i)[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+\",\n              \"name\": \"entity.name.type.namespace.php\",\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\\\\\\",\n                      \"name\": \"punctuation.separator.inheritance.php\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.namespace.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"}|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.namespace.end.bracket.curly.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"invalid.illegal.identifier.php\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s+(?=use\\\\b)\"\n        },\n        {\n          \"begin\": \"(?i)\\\\buse\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.use.php\"\n            }\n          },\n          \"end\": \"(?<=})|(?=;)\",\n          \"name\": \"meta.use.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(const|function)\\\\b\",\n              \"name\": \"storage.type.${1:/downcase}.php\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.use.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.use.end.bracket.curly.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#scope-resolution\"\n                },\n                {\n                  \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+(final|abstract|public|private|protected|static)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n\\\\b\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-as.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.modifier.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"entity.other.alias.php\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n\\\\b\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-as.php\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"^(?:final|abstract|public|private|protected|static)$\",\n                          \"name\": \"storage.modifier.php\"\n                        },\n                        {\n                          \"match\": \".+\",\n                          \"name\": \"entity.other.alias.php\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?i)\\\\b(insteadof)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.use-insteadof.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"support.class.php\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \";\",\n                  \"name\": \"punctuation.terminator.expression.php\"\n                },\n                {\n                  \"include\": \"#use-inner\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#use-inner\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(?:(abstract|final)\\\\s+)?(class)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.${1:/downcase}.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.php\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.class.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(?i)(extends)\\\\s+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.extends.php\"\n                }\n              },\n              \"contentName\": \"meta.other.inherited-class.php\",\n              \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)\",\n                  \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#class-builtin\"\n                },\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?i)(implements)\\\\s+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.implements.php\"\n                }\n              },\n              \"end\": \"(?i)(?=[;{])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"(?i)(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+)\",\n                  \"contentName\": \"meta.other.inherited-class.php\",\n                  \"end\": \"(?i)(?:\\\\s*(?:,|(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\\\\\s]))\\\\s*)\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\\\\\)\",\n                      \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n                      \"endCaptures\": {\n                        \"1\": {\n                          \"name\": \"entity.other.inherited-class.php\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#namespace\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#class-builtin\"\n                    },\n                    {\n                      \"include\": \"#namespace\"\n                    },\n                    {\n                      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.class.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"contentName\": \"meta.class.body.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\s*\\n\\\\b(\\n  break|case|continue|declare|default|die|do|\\n  else(if)?|end(declare|for(each)?|if|switch|while)|exit|\\n  for(each)?|if|return|switch|use|while|yield\\n)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.${1:/downcase}.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)\\\\b((?:require|include)(?:_once)?)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|;|$|\\\\?>)\",\n          \"name\": \"meta.include.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(catch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.catch.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.catch.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            },\n            {\n              \"match\": \"(?xi)\\n([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)                 # Exception class\\n((?:\\\\s*\\\\|\\\\s*[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)*) # Optional additional exception classes\\n\\\\s*\\n((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)           # Variable\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.exception.php\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n                      \"name\": \"support.class.exception.php\"\n                    },\n                    {\n                      \"match\": \"\\\\|\",\n                      \"name\": \"punctuation.separator.delimiter.php\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.other.php\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.variable.php\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(catch|try|throw|exception|finally)\\\\b\",\n          \"name\": \"keyword.control.exception.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(function)\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.php\"\n            }\n          },\n          \"end\": \"(?={)\",\n          \"name\": \"meta.function.closure.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n                }\n              },\n              \"contentName\": \"meta.function.parameters.php\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?i)(use)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.function.use.php\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.other.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.modifier.reference.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.variable.php\"\n                    }\n                  },\n                  \"match\": \"(?i)((&)?\\\\s*(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(?=,|\\\\))\",\n                  \"name\": \"meta.function.closure.use.php\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected|static)\\\\s+)*)\\n(function)\\\\s+\\n(?i:\\n  (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|\\n        clone|set_state|sleep|wakeup|autoload|invoke|callStatic))\\n  |([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"final|abstract|public|private|protected|static\",\n                  \"name\": \"storage.modifier.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.php\"\n            },\n            \"3\": {\n              \"name\": \"support.function.magic.php\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"(\\\\))(?:\\\\s*(:)\\\\s*([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*))?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.php\"\n            }\n          },\n          \"name\": \"meta.function.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#invoke-call\"\n        },\n        {\n          \"include\": \"#scope-resolution\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"match\": \"(array)(\\\\()(\\\\))\",\n          \"name\": \"meta.array.empty.php\"\n        },\n        {\n          \"begin\": \"(array)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(\\\\()\\\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.storage-type.begin.bracket.round.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.storage-type.end.bracket.round.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)\\\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object)\\\\b\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(global|abstract|const|extends|implements|final|private|protected|public|static)\\\\b\",\n          \"name\": \"storage.modifier.php\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.expression.php\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.terminator.statement.php\"\n        },\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"match\": \"(?i)\\\\bclone\\\\b\",\n          \"name\": \"keyword.other.clone.php\"\n        },\n        {\n          \"match\": \"\\\\.=?\",\n          \"name\": \"keyword.operator.string.php\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\=)(&)|(&)(?=[$a-z_])\"\n        },\n        {\n          \"match\": \"@\",\n          \"name\": \"keyword.operator.error-control.php\"\n        },\n        {\n          \"match\": \"===|==|!==|!=|<>\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"=|\\\\+=|\\\\-=|\\\\*=|/=|%=|&=|\\\\|=|\\\\^=|<<=|>>=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"<=>|<=|>=|<|>\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"\\\\-\\\\-|\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment-decrement.php\"\n        },\n        {\n          \"match\": \"\\\\-|\\\\+|\\\\*|/|%\",\n          \"name\": \"keyword.operator.arithmetic.php\"\n        },\n        {\n          \"match\": \"(?i)(!|&&|\\\\|\\\\|)|\\\\b(and|or|xor|as)\\\\b\",\n          \"name\": \"keyword.operator.logical.php\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"match\": \"<<|>>|~|\\\\^|&|\\\\|\",\n          \"name\": \"keyword.operator.bitwise.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(instanceof)\\\\s+(?=[\\\\\\\\$a-z_])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.php\"\n            }\n          },\n          \"end\": \"(?=[^\\\\\\\\$a-z0-9_\\\\x{7f}-\\\\x{ff}])\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.goto.php\"\n            },\n            \"2\": {\n              \"name\": \"support.other.php\"\n            }\n          },\n          \"match\": \"(?i)(goto)\\\\s+([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.goto-label.php\"\n            }\n          },\n          \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*:(?!:)\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\]|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"namespace\": {\n      \"begin\": \"(?i)(?:(namespace)|[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?(\\\\\\\\)(?=.*?[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.language.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}]*[^a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\])\",\n      \"name\": \"support.other.namespace.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\",\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"0[xX][0-9a-fA-F]+\",\n          \"name\": \"constant.numeric.hex.php\"\n        },\n        {\n          \"match\": \"0[bB][01]+\",\n          \"name\": \"constant.numeric.binary.php\"\n        },\n        {\n          \"match\": \"0[0-7]+\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(?:\\n  [0-9]*(\\\\.)[0-9]+(?:[eE][+-]?[0-9]+)?|\\n  [0-9]+(\\\\.)[0-9]*(?:[eE][+-]?[0-9]+)?|\\n  [0-9]+[eE][+-]?[0-9]+\\n)\",\n          \"name\": \"constant.numeric.decimal.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"0|[1-9][0-9]*\",\n          \"name\": \"constant.numeric.decimal.php\"\n        }\n      ]\n    },\n    \"object\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(->)(\\\\$?{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(->)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(->)((\\\\$+)?[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"&(?=\\\\s*\\\\$)\",\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        {\n          \"begin\": \"(array)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(?=[a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]+(::)\\n  ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\\n)\",\n          \"end\": \"(?i)(::)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"php_doc\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(?!\\\\s*\\\\*).*?(?:(?=\\\\*\\\\/)|$\\\\n?)\",\n          \"name\": \"invalid.illegal.missing-asterisk.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.wrong-access-type.phpdoc.php\"\n            }\n          },\n          \"match\": \"^\\\\s*\\\\*\\\\s*(@access)\\\\s+((public|private|protected)|(.+))\\\\s*$\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"2\": {\n              \"name\": \"markup.underline.link.php\"\n            }\n          },\n          \"match\": \"(@xlink)\\\\s+(.+)\\\\s*$\"\n        },\n        {\n          \"begin\": \"(@(?:global|param|property(-(read|write))?|return|throws|var))\\\\s+(?=[A-Za-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\]|\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/)\",\n          \"contentName\": \"meta.other.type.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types_array_multiple\"\n            },\n            {\n              \"include\": \"#php_doc_types_array_single\"\n            },\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n@\\n(\\n  api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\\n  license|link|method|property(-(read|write))?|package|param|return|see|since|source|\\n  static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\\n)\\\\b\",\n          \"name\": \"keyword.other.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"match\": \"{(@(link|inherit[Dd]oc)).+?}\",\n          \"name\": \"meta.tag.inline.phpdoc.php\"\n        }\n      ]\n    },\n    \"php_doc_types\": {\n      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*(\\\\|[a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*)*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\b\\n(string|integer|int|boolean|bool|float|double|object|mixed\\n|array|resource|void|null|callback|false|true|self)\\\\b\",\n              \"name\": \"keyword.other.type.php\"\n            },\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            }\n          ]\n        }\n      }\n    },\n    \"php_doc_types_array_multiple\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.type.begin.bracket.round.phpdoc.php\"\n        }\n      },\n      \"end\": \"(\\\\))(\\\\[\\\\])|(?=\\\\*/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.type.end.bracket.round.phpdoc.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#php_doc_types_array_multiple\"\n        },\n        {\n          \"include\": \"#php_doc_types_array_single\"\n        },\n        {\n          \"include\": \"#php_doc_types\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"php_doc_types_array_single\": {\n      \"match\": \"(?i)([a-z_\\\\x{7f}-\\\\x{ff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{ff}\\\\\\\\]*)(\\\\[\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      }\n    },\n    \"regex-double-quoted\": {\n      \"begin\": \"\\\"/(?=(\\\\\\\\.|[^\\\"/])++/[imsxeADSUXu]*\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.double-quoted.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"regex-single-quoted\": {\n      \"begin\": \"'/(?=(\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.single-quoted.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#single_quote_regex_escape\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\"\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"scope-resolution\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=\\\\s*::)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(self|static|parent)\\\\b\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"entity.name.class.php\"\n                },\n                {\n                  \"include\": \"#class-name\"\n                },\n                {\n                  \"include\": \"#variable-name\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.static.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(::)\\\\s*(class)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.class.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?xi)\\n(::)\\\\s*\\n(?:\\n  ((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*) # Variable\\n  |\\n  ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)       # Constant\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quote_regex_escape\": {\n      \"match\": \"\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)\",\n      \"name\": \"constant.character.escape.php\"\n    },\n    \"sql-string-double-quoted\": {\n      \"begin\": \"\\\"\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\\\\"`']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"'(?=((\\\\\\\\')|[^'\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.single.unclosed.sql\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"sql-string-single-quoted\": {\n      \"begin\": \"'\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\'`\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`'])*('|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"match\": \"\\\"(?=((\\\\\\\\\\\")|[^\\\"'])*('|$))\",\n          \"name\": \"string.quoted.double.unclosed.sql\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"string-backtick\": {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.interpolated.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-double-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#regex-single-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n\\\\b\\napc_(\\n  store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\\n  exists|fetch|load_constants|add|bin_(dump|load)(file)?\\n)\\\\b\",\n          \"name\": \"support.function.apc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\\n  pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\\n  array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\\n          (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\\n          pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\\n          reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\\n)\\\\b\",\n          \"name\": \"support.function.array.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\\n  time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\\n  php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\\n)\\\\b\",\n          \"name\": \"support.function.basic_functions.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\\\b\",\n          \"name\": \"support.function.bcmath.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bblenc_encrypt\\\\b\",\n          \"name\": \"support.function.blenc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\\\b\",\n          \"name\": \"support.function.bz2.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\\n  jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\\n)\\\\b\",\n          \"name\": \"support.function.calendar.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\\n  get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\\n)\\\\b\",\n          \"name\": \"support.function.classobj.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\\n  variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\\n           pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\\n)\\\\b\",\n          \"name\": \"support.function.com.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(isset|unset|eval|empty|list)\\\\b\",\n          \"name\": \"support.function.construct.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\\\b\",\n          \"name\": \"support.function.ctype.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ncurl_(\\n  share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\\n  errno|error|exec|version|file_create|reset|getinfo|\\n  multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\\n)\\\\b\",\n          \"name\": \"support.function.curl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\\n  timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\\n  date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\\n         isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\\n         parse(_from_format)?|format|add|get_last_errors|modify))?|\\n  localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\\n)\\\\b\",\n          \"name\": \"support.function.datetime.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\\\b\",\n          \"name\": \"support.function.dba.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\\\b\",\n          \"name\": \"support.function.dbx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\\\b\",\n          \"name\": \"support.function.dir.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\neio_(\\n  sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\\n  seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\\n  event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\\n  read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\\n)\\\\b\",\n          \"name\": \"support.function.eio.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nenchant_(\\n  dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\\n  broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\\n)\\\\b\",\n          \"name\": \"support.function.enchant.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsplit(i)?|sql_regcase|ereg(i)?(_replace)?\\\\b\",\n          \"name\": \"support.function.ereg.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\\\b\",\n          \"name\": \"support.function.errorfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec\\\\b\",\n          \"name\": \"support.function.exec.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\\\b\",\n          \"name\": \"support.function.exif.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nfann_(\\n  (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\\n  set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\\n       cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\\n                output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\\n                (max|min)_(cand|out)_epochs)|\\n       callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\\n       quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\\n       activation_(function|steepness)(_(hidden|layer|output))?|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\\n  save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\\n  create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\\n  test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\\n  print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\\n  get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\\n       network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\\n       cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\\n                weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\\n       total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\\n       quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))\\n)\\\\b\",\n          \"name\": \"support.function.fann.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\\n  is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\\n  dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\\n  fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\\n  f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\\n  rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\\n)\\\\b\",\n          \"name\": \"support.function.file.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\\\b\",\n          \"name\": \"support.function.fileinfo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\\\b\",\n          \"name\": \"support.function.filter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfastcgi_finish_request\\\\b\",\n          \"name\": \"support.function.fpm.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\\\b\",\n          \"name\": \"support.function.funchand.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\\\b\",\n          \"name\": \"support.function.gettext.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ngmp_(\\n  scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\\n  intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\\n  prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\\n)\\\\b\",\n          \"name\": \"support.function.gmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\\\b\",\n          \"name\": \"support.function.hash.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\\n        negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\\n        inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\\n        parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\\n        get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\\n  ob_(etag|deflate|inflate)handler\\n)\\\\b\",\n          \"name\": \"support.function.http.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\\\b\",\n          \"name\": \"support.function.iconv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\\\b\",\n          \"name\": \"support.function.iisfunc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\\n  image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\\n        convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\\n        color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\\n        crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\\n        types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\\n        _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\\n        palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\\n        filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\\n        antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\\n        grab(screen|window)|xbm)\\n)\\\\b\",\n          \"name\": \"support.function.image.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\\n  ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\\n  php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\\n  assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\\n  get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\\n       magic_quotes_(gpc|runtime)|required_files|resources)|\\n  get(env|lastmod|rusage|my(inode|[gup]id))|\\n  memory_get_(peak_)?usage|main|magic_quotes_runtime\\n)\\\\b\",\n          \"name\": \"support.function.info.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nibase_(\\n  set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\\n  commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\\n  execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\\n  add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\\n  blob_(cancel|close|create|import|info|open|echo|add|get)\\n)\\\\b\",\n          \"name\": \"support.function.interbase.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\\n  numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\\n          get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\\n  collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\\n            get_(strength|sort_key|error_(code|message)|locale|attribute))|\\n  transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\\n  intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\\n  datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\\n           get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\\n  locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\\n          get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\\n  resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\\n  grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\\n  msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\\n)\\\\b\",\n          \"name\": \"support.function.intl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bjson_(decode|encode|last_error(_msg)?)\\\\b\",\n          \"name\": \"support.function.json.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nldap_(\\n  start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\\n  connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\\n  dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\\n  free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\\n  mod_(add|del|replace)\\n)\\\\b\",\n          \"name\": \"support.function.ldap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\\\b\",\n          \"name\": \"support.function.libxml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ezmlm_hash|mail)\\\\b\",\n          \"name\": \"support.function.mail.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\\n  pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\\n  mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\\n)\\\\b\",\n          \"name\": \"support.function.math.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmb_(\\n  str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\\n  substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\\n  convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\\n  detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\\n  ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\\n  list_encodings|language|regex_(set_options|encoding)|get_info\\n)\\\\b\",\n          \"name\": \"support.function.mbstring.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  mcrypt_(\\n    cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\\n    enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\\n    get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\\n    get_(cipher_name|(block|iv|key)_size)|\\n    module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\\n            get_(supported_key_sizes|algo_(block|key)_size)))|\\n  mdecrypt_generic\\n)\\\\b\",\n          \"name\": \"support.function.mcrypt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmemcache_debug\\\\b\",\n          \"name\": \"support.function.memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\\\b\",\n          \"name\": \"support.function.mhash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\\\b\",\n          \"name\": \"support.function.mongo.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysql_(\\n  stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\\n  thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\\n  errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\\n  free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\\n  get_(client|host|proto|server)_info\\n)\\\\b\",\n          \"name\": \"support.function.mysql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysqli_(\\n  ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\\n  stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\\n        attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\\n  select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\\n  client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\\n  dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\\n  embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\\n  fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\\n  release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\\n  get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\\n  master_query|bind_(param|result)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.mysqli.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_memcache_(set|get_config)\\\\b\",\n          \"name\": \"support.function.mysqlnd-memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\\\b\",\n          \"name\": \"support.function.mysqlnd-ms.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\\\b\",\n          \"name\": \"support.function.mysqlnd-qc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\\\b\",\n          \"name\": \"support.function.mysqlnd-uh.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\\n  headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\\n  openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\\n  get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\\n)\\\\b\",\n          \"name\": \"support.function.network.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bnsapi_(virtual|response_headers|request_headers)\\\\b\",\n          \"name\": \"support.function.nsapi.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\\n      column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\\n      closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\\n      free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\\n      result|bindbyname)|\\n  oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\\n       num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\\n       internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\\n       field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\\n       free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\\n)\\\\b\",\n          \"name\": \"support.function.oci8.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\\\b\",\n          \"name\": \"support.function.opcache.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nopenssl_(\\n  sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\\n  cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\\n  pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\\n  pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\\n  get_((cipher|md)_methods|cert_locations|(public|private)key)|\\n  x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\\n)\\\\b\",\n          \"name\": \"support.function.openssl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  output_(add_rewrite_var|reset_rewrite_vars)|flush|\\n  ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\\n      get_(status|contents|clean|flush|length|level))\\n)\\\\b\",\n          \"name\": \"support.function.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpassword_(hash|needs_rehash|verify|get_info)\\\\b\",\n          \"name\": \"support.function.password.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npcntl_(\\n  strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\\n  w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\\n)\\\\b\",\n          \"name\": \"support.function.pcntl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npg_(\\n  socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\\n  num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\\n  client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\\n  unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\\n  escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\\n  field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\\n  fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\\n  lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\\n)\\\\b\",\n          \"name\": \"support.function.pgsql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\\\b\",\n          \"name\": \"support.function.php_apache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdom_import_simplexml\\\\b\",\n          \"name\": \"support.function.php_dom.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nftp_(\\n  ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\\n  delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\\n)\\\\b\",\n          \"name\": \"support.function.php_ftp.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nimap_(\\n  (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\\n  num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\\n  8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\\n  fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\\n  rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\\n  msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\\n)\\\\b\",\n          \"name\": \"support.function.php_imap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmssql_(\\n  select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\\n  field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\\n  rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\\n)\\\\b\",\n          \"name\": \"support.function.php_mssql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nodbc_(\\n  statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\\n  cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\\n  prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\\n  fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\\n)\\\\b\",\n          \"name\": \"support.function.php_odbc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\\\b\",\n          \"name\": \"support.function.php_pcre.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\\\b\",\n          \"name\": \"support.function.php_spl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\\\b\",\n          \"name\": \"support.function.php_zip.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nposix_(\\n  strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\\n  get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\\n  get_last_error|mknod|mkfifo\\n)\\\\b\",\n          \"name\": \"support.function.posix.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bset(thread|proc)title\\\\b\",\n          \"name\": \"support.function.proctitle.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npspell_(\\n  store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\\n  config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\\n)\\\\b\",\n          \"name\": \"support.function.pspell.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\\\b\",\n          \"name\": \"support.function.readline.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brecode(_(string|file))?\\\\b\",\n          \"name\": \"support.function.recode.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\\\b\",\n          \"name\": \"support.function.rrd.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\\n  msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\\n)\\\\b\",\n          \"name\": \"support.function.sem.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsession_(\\n  status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\\n  is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\\n  regenerate_id|get_cookie_params|module_name\\n)\\\\b\",\n          \"name\": \"support.function.session.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshmop_(size|close|open|delete|write|read)\\\\b\",\n          \"name\": \"support.function.shmop.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsimplexml_(import_dom|load_(string|file))\\\\b\",\n          \"name\": \"support.function.simplexml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  snmp(walk(oid)?|realwalk|get(next)?|set)|\\n  snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\\n        get_(valueretrieval|quick_print))|\\n  snmp[23]_(set|walk|real_walk|get(next)?)\\n)\\\\b\",\n          \"name\": \"support.function.snmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(is_soap_fault|use_soap_error_handler)\\\\b\",\n          \"name\": \"support.function.soap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsocket_(\\n  shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\\n  create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\\n  read|get(peer|sock)name|get_option\\n)\\\\b\",\n          \"name\": \"support.function.sockets.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlite_(\\n  single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\\n  create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\\n  escape_string|error_string|exec|valid|key|query|field_name|factory|\\n  fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\\n  last_(insert_rowid|error)|array_query|rewind|busy_timeout\\n)\\\\b\",\n          \"name\": \"support.function.sqlite.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlsrv_(\\n  send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\\n  client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\\n  free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.sqlsrv.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nstats_(\\n  harmonic_mean|covariance|standard_deviation|skew|\\n  cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\\n       logistic|laplace|gamma|binomial|beta)|\\n  stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\\n  dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\\n        weibull|logistic|laplace|gamma|beta)|\\n  den_uniform|variance|kurtosis|absolute_deviation|\\n  rand_(setall|phrase_to_seeds|ranf|get_seeds|\\n        gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\\n             i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\\n)\\\\b\",\n          \"name\": \"support.function.stats.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  set_socket_blocking|\\n  stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\\n    set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\\n    context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\\n    encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\\n    resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\\n    bucket_(new|prepend|append|make_writeable)\\n  )\\n)\\\\b\",\n          \"name\": \"support.function.streamsfuncs.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\\n  str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\\n  str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\\n  strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\\n  html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\\n  chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\\n  uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\\n  quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\\n)\\\\b\",\n          \"name\": \"support.function.string.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsybase_(\\n  set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\\n  unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\\n  affected_rows|result|get_last_message|min_(client|error|message|server)_severity\\n)\\\\b\",\n          \"name\": \"support.function.sybase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(taint|is_tainted|untaint)\\\\b\",\n          \"name\": \"support.function.taint.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\\n        (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\\n        get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\\n  ob_tidyhandler\\n)\\\\b\",\n          \"name\": \"support.function.tidy.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btoken_(name|get_all)\\\\b\",\n          \"name\": \"support.function.tokenizer.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ntrader_(\\n  stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\\n  ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\\n  cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\\n      hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\\n      counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\\n      identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\\n      upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\\n      piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\\n      ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\\n      gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\\n      belthold|breakaway)|\\n  ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\\n  plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\\n  linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\\n  aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\\n  minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\\n)\\\\b\",\n          \"name\": \"support.function.trader.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\\\b\",\n          \"name\": \"support.function.uopz.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\\\b\",\n          \"name\": \"support.function.url.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\\n  is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\\n  unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\\n)\\\\b\",\n          \"name\": \"support.function.var.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\\\b\",\n          \"name\": \"support.function.wddx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxhprof_(sample_)?(disable|enable)\\\\b\",\n          \"name\": \"support.function.xhprof.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n\\\\b\\n(\\n  utf8_(decode|encode)|\\n  xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\\n            (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\\n       parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\\n       get_(current_((column|line)_number|byte_index)|error_code))\\n)\\\\b\",\n          \"name\": \"support.function.xml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlrpc_(\\n  server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\\n  is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\\n)\\\\b\",\n          \"name\": \"support.function.xmlrpc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlwriter_(\\n  (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\\n  (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\\n  full_end_element|flush|\\n)\\\\b\",\n          \"name\": \"support.function.xmlwriter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  zlib_(decode|encode|get_coding_type)|readgzfile|\\n  gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\\n     write|rewind|read|getc|getss?)\\n)\\\\b\",\n          \"name\": \"support.function.zlib.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bis_int(eger)?\\\\b\",\n          \"name\": \"support.function.alias.php\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=switch\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bswitch\\\\b(?!\\\\s*\\\\(.*\\\\)\\\\s*:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.switch.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.switch-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.switch-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.switch-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"use-inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.use-as.php\"\n            }\n          },\n          \"end\": \"(?i)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.alias.php\"\n            }\n          }\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"var_basic\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*\\\\b\",\n          \"name\": \"variable.other.php\"\n        }\n      ]\n    },\n    \"var_global\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\\\b\",\n      \"name\": \"variable.other.global.php\"\n    },\n    \"var_global_safer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((GLOBALS|_(ENV|SERVER|SESSION)))\",\n      \"name\": \"variable.other.global.safer.php\"\n    },\n    \"var_language\": {\n      \"match\": \"(\\\\$)this\\\\b\",\n      \"name\": \"variable.language.this.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    \"variable-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"name\": \"constant.numeric.index.php\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.index.php\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"10\": {\n              \"name\": \"string.unquoted.index.php\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((\\\\$)(?<name>[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*))\\n(?:\\n  (->)(\\\\g<name>)\\n  |\\n  (\\\\[)(?:(\\\\d+)|((\\\\$)\\\\g<name>)|([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*))(\\\\])\\n)?\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)((\\\\${)(?<name>[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)(}))\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_language\"\n        },\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"include\": \"#var_basic\"\n        },\n        {\n          \"begin\": \"\\\\${(?=.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/c.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-c-syntax/blob/master/autogenerated/c.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-c-syntax/commit/34712a6106a4ffb0a04d2fa836fd28ff6c5849a4\",\n  \"name\": \"c\",\n  \"scopeName\": \"source.c\",\n  \"patterns\": [\n    {\n      \"include\": \"#preprocessor-rule-enabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-disabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-conditional\"\n    },\n    {\n      \"include\": \"#predefined_macros\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#switch_statement\"\n    },\n    {\n      \"include\": \"#anon_pattern_1\"\n    },\n    {\n      \"include\": \"#storage_types\"\n    },\n    {\n      \"include\": \"#anon_pattern_2\"\n    },\n    {\n      \"include\": \"#anon_pattern_3\"\n    },\n    {\n      \"include\": \"#anon_pattern_4\"\n    },\n    {\n      \"include\": \"#anon_pattern_5\"\n    },\n    {\n      \"include\": \"#anon_pattern_6\"\n    },\n    {\n      \"include\": \"#anon_pattern_7\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_1\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_2\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_3\"\n    },\n    {\n      \"include\": \"#pragma-mark\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_4\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_5\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_6\"\n    },\n    {\n      \"include\": \"#anon_pattern_8\"\n    },\n    {\n      \"include\": \"#anon_pattern_9\"\n    },\n    {\n      \"include\": \"#anon_pattern_10\"\n    },\n    {\n      \"include\": \"#anon_pattern_11\"\n    },\n    {\n      \"include\": \"#anon_pattern_12\"\n    },\n    {\n      \"include\": \"#anon_pattern_13\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_7\"\n    },\n    {\n      \"include\": \"#line_continuation_character\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_8\"\n    },\n    {\n      \"include\": \"#anon_pattern_range_9\"\n    },\n    {\n      \"include\": \"#anon_pattern_14\"\n    },\n    {\n      \"include\": \"#anon_pattern_15\"\n    }\n  ],\n  \"repository\": {\n    \"access-method\": {\n      \"name\": \"meta.function-call.member.c\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.object.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"punctuation.separator.dot-access.c\"\n            },\n            {\n              \"match\": \"->\",\n              \"name\": \"punctuation.separator.pointer-access.c\"\n            },\n            {\n              \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n              \"name\": \"variable.object.c\"\n            },\n            {\n              \"name\": \"everything.else.c\",\n              \"match\": \".+\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.member.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_1\": {\n      \"match\": \"\\\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\\\b\",\n      \"name\": \"keyword.control.c\"\n    },\n    \"anon_pattern_10\": {\n      \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n      \"name\": \"support.type.stdint.c\"\n    },\n    \"anon_pattern_11\": {\n      \"match\": \"\\\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\\\b\",\n      \"name\": \"support.constant.mac-classic.c\"\n    },\n    \"anon_pattern_12\": {\n      \"match\": \"(?x) \\\\b\\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\n\\\\b\",\n      \"name\": \"support.type.mac-classic.c\"\n    },\n    \"anon_pattern_13\": {\n      \"match\": \"\\\\b([A-Za-z0-9_]+_t)\\\\b\",\n      \"name\": \"support.type.posix-reserved.c\"\n    },\n    \"anon_pattern_14\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.c\"\n    },\n    \"anon_pattern_15\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.c\"\n    },\n    \"anon_pattern_2\": {\n      \"match\": \"typedef\",\n      \"name\": \"keyword.other.typedef.c\"\n    },\n    \"anon_pattern_3\": {\n      \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline)\\\\b\",\n      \"name\": \"storage.modifier.c\"\n    },\n    \"anon_pattern_4\": {\n      \"match\": \"\\\\bk[A-Z]\\\\w*\\\\b\",\n      \"name\": \"constant.other.variable.mac-classic.c\"\n    },\n    \"anon_pattern_5\": {\n      \"match\": \"\\\\bg[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.readwrite.global.mac-classic.c\"\n    },\n    \"anon_pattern_6\": {\n      \"match\": \"\\\\bs[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.readwrite.static.mac-classic.c\"\n    },\n    \"anon_pattern_7\": {\n      \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n      \"name\": \"constant.language.c\"\n    },\n    \"anon_pattern_8\": {\n      \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n      \"name\": \"support.type.sys-types.c\"\n    },\n    \"anon_pattern_9\": {\n      \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n      \"name\": \"support.type.pthread.c\"\n    },\n    \"anon_pattern_range_1\": {\n      \"name\": \"meta.preprocessor.macro.c\",\n      \"begin\": \"((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))((#)\\\\s*define\\\\b)\\\\s+((?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))(?:(\\\\()([^()\\\\\\\\]+)(\\\\)))?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.directive.define.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.parameters.begin.c\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[(,])\\\\s*((?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.preprocessor.c\"\n                }\n              }\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.c\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\\\\.\",\n              \"name\": \"ellipses.c punctuation.vararg-ellipses.variable.parameter.preprocessor.c\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.parameters.end.c\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"anon_pattern_range_2\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$3.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.diagnostic.c\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"name\": \"string.unquoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"anon_pattern_range_3\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.$3.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.include.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.include.c\"\n        },\n        {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.other.lt-gt.include.c\"\n        }\n      ]\n    },\n    \"anon_pattern_range_4\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.line.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_5\": {\n      \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.undef.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.c\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_6\": {\n      \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.pragma.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.pragma.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.c\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"anon_pattern_range_7\": {\n      \"name\": \"meta.function.c\",\n      \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|pthread_rwlock_t|atomic_uintptr_t|atomic_ptrdiff_t|atomic_uintmax_t|atomic_intmax_t|atomic_char32_t|atomic_intptr_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|uint_least8_t|int_least32_t|int_least16_t|pthread_key_t|uint_fast32_t|uint_fast64_t|uint_fast16_t|atomic_size_t|atomic_ushort|atomic_ullong|int_least64_t|atomic_ulong|int_least8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|memory_order|atomic_schar|atomic_uchar|atomic_short|atomic_llong|thread_local|atomic_bool|atomic_uint|atomic_long|int_fast8_t|suseconds_t|atomic_char|atomic_int|useconds_t|_Imaginary|uintmax_t|uintmax_t|in_addr_t|in_port_t|_Noreturn|blksize_t|pthread_t|uintptr_t|volatile|u_quad_t|blkcnt_t|intmax_t|intptr_t|_Complex|uint16_t|uint32_t|uint64_t|_Alignof|_Alignas|continue|unsigned|restrict|intmax_t|register|int64_t|qaddr_t|segsz_t|_Atomic|alignas|default|caddr_t|nlink_t|typedef|u_short|fixpt_t|clock_t|swblk_t|ssize_t|alignof|daddr_t|int16_t|int32_t|uint8_t|struct|mode_t|size_t|time_t|ushort|u_long|u_char|int8_t|double|signed|static|extern|inline|return|switch|xor_eq|and_eq|bitand|not_eq|sizeof|quad_t|uid_t|bitor|union|off_t|key_t|ino_t|compl|u_int|short|const|false|while|float|pid_t|break|_Bool|or_eq|div_t|dev_t|gid_t|id_t|long|case|goto|else|bool|auto|id_t|enum|uint|true|NULL|void|char|for|not|int|and|xor|do|or|if)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n      \"end\": \"(?!\\\\G)(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_range_8\": {\n      \"name\": \"meta.bracket.square.access.c\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.object.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.c\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"anon_pattern_range_9\": {\n      \"name\": \"storage.modifier.array.bracket.square.c\",\n      \"match\": \"\\\\[\\\\s*\\\\]\"\n    },\n    \"backslash_escapes\": {\n      \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n      \"name\": \"constant.character.escape.c\"\n    },\n    \"block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"name\": \"meta.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n          \"end\": \"\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.c\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.c\"\n            }\n          },\n          \"name\": \"comment.block.c\"\n        },\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n          \"end\": \"\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.c\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.c\"\n            }\n          },\n          \"name\": \"comment.block.c\"\n        }\n      ]\n    },\n    \"block_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional-block\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#c_function_call\"\n        },\n        {\n          \"name\": \"meta.initialization.c\",\n          \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.initialization.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens-block\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"c_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"c_function_call\": {\n      \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n      \"end\": \"(?<=\\\\))(?!\\\\w)\",\n      \"name\": \"meta.function-call.c\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"name\": \"meta.conditional.case.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)case(?!\\\\w))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.c\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.case.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"patterns\": [\n                {\n                  \"name\": \"comment.line.double-slash.documentation.c\",\n                  \"begin\": \"(?:^)(?>\\\\s*)(\\\\/\\\\/[!\\\\/]+)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.documentation.c\"\n                    }\n                  },\n                  \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.italic.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.bold.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.inline.raw.string.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"patterns\": [\n                            {\n                              \"match\": \"in|out\",\n                              \"name\": \"keyword.other.parameter.direction.$0.c\"\n                            }\n                          ]\n                        },\n                        \"3\": {\n                          \"name\": \"variable.parameter.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                      \"name\": \"storage.type.class.gtkdoc\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.documentation.c\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.italic.doxygen.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.bold.doxygen.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"name\": \"markup.inline.raw.string.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                          \"captures\": {\n                            \"1\": {\n                              \"name\": \"storage.type.class.doxygen.c\"\n                            },\n                            \"2\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"in|out\",\n                                  \"name\": \"keyword.other.parameter.direction.$0.c\"\n                                }\n                              ]\n                            },\n                            \"3\": {\n                              \"name\": \"variable.parameter.c\"\n                            }\n                          }\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                          \"name\": \"storage.type.class.gtkdoc\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.comment.end.documentation.c\"\n                    }\n                  },\n                  \"name\": \"comment.block.documentation.c\"\n                },\n                {\n                  \"name\": \"comment.block.documentation.c\",\n                  \"begin\": \"((?>\\\\s*)\\\\/\\\\*[!*]+(?:(?:\\\\n|$)|(?=\\\\s)))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.documentation.c\"\n                    }\n                  },\n                  \"end\": \"([!*]*\\\\*\\\\/)\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.end.documentation.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.italic.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.bold.doxygen.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))\\\\s+(\\\\S+)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"name\": \"markup.inline.raw.string.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?\\\\s*(?:in|out)\\\\s*)+)\\\\])?\\\\s+(\\\\b\\\\w+\\\\b)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.class.doxygen.c\"\n                        },\n                        \"2\": {\n                          \"patterns\": [\n                            {\n                              \"match\": \"in|out\",\n                              \"name\": \"keyword.other.parameter.direction.$0.c\"\n                            }\n                          ]\n                        },\n                        \"3\": {\n                          \"name\": \"variable.parameter.c\"\n                        }\n                      }\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                      \"name\": \"storage.type.class.doxygen.c\"\n                    },\n                    {\n                      \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                      \"name\": \"storage.type.class.gtkdoc\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"^\\\\/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*\\\\/$\\\\n?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"meta.toc-list.banner.block.c\"\n                    }\n                  },\n                  \"name\": \"comment.block.banner.c\"\n                },\n                {\n                  \"name\": \"comment.block.c\",\n                  \"begin\": \"(\\\\/\\\\*)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.begin.c\"\n                    }\n                  },\n                  \"end\": \"(\\\\*\\\\/)\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.end.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"^\\\\/\\\\/ =(\\\\s*.*?)\\\\s*=$\\\\n?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"meta.toc-list.banner.line.c\"\n                    }\n                  },\n                  \"name\": \"comment.line.banner.c\"\n                },\n                {\n                  \"begin\": \"((?:^[ \\\\t]+)?)(?=\\\\/\\\\/)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.whitespace.comment.leading.c\"\n                    }\n                  },\n                  \"end\": \"(?!\\\\G)\",\n                  \"patterns\": [\n                    {\n                      \"name\": \"comment.line.double-slash.c\",\n                      \"begin\": \"(\\\\/\\\\/)\",\n                      \"beginCaptures\": {\n                        \"1\": {\n                          \"name\": \"punctuation.definition.comment.c\"\n                        }\n                      },\n                      \"end\": \"(?=\\\\n)\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#line_continuation_character\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_comment\"\n            },\n            {\n              \"include\": \"#line_comment\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"name\": \"meta.conditional.case.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)default(?!\\\\w))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.c\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.colon.case.default.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        }\n      ]\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function-call-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"function-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"name\": \"meta.function.definition.parameters.c\",\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#probably_a_parameter\"\n            },\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"inline_comment\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n            },\n            \"2\": {\n              \"name\": \"comment.block.c\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.c\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.c\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.c\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line_continuation_character\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\)\\\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.escape.line-continuation.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"member_access\": {\n      \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*(\\\\b(?!(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|atomic_uintptr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintmax_t|pthread_mutex_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_attr_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_cond_t|pthread_once_t|uint_fast64_t|uint_fast16_t|atomic_size_t|uint_least8_t|int_least64_t|int_least32_t|int_least16_t|pthread_key_t|atomic_ullong|atomic_ushort|uint_fast32_t|atomic_schar|atomic_short|uint_fast8_t|int_fast64_t|int_fast32_t|int_fast16_t|atomic_ulong|atomic_llong|int_least8_t|atomic_uchar|memory_order|suseconds_t|int_fast8_t|atomic_bool|atomic_char|atomic_uint|atomic_long|atomic_int|useconds_t|_Imaginary|blksize_t|pthread_t|in_addr_t|uintptr_t|in_port_t|uintmax_t|uintmax_t|blkcnt_t|uint16_t|unsigned|_Complex|uint32_t|intptr_t|intmax_t|intmax_t|uint64_t|u_quad_t|int64_t|int32_t|ssize_t|caddr_t|clock_t|uint8_t|u_short|swblk_t|segsz_t|int16_t|fixpt_t|daddr_t|nlink_t|qaddr_t|size_t|time_t|mode_t|signed|quad_t|ushort|u_long|u_char|double|int8_t|ino_t|uid_t|pid_t|_Bool|float|dev_t|div_t|short|gid_t|off_t|u_int|key_t|id_t|uint|long|void|char|bool|id_t|int)\\\\b)[a-zA-Z_]\\\\w*\\\\b(?!\\\\())\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.access.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.object.access.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.dot-access.c\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.pointer-access.c\"\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.other.member.c\"\n        }\n      }\n    },\n    \"method_access\": {\n      \"contentName\": \"meta.function-call.member.c\",\n      \"begin\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*([a-zA-Z_]\\\\w*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.access.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.dot-access.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.pointer-access.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.object.access.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.dot-access.c\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.pointer-access.c\"\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.member.c\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call-innards\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?<!')([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.c\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.c\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.c\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?<!')([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.point.c\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.c\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.c\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.c\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.exponent.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?<!')([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.c\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.c\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?<!')([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.c\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.c\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.exponent.decimal.c\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.c\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![\\\\w$])(sizeof)(?![\\\\w$])\",\n          \"name\": \"keyword.operator.sizeof.c\"\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.c\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.c\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n          \"name\": \"keyword.operator.assignment.compound.c\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.c\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.c\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.c\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.c\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.c\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.c\"\n        },\n        {\n          \"match\": \"%|\\\\*|/|-|\\\\+\",\n          \"name\": \"keyword.operator.c\"\n        },\n        {\n          \"begin\": \"(\\\\?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parens\": {\n      \"name\": \"meta.parens.c\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"parens-block\": {\n      \"name\": \"meta.parens.block.c\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        },\n        {\n          \"match\": \"(?-mix:(?<!:):(?!:))\",\n          \"name\": \"punctuation.range-based.c\"\n        }\n      ]\n    },\n    \"pragma-mark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.pragma.c\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.pragma.pragma-mark.c\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.pragma-mark.c\"\n        }\n      },\n      \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section.c\"\n    },\n    \"predefined_macros\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.$1.c\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b__([A-Z_]+)__\\\\b\",\n          \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$1.c\"\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"invalid.illegal.stray-$1.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"invalid.illegal.stray-$1.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-rule-conditional-line\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        {\n          \"match\": \"\\\\bdefined\\\\b\",\n          \"name\": \"invalid.illegal.macro-name.c\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n          \"name\": \"constant.language.c\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-blocks\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.c\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.c\"\n            }\n          },\n          \"name\": \"meta.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-blocks\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"name\": \"meta.function.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor-rule-define-line-functions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.c\"\n            }\n          },\n          \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-functions\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor-rule-define-line-contents\"\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.c\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-elif-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-enabled-else-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-elif\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.c\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-elif\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n          \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.preprocessor.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.else-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.c\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.c\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.else-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.if-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-elif\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-elif-block\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n          \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-conditional-line\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"\\\\n\",\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.c\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.c\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.c\"\n                }\n              },\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.c\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-else\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-else-block\": {\n      \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.preprocessor.c\"\n        },\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.c\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.c\"\n        }\n      },\n      \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"probably_a_parameter\": {\n      \"match\": \"(?<=(?:[a-zA-Z_0-9] |[&*>\\\\]\\\\)]))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:,|\\\\)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.probably.c\"\n        }\n      }\n    },\n    \"static_assert\": {\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.c\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.static_assert.message.c\",\n          \"begin\": \"(,)\\\\s*(?=(?:L|u8|u|U\\\\s*\\\\\\\")?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.c\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?-mix:(?<!\\\\w)(?:unsigned|signed|double|_Bool|short|float|long|void|char|bool|int)(?!\\\\w))\",\n          \"name\": \"storage.type.built-in.primitive.c\"\n        },\n        {\n          \"match\": \"(?-mix:(?<!\\\\w)(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|pthread_rwlockattr_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_uint_fast16_t|atomic_int_least64_t|atomic_int_least32_t|atomic_int_least16_t|atomic_uint_least8_t|atomic_uint_fast8_t|atomic_int_least8_t|atomic_int_fast16_t|pthread_mutexattr_t|atomic_int_fast32_t|atomic_int_fast64_t|atomic_int_fast8_t|pthread_condattr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintptr_t|atomic_uintmax_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|int_least32_t|pthread_key_t|int_least16_t|int_least64_t|uint_least8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|atomic_ushort|atomic_ullong|atomic_size_t|int_fast16_t|int_fast64_t|uint_fast8_t|atomic_short|atomic_uchar|atomic_schar|int_least8_t|memory_order|atomic_llong|atomic_ulong|int_fast32_t|atomic_long|atomic_uint|atomic_char|int_fast8_t|suseconds_t|atomic_bool|atomic_int|_Imaginary|useconds_t|in_port_t|uintmax_t|uintmax_t|pthread_t|blksize_t|in_addr_t|uintptr_t|blkcnt_t|uint16_t|uint32_t|uint64_t|u_quad_t|_Complex|intptr_t|intmax_t|intmax_t|segsz_t|u_short|nlink_t|uint8_t|int64_t|int32_t|int16_t|fixpt_t|daddr_t|caddr_t|qaddr_t|ssize_t|clock_t|swblk_t|u_long|mode_t|int8_t|time_t|ushort|u_char|quad_t|size_t|pid_t|gid_t|uid_t|dev_t|div_t|off_t|u_int|key_t|ino_t|uint|id_t|id_t)(?!\\\\w))\",\n          \"name\": \"storage.type.built-in.c\"\n        },\n        {\n          \"match\": \"(?-mix:\\\\b(enum|struct|union)\\\\b)\",\n          \"name\": \"storage.type.$1.c\"\n        },\n        {\n          \"name\": \"meta.asm.c\",\n          \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)\\\\s*((?:volatile)?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.asm.c\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.c\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:^)((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))(?:\\\\n|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.c\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.c\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.c\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.c\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"name\": \"string.quoted.double.c\",\n                  \"contentName\": \"meta.embedded.assembly.c\",\n                  \"begin\": \"(R?)(\\\")\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"meta.encoding.c\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.string.begin.assembly.c\"\n                    }\n                  },\n                  \"end\": \"(\\\")\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.string.end.assembly.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.asm\"\n                    },\n                    {\n                      \"include\": \"source.x86\"\n                    },\n                    {\n                      \"include\": \"source.x86_64\"\n                    },\n                    {\n                      \"include\": \"source.arm\"\n                    },\n                    {\n                      \"include\": \"#backslash_escapes\"\n                    },\n                    {\n                      \"include\": \"#string_escaped_char\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.c\"\n                    }\n                  },\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.c\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\[((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))([a-zA-Z_]\\\\w*)((?:(?:(?>\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+?|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z)))\\\\]\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.c\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.c\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"variable.other.asm.label.c\"\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.c\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.c\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \":\",\n                  \"name\": \"punctuation.separator.delimiter.colon.assembly.c\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape.c\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.c\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder.c\"\n        },\n        {\n          \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.placeholder.c\"\n            }\n          }\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_placeholder\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.single.c\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch_conditional_parentheses\": {\n      \"name\": \"meta.conditional.switch.c\",\n      \"begin\": \"((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.c\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.c\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#c_conditional_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"name\": \"meta.block.switch.c\",\n      \"begin\": \"(((?>(?:(?:(?>(?<!\\\\s)\\\\s+)|(\\\\/\\\\*)((?>(?:[^\\\\*]|(?>\\\\*+)[^\\\\/])*)((?>\\\\*+)\\\\/)))+|(?:(?:(?:(?:\\\\b|(?<=\\\\W))|(?=\\\\W))|\\\\A)|\\\\Z))))((?<!\\\\w)switch(?!\\\\w)))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.head.switch.c\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.c punctuation.definition.comment.begin.c\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.c\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.c punctuation.definition.comment.end.c\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.c\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"keyword.control.switch.c\"\n        }\n      },\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.head.switch.c\",\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"((?:\\\\{|<%|\\\\?\\\\?<|(?=;)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.body.switch.c\",\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"(\\\\}|%>|\\\\?\\\\?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.c\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.tail.switch.c\",\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s\\\\n]*\",\n          \"end\": \"[\\\\s\\\\n]*(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"vararg_ellipses\": {\n      \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n      \"name\": \"punctuation.vararg-ellipses.c\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cadence.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.cadence\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#expressions\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#code-block\"\n    },\n    {\n      \"include\": \"#composite\"\n    },\n    {\n      \"include\": \"#event\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.cadence\"\n            }\n          },\n          \"match\": \"\\\\A^(#!).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.cadence\"\n        },\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.cadence\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.cadence\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*:\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.cadence\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.cadence\"\n            }\n          },\n          \"name\": \"comment.block.documentation.playground.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.cadence\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.cadence\"\n            }\n          },\n          \"name\": \"comment.block.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\*/\",\n          \"name\": \"invalid.illegal.unexpected-end-of-block-comment.cadence\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.cadence\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cadence\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.triple-slash.documentation.cadence\"\n            },\n            {\n              \"begin\": \"//:\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cadence\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.documentation.cadence\"\n            },\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cadence\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.cadence\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"nested\": {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        }\n      }\n    },\n    \"literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\bnil\\\\b\",\n          \"name\": \"constant.language.nil.cadence\"\n        }\n      ],\n      \"repository\": {\n        \"boolean\": {\n          \"match\": \"\\\\b(true|false)\\\\b\",\n          \"name\": \"constant.language.boolean.cadence\"\n        },\n        \"numeric\": {\n          \"patterns\": [\n            {\n              \"include\": \"#binary\"\n            },\n            {\n              \"include\": \"#octal\"\n            },\n            {\n              \"include\": \"#decimal\"\n            },\n            {\n              \"include\": \"#hexadecimal\"\n            }\n          ],\n          \"repository\": {\n            \"binary\": {\n              \"comment\": \"\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)0b[01]([_01]*[01])?\\\\b\",\n              \"name\": \"constant.numeric.integer.binary.cadence\"\n            },\n            \"octal\": {\n              \"comment\": \"\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)0o[0-7]([_0-7]*[0-7])?\\\\b\",\n              \"name\": \"constant.numeric.integer.octal.cadence\"\n            },\n            \"decimal\": {\n              \"comment\": \"\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)[0-9]([_0-9]*[0-9])?\\\\b\",\n              \"name\": \"constant.numeric.integer.decimal.cadence\"\n            },\n            \"hexadecimal\": {\n              \"comment\": \"\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)0x[0-9A-Fa-f]([_0-9A-Fa-f]*[0-9A-Fa-f])?\\\\b\",\n              \"name\": \"constant.numeric.integer.hexadecimal.cadence\"\n            }\n          }\n        },\n        \"string\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.cadence\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.cadence\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.cadence\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.cadence\"\n                },\n                {\n                  \"include\": \"#string-guts\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"string-guts\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[0\\\\\\\\tnr\\\"']\",\n                  \"name\": \"constant.character.escape.cadence\"\n                },\n                {\n                  \"match\": \"\\\\\\\\u\\\\{[0-9a-fA-F]{1,8}\\\\}\",\n                  \"name\": \"constant.character.escape.unicode.cadence\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\-\",\n          \"name\": \"keyword.operator.arithmetic.unary.cadence\"\n        },\n        {\n          \"match\": \"!\",\n          \"name\": \"keyword.operator.logical.not.cadence\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.cadence\"\n        },\n        {\n          \"match\": \"<-\",\n          \"name\": \"keyword.operator.move.cadence\"\n        },\n        {\n          \"match\": \"<-!\",\n          \"name\": \"keyword.operator.force-move.cadence\"\n        },\n        {\n          \"match\": \"\\\\+|\\\\-|\\\\*|/\",\n          \"name\": \"keyword.operator.arithmetic.cadence\"\n        },\n        {\n          \"match\": \"%\",\n          \"name\": \"keyword.operator.arithmetic.remainder.cadence\"\n        },\n        {\n          \"match\": \"==|!=|>|<|>=|<=\",\n          \"name\": \"keyword.operator.comparison.cadence\"\n        },\n        {\n          \"match\": \"\\\\?\\\\?\",\n          \"name\": \"keyword.operator.coalescing.cadence\"\n        },\n        {\n          \"match\": \"&&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.cadence\"\n        },\n        {\n          \"match\": \"[?!]\",\n          \"name\": \"keyword.operator.type.optional.cadence\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:if|else|switch|case|default)\\\\b\",\n          \"name\": \"keyword.control.branch.cadence\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:return|continue|break)\\\\b\",\n          \"name\": \"keyword.control.transfer.cadence\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:while|for|in)\\\\b\",\n          \"name\": \"keyword.control.loop.cadence\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:pre|post|prepare|execute|create|destroy|emit)\\\\b\",\n          \"name\": \"keyword.other.cadence\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:private|pub(?:\\\\(set\\\\))?|access\\\\((?:self|contract|account|all)\\\\))\\\\b\",\n          \"name\": \"keyword.other.declaration-specifier.accessibility.cadence\"\n        },\n        {\n          \"match\": \"\\\\b(?:init|destroy)\\\\b\",\n          \"name\": \"storage.type.function.cadence\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:import|from)\\\\b\",\n          \"name\": \"keyword.control.import.cadence\"\n        }\n      ]\n    },\n    \"code-block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.cadence\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.cadence\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"\\\\b(fun)\\\\b\\\\s+([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.cadence\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cadence\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|$\",\n      \"name\": \"meta.definition.function.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#parameter-clause\"\n        },\n        {\n          \"include\": \"#function-result\"\n        },\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.begin.cadence\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.end.cadence\"\n            }\n          },\n          \"name\": \"meta.definition.function.body.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"initializer\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(init)\\\\s*(?=\\\\(|<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.cadence\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|$\",\n      \"name\": \"meta.definition.function.initializer.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#parameter-clause\"\n        },\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.begin.cadence\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.end.cadence\"\n            }\n          },\n          \"name\": \"meta.definition.function.body.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-result\": {\n      \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(:)(?![/=\\\\-+!*%<>&|\\\\^~.])\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.function-result.cadence\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(?=\\\\{|;)|$\",\n      \"name\": \"meta.function-result.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#function-call-expression\"\n        },\n        {\n          \"include\": \"#literals\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#language-variables\"\n        }\n      ]\n    },\n    \"language-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(self)\\\\b\",\n          \"name\": \"variable.language.cadence\"\n        }\n      ]\n    },\n    \"function-call-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?!(?:set|init))([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.cadence\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.arguments.begin.cadence\"\n            }\n          },\n          \"comment\": \"foo(args) -- a call whose callee is a highlightable name\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.cadence\"\n            }\n          },\n          \"name\": \"meta.function-call.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-element-list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-element-list\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.cadence\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.argument-label.cadence\"\n            }\n          },\n          \"comment\": \"an element with a label\",\n          \"end\": \"(?=[,)\\\\]])\",\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?![,)\\\\]])(?=\\\\S)\",\n          \"comment\": \"an element without a label (i.e. anything else)\",\n          \"end\": \"(?=[,)\\\\]])\",\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var-let-declaration\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#initializer\"\n        }\n      ]\n    },\n    \"var-let-declaration\": {\n      \"begin\": \"\\\\b(var|let)\\\\b\\\\s+([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.$1.cadence\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.$1.cadence\"\n        }\n      },\n      \"end\": \"=|<-|<-!|$\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\",\n          \"name\": \"storage.type.cadence\"\n        }\n      ]\n    },\n    \"parameter-clause\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.begin.cadence\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.cadence\"\n        }\n      },\n      \"name\": \"meta.parameter-clause.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-list\"\n        }\n      ]\n    },\n    \"parameter-list\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\\\\s+([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)(?=\\\\s*:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.cadence\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.cadence\"\n            }\n          },\n          \"comment\": \"External parameter labels are considered part of the function name\"\n        },\n        {\n          \"match\": \"(([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*))(?=\\\\s*:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function.cadence\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.cadence\"\n            }\n          },\n          \"comment\": \"If no external label is given, the name is both the external label and the internal variable name\"\n        },\n        {\n          \"begin\": \":\\\\s*(?!\\\\s)\",\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"invalid.illegal.extra-colon-in-parameter-list.cadence\"\n            }\n          ]\n        }\n      ]\n    },\n    \"event\": {\n      \"begin\": \"\\\\b(event)\\\\b\\\\s+([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.event.cadence\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.event.cadence\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|$\",\n      \"name\": \"meta.definition.type.event.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#parameter-clause\"\n        }\n      ]\n    },\n    \"composite\": {\n      \"begin\": \"\\\\b((?:(?:struct|resource|contract)(?:\\\\s+interface)?)|transaction|enum)\\\\s+([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.$1.cadence\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.$1.cadence\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"name\": \"meta.definition.type.composite.cadence\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#conformance-clause\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.type.begin.cadence\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.type.end.cadence\"\n            }\n          },\n          \"name\": \"meta.definition.type.body.cadence\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"conformance-clause\": {\n      \"begin\": \"(:)(?=\\\\s*\\\\{)|(:)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.empty-conformance-clause.cadence\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.conformance-clause.cadence\"\n        }\n      },\n      \"end\": \"(?!\\\\G)$|(?=[={}])\",\n      \"name\": \"meta.conformance-clause.cadence\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\",\n          \"end\": \"(?!\\\\G)$|(?=[={}])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"name\": \"cadence\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/clarity.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"clarity\",\n  \"scopeName\": \"source.clar\",\n  \"uuid\": \"f9e9871d-2ea6-4be0-afd2-fc382d704716\",\n  \"patterns\": [\n    {\n      \"include\": \"#expression\"\n    },\n    {\n      \"include\": \"#define-constant\"\n    },\n    {\n      \"include\": \"#define-data-var\"\n    },\n    {\n      \"include\": \"#define-map\"\n    },\n    {\n      \"include\": \"#define-function\"\n    },\n    {\n      \"include\": \"#define-fungible-token\"\n    },\n    {\n      \"include\": \"#define-non-fungible-token\"\n    },\n    {\n      \"include\": \"#define-trait\"\n    },\n    {\n      \"include\": \"#use-trait\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"name\": \"comment.line.semicolon.clarity\",\n      \"match\": \"(?x) (?<=^|[()\\\\[\\\\]{}\\\",'`;\\\\s]) (;) .* $\"\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#let-func\"\n        },\n        {\n          \"include\": \"#built-in-func\"\n        },\n        {\n          \"include\": \"#get-set-func\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"name\": \"constant.language.clarity\",\n      \"match\": \"\\\\b(?:block-height|burn-block-height|contract-caller|is-in-regtest|stx-liquid-supply|tx-sender)\\\\b\"\n    },\n    \"define-function\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-(?:public|private|read-only)) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-function.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-function.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-function.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-function\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"begin\": \"(?x) (\\\\() \\\\s* ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s*\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.function-signature.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.function-signature.end.clarity\"\n            }\n          },\n          \"name\": \"meta.define-function-signature\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?x) (\\\\() \\\\s* ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n              \"end\": \"(\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.function-argument.start.clarity\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.clarity\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.function-argument.end.clarity\"\n                }\n              },\n              \"name\": \"meta.function-argument\",\n              \"patterns\": [\n                {\n                  \"include\": \"#data-type\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"define-fungible-token\": {\n      \"match\": \"(?x) (\\\\() \\\\s* (define-fungible-token) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) (?:\\\\s+(u\\\\d+))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-fungible-token.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-fungible-token.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.fungible-token-name.clarity variable.other.clarity\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.fungible-token-total-supply.clarity\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.define-fungible-token.end.clarity\"\n        }\n      }\n    },\n    \"define-non-fungible-token\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-non-fungible-token) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-non-fungible-token.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-non-fungible-token.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.non-fungible-token-name.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-non-fungible-token.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-non-fungible-token\",\n      \"patterns\": [\n        {\n          \"include\": \"#data-type\"\n        }\n      ]\n    },\n    \"define-trait\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-trait) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-trait.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-trait.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.trait-name.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-trait.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-trait\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x) (\\\\() \\\\s*\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.define-trait-body.start.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.define-trait-body.end.clarity\"\n            }\n          },\n          \"name\": \"meta.define-trait-body\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"begin\": \"(?x) (\\\\() \\\\s* ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]+\\\\??) \\\\s+\",\n              \"end\": \"(\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.trait-function.start.clarity\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.trait-function-name.clarity variable.other.clarity\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.trait-function.end.clarity\"\n                }\n              },\n              \"name\": \"meta.trait-function\",\n              \"patterns\": [\n                {\n                  \"include\": \"#data-type\"\n                },\n                {\n                  \"begin\": \"(?x) (\\\\() \\\\s*\",\n                  \"end\": \"(\\\\))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.trait-function-args.start.clarity\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.trait-function-args.end.clarity\"\n                    }\n                  },\n                  \"name\": \"meta.trait-function-args\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#data-type\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"use-trait\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (use-trait) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.use-trait.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.use-trait.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.trait-alias.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.use-trait.end.clarity\"\n        }\n      },\n      \"name\": \"meta.use-trait\",\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        }\n      ]\n    },\n    \"define-constant\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-constant) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-constant.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-constant.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.constant-name.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-constant.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-constant\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"define-data-var\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-data-var) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-data-var.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-data-var.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.data-var-name.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-data-var.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-data-var\",\n      \"patterns\": [\n        {\n          \"include\": \"#data-type\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"define-map\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (define-map) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-map.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.define-map.clarity\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.map-name.clarity variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.define-map.end.clarity\"\n        }\n      },\n      \"name\": \"meta.define-map\",\n      \"patterns\": [\n        {\n          \"include\": \"#data-type\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-literal\"\n        },\n        {\n          \"include\": \"#bool-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#tuple-literal\"\n        },\n        {\n          \"include\": \"#principal-literal\"\n        },\n        {\n          \"include\": \"#list-literal\"\n        },\n        {\n          \"include\": \"#optional-literal\"\n        },\n        {\n          \"include\": \"#response-literal\"\n        }\n      ],\n      \"repository\": {\n        \"number-literal\": {\n          \"patterns\": [\n            {\n              \"comment\": \"unsigned integers\",\n              \"name\": \"constant.numeric.uint.clarity\",\n              \"match\": \"\\\\bu\\\\d+\\\\b\"\n            },\n            {\n              \"comment\": \"signed integers\",\n              \"name\": \"constant.numeric.int.clarity\",\n              \"match\": \"\\\\b\\\\d+\\\\b\"\n            },\n            {\n              \"comment\": \"hexadecimals\",\n              \"name\": \"constant.numeric.hex.clarity\",\n              \"match\": \"\\\\b0x[0-9a-f]*\\\\b\"\n            }\n          ]\n        },\n        \"bool-literal\": {\n          \"name\": \"constant.language.bool.clarity\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        },\n        \"string-literal\": {\n          \"patterns\": [\n            {\n              \"name\": \"string.quoted.double.clarity\",\n              \"begin\": \"(u?)(\\\")\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string.quoted.utf8.clarity\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.clarity\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.clarity\"\n                }\n              }\n            }\n          ]\n        },\n        \"tuple-literal\": {\n          \"begin\": \"(\\\\{)\",\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.tuple.start.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.tuple.end.clarity\"\n            }\n          },\n          \"name\": \"meta.tuple\",\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.tag.tuple-key.clarity\",\n              \"match\": \"([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*)(?=:)\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#user-func\"\n            }\n          ]\n        },\n        \"principal-literal\": {\n          \"name\": \"constant.other.principal.clarity\",\n          \"match\": \"(?x)  \\\\'[0-9A-Z]{28,41}(:?\\\\.[a-zA-Z][a-zA-Z0-9\\\\-]+){0,2} | (\\\\.[a-zA-Z][a-zA-Z0-9\\\\-]*){1,2} (?=[\\\\s(){},]|$)\"\n        },\n        \"list-literal\": {\n          \"begin\": \"(?x) (\\\\() \\\\s* (list) \\\\s+\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.list.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.list.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"names\": \"punctuation.list.end.clarity\"\n            }\n          },\n          \"name\": \"meta.list\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#user-func\"\n            }\n          ]\n        },\n        \"optional-literal\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(none)\\\\b\",\n              \"name\": \"constant.language.none.clarity\"\n            },\n            {\n              \"begin\": \"(?x) (\\\\() \\\\s* (some) \\\\s+\",\n              \"end\": \"(\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.some.start.clarity\"\n                },\n                \"2\": {\n                  \"name\": \"constant.language.some.clarity\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.some.end.clarity\"\n                }\n              },\n              \"name\": \"meta.some\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            }\n          ]\n        },\n        \"response-literal\": {\n          \"begin\": \"(?x) (\\\\() \\\\s* (ok|err) \\\\s+\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.response.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.ok-err.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.response.end.clarity\"\n            }\n          },\n          \"name\": \"meta.response\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#user-func\"\n            }\n          ]\n        }\n      }\n    },\n    \"data-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"comment\": \"numerics\",\n          \"name\": \"entity.name.type.numeric.clarity\",\n          \"match\": \"\\\\b(uint|int)\\\\b\"\n        },\n        {\n          \"comment\": \"principal\",\n          \"name\": \"entity.name.type.principal.clarity\",\n          \"match\": \"\\\\b(principal)\\\\b\"\n        },\n        {\n          \"comment\": \"bool\",\n          \"name\": \"entity.name.type.bool.clarity\",\n          \"match\": \"\\\\b(bool)\\\\b\"\n        },\n        {\n          \"match\": \"(?x) (\\\\() \\\\s* (?:(string-ascii|string-utf8)\\\\s+(\\\\d+)) \\\\s* (\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.string-def.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.string.clarity\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.string-len.clarity\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.string-def.end.clarity\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (\\\\() \\\\s* (buff)\\\\s+(\\\\d+)\\\\s* (\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.buff-def.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.buff.clarity\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.buf-len.clarity\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.buff-def.end.clarity\"\n            }\n          }\n        },\n        {\n          \"comment\": \"optional\",\n          \"begin\": \"(?x) (\\\\() \\\\s* (optional)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.optional-def.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.modifier\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.optional-def.end.clarity\"\n            }\n          },\n          \"name\": \"meta.optional-def\",\n          \"patterns\": [\n            {\n              \"include\": \"#data-type\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"response\",\n          \"begin\": \"(?x) (\\\\() \\\\s* (response)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.response-def.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.modifier\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.response-def.end.clarity\"\n            }\n          },\n          \"name\": \"meta.response-def\",\n          \"patterns\": [\n            {\n              \"include\": \"#data-type\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"list\",\n          \"begin\": \"(?x) (\\\\() \\\\s* (list) \\\\s+ (\\\\d+) \\\\s+\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.list-def.start.clarity\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.list.clarity\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.list-len.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.list-def.end.clarity\"\n            }\n          },\n          \"name\": \"meta.list-def\",\n          \"patterns\": [\n            {\n              \"include\": \"#data-type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.tuple-def.start.clarity\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.tuple-def.end.clarity\"\n            }\n          },\n          \"name\": \"meta.tuple-def\",\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.tag.tuple-data-type-key.clarity\",\n              \"match\": \"([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*)(?=:)\"\n            },\n            {\n              \"include\": \"#data-type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"built-in-func\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (\\\\-|\\\\+|<\\\\=|>\\\\=|<|>|\\\\*|/|and|append|as-contract|as-max-len\\\\?|asserts!|at-block|begin|concat|contract-call\\\\?|contract-of|default-to|element-at|filter|fold|ft-burn\\\\?|ft-get-balance|ft-get-supply|ft-mint\\\\?|ft-transfer\\\\?|get-block-info\\\\?|hash160|if|impl-trait|index-of|is-eq|is-err|is-none|is-ok|is-some|keccak256|len|log2|map|match|merge|mod|nft-burn\\\\?|nft-get-owner\\\\?|nft-mint\\\\?|nft-transfer\\\\?|not|or|pow|principal-of\\\\?|print|secp256k1-recover\\\\?|secp256k1-verify|sha256|sha512|sha512/256|sqrti|stx-burn\\\\?|stx-get-balance|stx-transfer\\\\?|to-int|to-uint|try!|unwrap-err-panic|unwrap-err!|unwrap-panic|unwrap!|xor) \\\\s+\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.built-in-function.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.built-in-function.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.built-in-function.end.clarity\"\n        }\n      },\n      \"name\": \"meta.built-in-function\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#user-func\"\n        }\n      ]\n    },\n    \"get-set-func\": {\n      \"name\": \"meta.get-set-func\",\n      \"begin\": \"(?x) (\\\\() \\\\s* (var-get|var-set|map-get\\\\?|map-set|map-insert|map-delete|get) \\\\s+ ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s*\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.get-set-func.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.clarity\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.get-set-func.end.clarity\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"let-func\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (let) \\\\s*\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.let-function.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"keyword.declaration.let-function.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.let-function.end.clarity\"\n        }\n      },\n      \"name\": \"meta.let-function\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#user-func\"\n        },\n        {\n          \"begin\": \"(?x) (\\\\() \\\\s*\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.let-var.start.clarity\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.let-var.end.clarity\"\n            }\n          },\n          \"name\": \"meta.let-var\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?x) (\\\\() ([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*) \\\\s+\",\n              \"end\": \"(\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.let-local-var.start.clarity\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.let-local-var-name.clarity variable.parameter.clarity\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.let-local-var.end.clarity\"\n                }\n              },\n              \"name\": \"meta.let-local-var\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#user-func\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"user-func\": {\n      \"begin\": \"(?x) (\\\\() \\\\s* (([a-zA-Z][a-zA-Z0-9_\\\\-\\\\!\\\\?]*)) \\\\s*\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.user-function.start.clarity\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.clarity\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.user-function.end.clarity\"\n        }\n      },\n      \"name\": \"meta.user-function\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/clojure.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-clojure/blob/master/grammars/clojure.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-clojure/commit/45bdb881501d0b8f8b707ca1d3fcc8b4b99fca03\",\n  \"name\": \"clojure\",\n  \"scopeName\": \"source.clojure\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#shebang-comment\"\n    },\n    {\n      \"include\": \"#quoted-sexp\"\n    },\n    {\n      \"include\": \"#sexp\"\n    },\n    {\n      \"include\": \"#keyfn\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#vector\"\n    },\n    {\n      \"include\": \"#set\"\n    },\n    {\n      \"include\": \"#map\"\n    },\n    {\n      \"include\": \"#regexp\"\n    },\n    {\n      \"include\": \"#var\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#dynamic-variables\"\n    },\n    {\n      \"include\": \"#metadata\"\n    },\n    {\n      \"include\": \"#namespace-symbol\"\n    },\n    {\n      \"include\": \"#symbol\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"(?<!\\\\\\\\);\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.clojure\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.semicolon.clojure\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(nil)(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"constant.language.nil.clojure\"\n        },\n        {\n          \"match\": \"(true|false)\",\n          \"name\": \"constant.language.boolean.clojure\"\n        },\n        {\n          \"match\": \"(##(?:Inf|-Inf|NaN))\",\n          \"name\": \"constant.numeric.symbol.clojure\"\n        },\n        {\n          \"match\": \"([-+]?\\\\d+/\\\\d+)\",\n          \"name\": \"constant.numeric.ratio.clojure\"\n        },\n        {\n          \"match\": \"([-+]?(?:(?:3[0-6])|(?:[12]\\\\d)|[2-9])[rR][0-9A-Za-z]+N?)\",\n          \"name\": \"constant.numeric.arbitrary-radix.clojure\"\n        },\n        {\n          \"match\": \"([-+]?0[xX][0-9a-fA-F]+N?)\",\n          \"name\": \"constant.numeric.hexadecimal.clojure\"\n        },\n        {\n          \"match\": \"([-+]?0[0-7]+N?)\",\n          \"name\": \"constant.numeric.octal.clojure\"\n        },\n        {\n          \"match\": \"([-+]?[0-9]+(?:(\\\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)\",\n          \"name\": \"constant.numeric.double.clojure\"\n        },\n        {\n          \"match\": \"([-+]?\\\\d+N?)\",\n          \"name\": \"constant.numeric.long.clojure\"\n        },\n        {\n          \"include\": \"#keyword\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{)):[\\\\w\\\\#\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\/\\\\!\\\\?\\\\*]+(?=(\\\\s|\\\\)|\\\\]|\\\\}|\\\\,))\",\n      \"name\": \"constant.keyword.clojure\"\n    },\n    \"keyfn\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{))(if(-[-\\\\p{Ll}\\\\?]*)?|when(-[-\\\\p{Ll}]*)?|for(-[-\\\\p{Ll}]*)?|cond|do|let(-[-\\\\p{Ll}\\\\?]*)?|binding|loop|recur|fn|throw[\\\\p{Ll}\\\\-]*|try|catch|finally|([\\\\p{Ll}]*case))(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"storage.control.clojure\"\n        },\n        {\n          \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\\\p{Ll}\\\\-]*))(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n          \"name\": \"keyword.control.clojure\"\n        }\n      ]\n    },\n    \"dynamic-variables\": {\n      \"match\": \"\\\\*[\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\d]+\\\\*\",\n      \"name\": \"meta.symbol.dynamic.clojure\"\n    },\n    \"map\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.map.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.map.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.map.end.clojure\"\n        }\n      },\n      \"name\": \"meta.map.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"metadata\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\^\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.metadata.map.begin.clojure\"\n            }\n          },\n          \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.metadata.map.end.trailing.clojure\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.metadata.map.end.clojure\"\n            }\n          },\n          \"name\": \"meta.metadata.map.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\^)\",\n          \"end\": \"(\\\\s)\",\n          \"name\": \"meta.metadata.simple.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"quoted-sexp\": {\n      \"begin\": \"(['``]\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\))$|(\\\\)(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.expression.end.clojure\"\n        }\n      },\n      \"name\": \"meta.quoted-expression.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"begin\": \"#\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regexp.begin.clojure\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.regexp.end.clojure\"\n        }\n      },\n      \"name\": \"string.regexp.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"#regexp_escaped_char\"\n        }\n      ]\n    },\n    \"regexp_escaped_char\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.clojure\"\n    },\n    \"set\": {\n      \"begin\": \"(\\\\#\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.set.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\}(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.set.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.set.end.clojure\"\n        }\n      },\n      \"name\": \"meta.set.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"sexp\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\))$|(\\\\)(?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.expression.end.trailing.clojure\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.expression.end.clojure\"\n        }\n      },\n      \"name\": \"meta.expression.clojure\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(ns|declare|def[\\\\w\\\\d._:+=><!?*-]*|[\\\\w._:+=><!?*-][\\\\w\\\\d._:+=><!?*-]*/def[\\\\w\\\\d._:+=><!?*-]*)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.clojure\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.definition.global.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"#metadata\"\n            },\n            {\n              \"include\": \"#dynamic-variables\"\n            },\n            {\n              \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)\",\n              \"name\": \"entity.global.clojure\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keyfn\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#vector\"\n        },\n        {\n          \"include\": \"#map\"\n        },\n        {\n          \"include\": \"#set\"\n        },\n        {\n          \"include\": \"#sexp\"\n        },\n        {\n          \"match\": \"(?<=\\\\()(.+?)(?=\\\\s|\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.clojure\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"shebang-comment\": {\n      \"begin\": \"^(#!)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.shebang.clojure\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.shebang.clojure\"\n    },\n    \"string\": {\n      \"begin\": \"(?<!\\\\\\\\)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.clojure\"\n        }\n      },\n      \"name\": \"string.quoted.double.clojure\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.clojure\"\n        }\n      ]\n    },\n    \"namespace-symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)/\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.symbol.namespace.clojure\"\n            }\n          }\n        }\n      ]\n    },\n    \"symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\p{L}\\\\.\\\\-\\\\_\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*][\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\!\\\\?\\\\*\\\\d]*)\",\n          \"name\": \"meta.symbol.clojure\"\n        }\n      ]\n    },\n    \"var\": {\n      \"match\": \"(?<=(\\\\s|\\\\(|\\\\[|\\\\{)\\\\#)'[\\\\w\\\\.\\\\-\\\\_\\\\:\\\\+\\\\=\\\\>\\\\<\\\\/\\\\!\\\\?\\\\*]+(?=(\\\\s|\\\\)|\\\\]|\\\\}))\",\n      \"name\": \"meta.var.clojure\"\n    },\n    \"vector\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.vector.begin.clojure\"\n        }\n      },\n      \"end\": \"(\\\\](?=[\\\\}\\\\]\\\\)\\\\s]*(?:;|$)))|(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.vector.end.trailing.clojure\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.vector.end.clojure\"\n        }\n      },\n      \"name\": \"meta.vector.clojure\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cmake.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"cmake\", \"CMakeLists.txt\"],\n  \"name\": \"cmake\",\n  \"patterns\": [\n    {\n      \"comment\": \"Variables That Describe the System\",\n      \"match\": \"\\\\b(?i:APPLE|BORLAND|(CMAKE_)?(CL_64|COMPILER_2005|HOST_APPLE|HOST_SYSTEM|HOST_SYSTEM_NAME|HOST_SYSTEM_PROCESSOR|HOST_SYSTEM_VERSION|HOST_UNIX|HOST_WIN32|LIBRARY_ARCHITECTURE|LIBRARY_ARCHITECTURE_REGEX|OBJECT_PATH_MAX|SYSTEM|SYSTEM_NAME|SYSTEM_PROCESSOR|SYSTEM_VERSION)|CYGWIN|MSVC|MSVC80|MSVC_IDE|MSVC_VERSION|UNIX|WIN32|XCODE_VERSION|MSVC60|MSVC70|MSVC90|MSVC71)\\\\b\",\n      \"name\": \"constant.source.cmake\"\n    },\n    {\n      \"comment\": \"cmakeOperators\",\n      \"match\": \"\\\\b(?i:ABSOLUTE|AND|BOOL|CACHE|COMMAND|COMMENT|DEFINED|DOC|EQUAL|EXISTS|EXT|FALSE|GREATER|GREATER_EQUAL|INTERNAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LESS|LESS_EQUAL|MATCHES|NAME|NAMES|NAME_WE|NOT|OFF|ON|OR|PATH|PATHS|POLICY|PROGRAM|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|TRUE|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\\\\b\",\n      \"name\": \"keyword.cmake\"\n    },\n    {\n      \"comment\": \"Commands\",\n      \"match\": \"^\\\\s*\\\\b(?i:add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_libraries|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)\\\\b\",\n      \"name\": \"keyword.cmake\"\n    },\n    {\n      \"comment\": \"Variables That Change Behavior\",\n      \"match\": \"\\\\b(?i:BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION))\\\\b\",\n      \"name\": \"variable.source.cmake\"\n    },\n    {\n      \"match\": \"\\\\$\\\\{\\\\w+\\\\}\",\n      \"name\": \"storage.source.cmake\"\n    },\n    {\n      \"match\": \"\\\\$ENV\\\\{\\\\w+\\\\}\",\n      \"name\": \"storage.source.cmake\"\n    },\n    {\n      \"comment\": \"Variables that Control the Build\",\n      \"match\": \"\\\\b(?i:(CMAKE_)?(\\\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH)\\\\b\",\n      \"name\": \"variable.source.cmake\"\n    },\n    {\n      \"comment\": \"Variables that Provide Information\",\n      \"match\": \"\\\\b(?i:CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|\\\\w+_BINARY_DIR|\\\\w+__SOURCE_DIR)\\\\b\",\n      \"name\": \"variable.source.cmake\"\n    },\n    {\n      \"comment\": \"BracketArgs\",\n      \"begin\": \"#\\\\[(=*)\\\\[\",\n      \"end\": \"\\\\]\\\\1\\\\]\",\n      \"name\": \"comment.source.cmake\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(.|$)\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"BracketArgs\",\n      \"begin\": \"\\\\[(=*)\\\\[\",\n      \"end\": \"\\\\]\\\\1\\\\]\",\n      \"name\": \"argument.source.cmake\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(.|$)\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    {\n      \"match\": \"#+.*$\",\n      \"name\": \"comment.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties on Cache Entries\",\n      \"match\": \"\\\\b(?i:ADVANCED|HELPSTRING|MODIFIED|STRINGS|TYPE|VALUE)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties on Source Files\",\n      \"match\": \"\\\\b(?i:ABSTRACT|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_<CONFIG>|COMPILE_FLAGS|EXTERNAL_OBJECT|Fortran_FORMAT|GENERATED|HEADER_FILE_ONLY|KEEP_EXTENSION|LABELS|LANGUAGE|LOCATION|MACOSX_PACKAGE_LOCATION|OBJECT_DEPENDS|OBJECT_OUTPUTS|SYMBOLIC|WRAP_EXCLUDE)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties on Tests\",\n      \"match\": \"\\\\b(?i:ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|COST|DEPENDS|ENVIRONMENT|FAIL_REGULAR_EXPRESSION|LABELS|MEASUREMENT|PASS_REGULAR_EXPRESSION|PROCESSORS|REQUIRED_FILES|RESOURCE_LOCK|RUN_SERIAL|TIMEOUT|WILL_FAIL|WORKING_DIRECTORY)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties on Directories\",\n      \"match\": \"\\\\b(?i:ADDITIONAL_MAKE_CLEAN_FILES|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_\\\\w+|DEFINITIONS|EXCLUDE_FROM_ALL|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\\\w+|LINK_DIRECTORIES|LISTFILE_STACK|MACROS|PARENT_DIRECTORY|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|TEST_INCLUDE_FILE|VARIABLES|VS_GLOBAL_SECTION_POST_\\\\w+|VS_GLOBAL_SECTION_PRE_\\\\w+)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties of Global Scope\",\n      \"match\": \"\\\\b(?i:ALLOW_DUPLICATE_CUSTOM_TARGETS|DEBUG_CONFIGURATIONS|DISABLED_FEATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|IN_TRY_COMPILE|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PREDEFINED_TARGETS_FOLDER|REPORT_UNDEFINED_PROPERTIES|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_SUPPORTS_SHARED_LIBS|USE_FOLDERS|__CMAKE_DELETE_CACHE_CHANGE_VARS_)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Properties on Targets\",\n      \"match\": \"\\\\b(?i:\\\\w+_(OUTPUT_NAME|POSTFIX)|ARCHIVE_OUTPUT_(DIRECTORY(_\\\\w+)?|NAME(_\\\\w+)?)|AUTOMOC(_MOC_OPTIONS)?|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE(_EXTENSION)?|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPILE_(DEFINITIONS(_\\\\w+)?|FLAGS)|DEBUG_POSTFIX|DEFINE_SYMBOL|ENABLE_EXPORTS|EXCLUDE_FROM_ALL|EchoString|FOLDER|FRAMEWORK|Fortran_(FORMAT|MODULE_DIRECTORY)|GENERATOR_FILE_NAME|GNUtoMS|HAS_CXX|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(CONFIGURATIONS|IMPLIB(_\\\\w+)?|LINK_DEPENDENT_LIBRARIES(_\\\\w+)?|LINK_INTERFACE_LANGUAGES(_\\\\w+)?|LINK_INTERFACE_LIBRARIES(_\\\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\\\w+)?|LOCATION(_\\\\w+)?|NO_SONAME(_\\\\w+)?|SONAME(_\\\\w+)?)|IMPORT_PREFIX|IMPORT_SUFFIX|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_INCLUDE_DIRECTORIES|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\\\w+|LABELS|LIBRARY_OUTPUT_DIRECTORY(_\\\\w+)?|LIBRARY_OUTPUT_NAME(_\\\\w+)?|LINKER_LANGUAGE|LINK_DEPENDS|LINK_FLAGS(_\\\\w+)?|LINK_INTERFACE_LIBRARIES(_\\\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\\\w+)?|LINK_LIBRARIES|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|LOCATION(_\\\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MAP_IMPORTED_CONFIG_\\\\w+|NO_SONAME|OSX_ARCHITECTURES(_\\\\w+)?|OUTPUT_NAME(_\\\\w+)?|PDB_NAME(_\\\\w+)?|POST_INSTALL_SCRIPT|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE|PRIVATE_HEADER|PROJECT_LABEL|PUBLIC|PUBLIC_HEADER|RESOURCE|RULE_LAUNCH_(COMPILE|CUSTOM|LINK)|RUNTIME_OUTPUT_(DIRECTORY(_\\\\w+)?|NAME(_\\\\w+)?)|SKIP_BUILD_RPATH|SOURCES|SOVERSION|STATIC_LIBRARY_FLAGS(_\\\\w+)?|SUFFIX|TYPE|VERSION|VS_DOTNET_REFERENCES|VS_GLOBAL_(\\\\w+|KEYWORD|PROJECT_TYPES)|VS_KEYWORD|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|WIN32_EXECUTABLE|XCODE_ATTRIBUTE_\\\\w+)\\\\b\",\n      \"name\": \"entity.source.cmake\"\n    },\n    {\n      \"comment\": \"Escaped Strings\",\n      \"begin\": \"\\\\\\\\\\\"\",\n      \"end\": \"\\\\\\\\\\\"\",\n      \"name\": \"string.source.cmake\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(.|$)\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Normal Strings\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.source.cmake\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(.|$)\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Derecated keyword\",\n      \"match\": \"\\\\bBUILD_NAME\\\\b\",\n      \"name\": \"invalid.deprecated.source.cmake\"\n    },\n    {\n      \"comment\": \"Compiler Flags\",\n      \"match\": \"\\\\b(?i:(CMAKE_)?(CXX_FLAGS|CMAKE_CXX_FLAGS_DEBUG|CMAKE_CXX_FLAGS_MINSIZEREL|CMAKE_CXX_FLAGS_RELEASE|CMAKE_CXX_FLAGS_RELWITHDEBINFO))\\\\b\",\n      \"name\": \"variable.source.cmake\"\n    }\n  ],\n  \"repository\": {},\n  \"scopeName\": \"source.cmake\",\n  \"uuid\": \"7aed2d59-22d9-41c8-ba9e-4f178191e380\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cobol.tmLanguage.json",
    "content": "{\n  \"_copyright\": \"The MIT License (MIT)\\nCopyright (c) 2015-2022 spgennard\\nSource: https://github.com/spgennard/vscode_cobol/blob/main/syntaxes/COBOL.tmLanguage.json\",\n  \"$schema\": \"https://raw.githubusercontent.com/spgennard/vscode_cobol/main/schemas/tmlanguage.json\",\n  \"fileTypes\": [\n    \"ccp\",\n    \"scbl\",\n    \"cobol\",\n    \"cbl\",\n    \"cblle\",\n    \"cblsrce\",\n    \"cblcpy\",\n    \"lks\",\n    \"pdv\",\n    \"cpy\",\n    \"copybook\",\n    \"cobcopy\",\n    \"fd\",\n    \"sel\",\n    \"scb\",\n    \"scbl\",\n    \"sqlcblle\",\n    \"cob\",\n    \"dds\",\n    \"def\",\n    \"src\",\n    \"ss\",\n    \"wks\",\n    \"bib\",\n    \"pco\"\n  ],\n  \"name\": \"cobol\",\n  \"patterns\": [\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])([dD]\\\\s.*$)\",\n      \"name\": \"token.info-token.cobol\"\n    },\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s]$\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    {\n      \"match\": \"(^[0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s][0-9\\\\s])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ][0-9a-zA-Z\\\\s\\\\$#%\\\\.@\\\\- ])(\\\\*.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.fixed\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s+(78)\\\\s+([0-9a-zA-Z][a-zA-Z\\\\-0-9_]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.constant\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s+([0-9]+)\\\\s+([0-9a-zA-Z][a-zA-Z\\\\-0-9_]+)\\\\s+((?i:constant))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.constant\"\n        },\n        \"3\": {\n          \"name\": \"keyword.identifers.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(^[0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@][0-9a-zA-Z\\\\s\\\\$#%\\\\.@])(\\\\/.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.cobol\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.cobol.newpage\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\*.*$\",\n      \"name\": \"comment.line.cobol.fixed\"\n    },\n    {\n      \"match\": \"((?:^|\\\\s+)(?i:\\\\$set)\\\\s+)((?i:constant)\\\\s+)([0-9a-zA-Z][a-zA-Z\\\\-0-9]+\\\\s*)([a-zA-Z\\\\-0-9]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.cobol\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$\\\\s*set\\\\s+)(ilusing)(\\\\()(.*)(\\\\)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.begin.bracket.round.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.end.bracket.round.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$\\\\s*set\\\\s+)(ilusing)(\\\")(.*)(\\\"))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$set))\\\\s+(\\\\w+)\\\\s*(\\\")(\\\\w*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"((?i:\\\\$set))\\\\s+(\\\\w+)\\\\s*(\\\\()(.*)(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.begin.bracket.round.cobol\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.other.cobol\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.end.bracket.round.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?:^|\\\\s+)(?i:\\\\$\\\\s*set\\\\s)((?i:01SHUFFLE|64KPARA|64KSECT|AUXOPT|CHIP|DATALIT|EANIM|EXPANDDATA|FIXING|FLAG-CHIP|MASM|MODEL|OPTSIZE|OPTSPEED|PARAS|PROTMODE|REGPARM|SEGCROSS|SEGSIZE|SIGNCOMPARE|SMALLDD|TABLESEGCROSS|TRICKLECHECK|\\\\s)+).*$\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"1\": {\n          \"name\": \"invalid.illegal.directive\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.set.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\$region|\\\\$end-region)(.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.preprocessor.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\$(?i:doc)(.*$)\",\n      \"end\": \"\\\\$(?i:end-doc)(.*$)\",\n      \"name\": \"invalid.illegal.iscobol\"\n    },\n    {\n      \"match\": \">>\\\\s*(?i:turn|page|listing|leap-seconds|d)\\\\s+.*$\",\n      \"name\": \"invalid.illegal.meta.preprocessor.cobolit\"\n    },\n    {\n      \"match\": \"((((>>|\\\\$)[\\\\s]*)(?i:if|else|elif|end-if|end-evaluate|end|define|evaluate|when|display|call-convention|set))(.*$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.preprocessor.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\*>)\\\\s+(@[0-9a-zA-Z][a-zA-Z\\\\-0-9]+)\\\\s+(.*$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.line.scantoken.cobol\"\n        },\n        \"2\": {\n          \"name\": \"keyword.cobol\"\n        },\n        \"3\": {\n          \"name\": \"string.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\*>.*$)\",\n      \"name\": \"comment.line.modern\"\n    },\n    {\n      \"match\": \"(>>.*)$\",\n      \"name\": \"strong comment.line.set.acucobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])'\\\\h*'\",\n      \"name\": \"constant.numeric.integer.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])'.*'\",\n      \"name\": \"invalid.illegal.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])\\\"\\\\h*\\\"\",\n      \"name\": \"constant.numeric.integer.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"([nNuU][xX]|[hHxX])\\\".*\\\"\",\n      \"name\": \"invalid.illegal.hexadecimal.cobol\"\n    },\n    {\n      \"match\": \"[bB]\\\"[0-1]\\\"\",\n      \"name\": \"constant.numeric.integer.boolean.cobol\"\n    },\n    {\n      \"match\": \"[bB]'[0-1]'\",\n      \"name\": \"constant.numeric.integer.boolean.cobol\"\n    },\n    {\n      \"match\": \"[oO]\\\"[0-7]*\\\"\",\n      \"name\": \"constant.numeric.integer.octal.cobol\"\n    },\n    {\n      \"match\": \"[oO]\\\".*\\\"\",\n      \"name\": \"invalid.illegal.octal.cobol\"\n    },\n    {\n      \"match\": \"(#)([0-9a-zA-Z][a-zA-Z\\\\-0-9]+)\",\n      \"name\": \"meta.symbol.cobol.forced\"\n    },\n    {\n      \"begin\": \"((?<![-_a-zA-Z0-9()-])(?i:installation|author|source-computer|object-computer|date-written|security|date-compiled)(\\\\.|$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.identifiers.cobol\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(^[0-9 ][0-9 ][0-9 ][0-9 ][0-9 ][0-9 ])\",\n          \"name\": \"constant.numeric.cobol\"\n        }\n      ],\n      \"name\": \"comment.block.cobol.remark\",\n      \"end\": \"(?=((?<![-_])(?i:remarks|author|date-written|source-computer|object-computer|installation|date-compiled|special-names|security|environment\\\\s+division|data\\\\s+division|working-storage\\\\s+section|input-output\\\\s+section|linkage\\\\s+section|procedure\\\\s+division|local-storage\\\\s+section)|^[ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*][ \\\\*]\\\\*.*$|^\\\\+$))\"\n    },\n    {\n      \"match\": \"(?<=(\\\\(|\\\\[))((\\\\-\\\\+)*\\\\s*[0-9 ,\\\\.\\\\+\\\\-\\\\*\\\\/]+)(?=(\\\\)|\\\\]))\",\n      \"name\": \"constant.numeric.cobol\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.start.bracket.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"keyword.end.bracket.cobol\"\n        }\n      },\n      \"comment\": \"simple numerics in () and []\"\n    },\n    {\n      \"include\": \"#number-complex-constant\"\n    },\n    {\n      \"include\": \"#number-simple-constant\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:true|false|null|nulls)(?![0-9A-Za-z_-])\",\n      \"name\": \"constant.language.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:zeroes|alphabetic-lower|alphabetic-upper|alphanumeric-edited|alphabetic|alphabet|alphanumeric|zeros|zeros|zero|spaces|space|quotes|quote|low-values|low-value|high-values|high-value)(?=\\\\s+|\\\\.|,|\\\\))\",\n      \"name\": \"constant.language.figurative.cobol\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+sqlims|exec\\\\s+sql)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(^\\\\s*\\\\*.*)$\",\n          \"name\": \"comment.line.sql\"\n        },\n        {\n          \"match\": \"(\\\\:([0-9a-zA-Z\\\\-_])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+cics)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.cics\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\()\",\n          \"name\": \"meta.symbol.cobol\"\n        },\n        {\n          \"include\": \"#cics-keywords\"\n        },\n        {\n          \"include\": \"#string-double-quoted-constant\"\n        },\n        {\n          \"include\": \"#string-quoted-constant\"\n        },\n        {\n          \"include\": \"#number-complex-constant\"\n        },\n        {\n          \"include\": \"#number-simple-constant\"\n        },\n        {\n          \"match\": \"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))\",\n          \"name\": \"variable.cobol\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+sqlims)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\:([a-zA-Z\\\\-])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+ado)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\:([a-zA-Z\\\\-])*)\",\n          \"name\": \"variable.cobol\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+html)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.html\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"begin\": \"(?i:exec\\\\s+java)\",\n      \"name\": \"keyword.verb.cobol\",\n      \"contentName\": \"meta.embedded.block.java\",\n      \"patterns\": [\n        {\n          \"include\": \"source.java\"\n        }\n      ],\n      \"end\": \"(?i:end\\\\-exec)\"\n    },\n    {\n      \"match\": \"(\\\")(CBL_.*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\")(PC_.*)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"match\": \"(\\\\')(CBL_.*)(\\\\')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\')(PC_.*)(\\\\')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cobol\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"('|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGzZ]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGzZ]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGnN]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[gGnN]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[uU]\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.utf8.double.cobol\"\n    },\n    {\n      \"begin\": \"(?<![\\\\-\\\\w])[uU]'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.utf8.single.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:id\\\\s+division|identification\\\\s+division|identification|id|property-id|getter|setter|entry|function-id|end\\\\s+attribute|attribute|interface-id|indexer-id|factory|ctl|class-control|options|environment\\\\s+division|environment-name|environment-value|environment|configuration\\\\s+section|configuration|decimal-point\\\\s+is|decimal-point|console\\\\s+is|call-convention|special-names|cursor\\\\s+is|update|picture\\\\s+symbol|currency\\\\s+sign|currency|repository|input-output\\\\s+section|input-output|file\\\\s+section|file-control|select|optional|i-o-control|data\\\\s+division|working-storage\\\\s+section|working-storage|section|local-storage|linkage\\\\s+section|linkage|communication|report|screen\\\\s+section|object-storage|object\\\\s+section|class-object|fd|rd|cd|sd|printing|procedure\\\\s+division|procedure|division|references|debugging|end\\\\s+declaratives|declaratives|end\\\\s+static|end\\\\s+factory|end\\\\s+class-object|based-storage|size|font|national-edited|national)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:valuetype-id|operator-id|method-id|method|property-id|attribute-id|enum-id|iterator-id|class-id|program-id|operator-id|end\\\\s+program|end\\\\s+valuetype|extension))[\\\\.]*[\\\\s]+([a-zA-Z0-9_-]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.verb.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:implements|inherits|constraints|constrain)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end\\\\s+enum|end\\\\s+interface|end\\\\s+class|end\\\\s+property|end\\\\s+method|end\\\\s+object|end\\\\s+iterator|end\\\\s+function|end\\\\s+operator|end\\\\s+program|end\\\\s+indexer|create|reset|instance|delegate|end-delegate|delegate-id|declare|exception-object|as|stop\\\\s+iterator|stop\\\\s+run|stop)(?=\\\\s|\\\\.|,|\\\\))\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:attach\\\\s+method|attach\\\\s+del|attach|detach\\\\s+del|detach\\\\s+method|detach|method|del)(?=\\\\s|\\\\.|$)\",\n      \"name\": \"keyword.identifiers.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:sync\\\\s+(?i:on))(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.other.sync.cobol\"\n    },\n    {\n      \"match\": \"\\\\s+(?i:try|finally|catch|end-try|throw)(?=\\\\s|\\\\.|$)\",\n      \"name\": \"keyword.control.catch-exception.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:select|use|thru|varying|giving|remainder|tallying|through|until|execute|returning|using|chaining|yielding|\\\\+\\\\+include|copy|replace)(?=\\\\s)\",\n      \"name\": \"keyword.otherverb.cobol\"\n    },\n    {\n      \"match\": \"(?i:dynamic)\\\\s+(?i:length)(?=\\\\s|\\\\.)\",\n      \"name\": \"storage.type.dynamiclength.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:assign|external|prototype|organization|organisation|indexed|column|plus|line\\\\*s*sequential|sequential|access|dynamic|relative|label|block|contains|standard|records|record\\\\s+key|record|is|alternate|duplicates|reel|tape|terminal|disk\\\\sfilename|disk|disc|recording\\\\smode|mode|random)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.identifers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:max|min|integer-of-date|integer-of-day|integer-part|integer|date-to-yyyymmdd|year-to-yyyy|day-to-yyyyddd|exp|exception-file|exception-location|exception-statement|exception-status|e|variance|integer-of-date|rem|pi|factorial|sqrt|log10|fraction-part|mean|exp|log|char|day-of-integer|date-of-integer|exp10|atan|integer-part|tan|sin|cos|midrange|addr|acos|asin|annuity|present-value|integer-of-day|ord-max|ord-min|ord|random|integer-of-date|sum|standard-deviation|median|reverse|abs|upper-case|lower-case|char-national|numval|mod|range|length|locale-date|locale-time-from-seconds|locale-time|seconds-past-midnight|stored-char-length|substitute-case|substitute|seconds-from-formatted-time|seconds-past-midnight|trim|length-an|numval-c|current-date|national-of|display-of|when-compiled|integer-of-boolean|combined-datetime|concatenate)(?=\\\\s|\\\\.|\\\\(|\\\\))\",\n      \"name\": \"support.function.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:DFHRESP|DFHVALUE)(?=\\\\s|\\\\.|\\\\(|\\\\))\",\n      \"name\": \"support.function.cics.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:function)(?=\\\\s|\\\\.)\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end-accept|end-add|end-sync|end-compute|end-delete|end-display|end-divide|end-set|end-multiply|end-of-page|end-read|end-receive|end-return|end-rewrite|end-search|end-start|end-string|end-subtract|end-unstring|end-write|program|class|interface|enum|interface)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?:by value|by reference|by content|property-value)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.other.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:attr-string|automatic|auto-skip|footing|next|group|indicate|source|control|full|required|of|input|output|i-o|extend|file|error|exception|overflow|goto|off|on|proceed|procedures|procedure|through|invalid|data|normal|eop|returning|to|for|giving|into|by|params|remainder|also|numeric|free|depending|converting|replacing|after|before|all|leading|first|recursive|initialized|global|common|initial|resident|reference|content|are\\\\sstandard|are|renames|like|format\\\\stime|values|omitted|value|constant|ascending|descending|key|retry|until|varying|with|no|advancing|up|down|uccurs|ignore\\\\s+lock|lock|length|delimited|count|delimiter|redefines|from\\\\s+console|from\\\\s+command-line|from\\\\s+user\\\\s+name|from\\\\s+day\\\\s+yyyyddd|from\\\\s+day|from\\\\s+time|from\\\\s+day-of-week|from\\\\s+escape|from\\\\s+day\\\\s+yyyyddd|from\\\\s+date\\\\s+yyyymmdd|from\\\\s+date|from|raising|crt\\\\s+status|status|class|upon\\\\s+crt|upon|lines|columns|step|linage|auto|line|position|col|reports|code-set|reporting|arithmetic|localize|program|class|interface|in|at\\\\s+end|page|name)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.identifers.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:type|new)\\\\s+([a-zA-Z][a-zA-Z0-9\\\\$\\\\-\\\\._]*|[a-zA-Z])(?=\\\\.$)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.verb.cobol\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.cobol\"\n        }\n      },\n      \"comment\": \"type ssss \"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:string)(?=\\\\s+value|\\\\.)\",\n      \"name\": \"storage.type.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:bit|byte|binary-char|binary-char-unsigned|binary-short|binary-short-unsigned|binary.long|binary-c-long|binary-long-unsigned|binary-long|binary-double|binary-double-unsigned|float-short|float-extended|float-long|bit|condition-value|characters|character\\\\s+type|character|comma|crt|decimal|object\\\\+sreference|object-reference|object|list|dictionary|unsigned)(?=\\\\s|\\\\.|,|\\\\]|\\\\[)\",\n      \"name\": \"storage.type.cobol\"\n    },\n    {\n      \"match\": \"(operator-id\\\\s+[+\\\\-\\\\*\\\\/])\",\n      \"name\": \"keyword.operator-id.cobol\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.verb.cobol\"\n        },\n        \"2\": {\n          \"name\": \"meta.symbol.cobol\"\n        }\n      },\n      \"comment\": \"operator-id ssss \"\n    },\n    {\n      \"match\": \"(?i:self)(\\\\:\\\\:)([0-9a-zA-Z_\\\\-\\\\.]*)(?=\\\\.$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cobol.b3\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.b3\"\n        }\n      },\n      \"comment\": \" ::.. \"\n    },\n    {\n      \"match\": \"(\\\\:\\\\:)([0-9a-zA-Z_\\\\-\\\\.]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cobol\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cobol\"\n        }\n      },\n      \"comment\": \" ::.. \"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:type)\\\\s+([0-9a-zA-Z\\\\.]*)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.verb.cobol.aa\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.cobol.bb\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:if|else|end-if|exit\\\\s+iterator|exit\\\\s+program|exit\\\\s+method|evaluate|end-evaluate|exit\\\\s+perform|perform|end-perform|when\\\\s+other|when|continue|call|end-call|chain|end-chain|invoke|end\\\\s+invoke|go\\\\s+to|go|sort|merge|use|xml|parse|stop\\\\s+run|goback\\\\s+returning|goback|raise|exit\\\\s+function|await)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.control.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV][-+sS\\\\*$09aAbBxXuUpPnNzZ/,\\\\.]*)\\\\(([0-9]*)\\\\)[-|+]\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture10.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture10.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV][-+sS\\\\*$09aAbBxXuUpPnNzZ/,\\\\.]*)\\\\(([0-9]*)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture9.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture9.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBxXuUpPnNzZ/,.]*)\\\\(([0-9]*)\\\\)([vV\\\\.][-+s\\\\*$09aAbBsSnNxXuUzZ/,]*[0-9\\\\.()])*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture8.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.picture8.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxXuUzZ/,.]*\\\\([0-9]*\\\\)[Vv\\\\.][-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"name\": \"storage.type.picture7.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxXuUzZ/,.]*\\\\([0-9]*\\\\)[-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*[Vv\\\\.][-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"name\": \"storage.type.picture6.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])((?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpPNxuUXzZ/,.]*)\\\\(([0-9]*)\\\\)[-+s\\\\*0$9aAbBsSnNxpPxXuUzZ/,]*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.picture5.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+sS\\\\*$09aAbBsSnpNNxXuUzZ/,.]*\\\\([0-9]*\\\\)\",\n      \"name\": \"storage.type.picture4.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*\\\\([0-9]*\\\\)\",\n      \"name\": \"storage.type.picture3.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*\",\n      \"name\": \"storage.type.picture2.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:picture\\\\s+is|picture|pic\\\\s+is|pic)\\\\s+[-+\\\\*$9aAbBsSnpPNxXuUzZ/,.vV]*\",\n      \"name\": \"storage.type.picture1.cobol\"\n    },\n    {\n      \"match\": \"((?<![-_])(?i:binary|computational-4|comp-4|computational-5|comp-5))\\\\(([0-9]*)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.keyword.verb.acu.cobol\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.constant.numeric.integer\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?i:cblt-x1-compx-const|cblt-x2-compx-const|cblt-x4-compx-const|cblt-alphanum-const|cblt-x9-compx|cblt-x8-compx|cblt-x8-comp5|cblt-x4-compx|cblt-x4-comp5|cblt-x2-compx|cblt-x2-comp5|cblt-x1-compx|cblt-x1-comp5|cblt-x1|cblt-vfile-status|cblt-vfile-handle|cblt-sx8-comp5|cblt-sx4-comp5|cblt-sx2-comp5|cblt-sx1-comp5|cblt-subsys-params|cblt-splitjoin-buf|cblt-screen-position|cblt-rtncode|cblt-request-context|cblt-reqhand-service-info|cblt-reqhand-service-funcs|cblt-reqhand-response|cblt-reqhand-funcs|cblt-prog-info-params|cblt-prog-info-arg-info|cblt-printer-properties|cblt-printer-name|cblt-printer-info|cblt-printer-default|cblt-ppointer|cblt-pointer|cblt-os-ssize|cblt-os-size|cblt-os-offset|cblt-os-info-params|cblt-os-flags|cblt-node-name|cblt-nls-msg-params|cblt-nls-msg-number-pair|cblt-nls-msg-ins-struct|cblt-nls-msg-buffer|cblt-mouse-shape|cblt-mouse-rect|cblt-mouse-pos|cblt-mouse-event|cblt-mem-validate-param|cblt-idp-exit-service-funcs|cblt-idp-exit-info|cblt-HWND|cblt-HINSTANCE|cblt-get-scr-line-draw-buffer|cblt-get-scr-graphics-buffer|cblt-generic-attr-value|cblt-generic-attr-rgb-values|cblt-generic-attr-information|cblt-file-status|cblt-fileexist-buf|cblt-exit-params|cblt-exit-info-params|cblt-cancel-proc-params|cblt-bytestream-handle|cblt-alphanum)\",\n      \"name\": \"support.function.cbltypes.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:computational-1|comp-1|computational-2|comp-2|computational-3|comp-3|computational-4|comp-4|computational-x|comp-x|computational-5|comp-5|computational-6|comp-6|computational-n|comp-n|packed-decimal|index|float|double|signed-short|unsigned-short|signed-int|unsigned-int|signed-long|unsigned-long|comp|computational|group-usage|usage\\\\sis\\\\sdisplay|usage\\\\sis\\\\sfont|usage\\\\s+display|binary|mutex-pointer|data-pointer|thread-pointer|sempahore-pointer|event-pointer|program-pointer|procedure-pointer|pointer|window|subwindow|control-type|thread|menu|variant|layout-manager|occurs|typedef|any|times|display\\\\s+blank\\\\s+when|blank\\\\s+when|blank\\\\s+screen|blank|usage\\\\sis|is\\\\spartial|usage|justified|just|right|signed|trailing\\\\s+separate|sign|seperate|sql)(?=\\\\s|\\\\.|\\\\))\",\n      \"name\": \"storage.type.picture.cobol\"\n    },\n    {\n      \"match\": \"(?i:byte-length)\\\\s+[0-9]+\",\n      \"name\": \"storage.type.length.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:accept|add|address|allocate|cancel|close|commit|compute|continue|delete|disable|display|bell|divide|eject|enable|enter|evaluate|exhibit|named|exit|free|generate|go\\\\s+to|initialize\\\\sonly|initialize|initiate|inspect|merge|end-set|set|end-invoke|invoke\\\\s+run|invoke|move|corresponding|corr|multiply|otherwise|open|sharing|sort-merge|purge|ready|read|kept|receive|release|return|rewrite|rounded|rollback|search|send|sort|collating\\\\s+sequence|collating|start|service|subtract|suppress|terminate|then|unlock|string|unstring|validate|write|next|statement|sentence)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:thread-local)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(\\\\s+|^)(?i:foreground-color|background-color|prompt|underline|reverse-video|no-echo|highlight|blink)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.screens.cobol\"\n    },\n    {\n      \"match\": \"(\\\\s+|^)(?i:bold|high|lowlight|low|standard|background-high|background-low|background-standard)(?![0-9A-Za-z_-])\",\n      \"name\": \"invalid.illegal.screens.acu.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:internal|public|protected|final|private|static|new|abstract|override|readonly|property|async-void|async-value|async)(?=\\\\s|\\\\.)\",\n      \"name\": \"storage.modifier.cobol\"\n    },\n    {\n      \"match\": \"=|<|>|<=|>=|<>|\\\\+|\\\\-|\\\\*|\\\\/|(?<![-_])(?i:b-and|b-or|b-xor|b-exor|b-not|b-left|b-right|and|or|equals|equal|greater\\\\s+than|less\\\\s+than|greater)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.operator.cobol\"\n    },\n    {\n      \"match\": \"(?i:not\\\\s+at\\\\s+end)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.verb.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:not)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.operator.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:sysout-flush|sysin|stderr|stdout|csp|stdin|sysipt|sysout|sysprint|syslist|syslst|printer|syserr|console|c01|c02|c03|c04|c05|c06|c07|c08|c09|c10|c11|c12|formfeed|switch-0|switch-10|switch-11|switch-12|switch-13|switch-13|switch-14|switch-15|switch-1|switch-2|switch-3|switch-4|switch-5|switch-6|switch-7|switch-8|switch-9|sw0|sw11|sw12|sw13|sw14|sw15|sw1|sw2|sw3|sw4|sw5|sw6|sw7|sw8|sw9|sw10|lc_all|lc_collate|lc_ctype|lc_messages|lc_monetary|lc_numeric|lc_time|ucs-4|utf-8|utf-16)(?![0-9A-Za-z_-])\",\n      \"name\": \"support.type.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:end-xml|processing.*procedure|xml\\\\sparse|xml|xml-information|xml-text|xml-schemal|xml-declaration)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.xml.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:json\\\\s+generate|json|end-json|name\\\\sof)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.json.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:modify|inquire|tab|title|event|center|label-offset|cell|help-id|cells|push-button|radio-button|page-layout-screen|entry-field|list-box|label|default-font|id|no-tab|unsorted|color|height|width|bind|thread|erase|modeless|scroll|system|menu|title-bar|wrap|destroy|resizeable|user-gray|large-font|newline|3-d|data-columns|display-columns|alignment|separation|cursor-frame-width|divider-color|drag-color|heading-color|heading-divider-color|num-rows|record-data|tiled-headings|vpadding|centered-headings|column-headings|self-act|cancel-button|vscroll|report-composer|clsid|primary-interface|active-x-control|default-interface|default-source|auto-minimize|auto-resize|resource|engraved|initial-state|frame|acuactivexcontrol|activex-res|grid|box|message|namespace|class-name|module|constructor|version|strong|culture|method|handle|exception-value|read-only|dividers|graphical|indexed|termination-value|permanent|boxed|visible|centered|record-position|convert)(?=\\\\s|\\\\.|,|;|$)\",\n      \"name\": \"invalid.illegal.acu.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:actual|auto|automatic|based-storage|complex|connect|contained|core-index|db-access-control-key|db-data-name|db-exception|db-record-name|db-set-name|db-status|dead-lock|endcobol|end-disable|end-enable|end-send|end-transceive|eos|file-limits|file-limit|formatted|sort-status|usage-mode)(?=\\\\s|\\\\.|,|;|$)\",\n      \"name\": \"invalid.illegal.netcobol.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:System-Info|Terminal-Info)(?![0-9A-Za-z_-])\",\n      \"name\": \"support.type.cobol.acu strong\"\n    },\n    {\n      \"begin\": \"(?<![-_\\\\*])(?i:remarks)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.cobol\"\n        }\n      },\n      \"name\": \"comment.2.block.cobol.remark\",\n      \"end\": \"(?i:end\\\\-remark|\\\\*{Bench}end|environment\\\\s+division|data\\\\s+division|working-storage\\\\s+section|file-control)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?<![-_])(?i:alter)(?=\\\\s|\\\\.)\",\n      \"name\": \"invalid.illegal.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:apply|areas|area|clock-units|code|com-reg|controls|dbcs|destination|detail|display-1|ending|every|insert|kanjikey|last|left|less|limits|limit|memory|metaclass|modules|more-labels|multiple|native_binary|native|negative|number|numeric-edited|other|padding|password|pf|ph|postive|processing|queue|recording|reload|removal|rerun|reserve|reserved|rewind|segment-limit|segment|separate|sequence|skip1|skip2|skip3|standard-1|standard-2|sub-queue-1|sub-queue-2|sub-queue-3|sum|symbolic|synchronized|sync|table|test|text|than|top|trace|trailing|unit|words|write-only|at|basis|beginning|bottom|cbl|cf|ch|de|positive|egcs|egi|emi|end|reversed|rf|rh|run|same|order|heading|esi)(?![0-9A-Za-z_-])\",\n      \"name\": \"keyword.ibmreserved.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:active-class|aligned|anycase|boolean|cols|col|condition|ec|eo|system-default|function-pointer)(?![0-9A-Za-z_-])\",\n      \"name\": \"strong keyword.potential.reserved.cobol\"\n    },\n    {\n      \"match\": \"(?i:filler)\",\n      \"name\": \"keyword.filler.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:address-of|date|day-of-week|day|debug-content|debug-item|debug-line|debug-item|debug-sub-1|debug-sub-2|debug-sub-3|shift-in|shift-out|sort-control|sort-core-size|sort-file-size|sort-message|sort-return|sort-mode-size|sort-return|tally|time|when-compiled|line-counter|page-counter|return-code|linage-counter|debug-line|debug-name|debug-contents|json-code|json-status|xml-code|xml-event|xml-information|xml-namespace-prefix|xml-namespace|xml-nnamespace-repfix|xml-nnamespace|xml-ntext|jnienvptr)(?![0-9A-Za-z_-])\",\n      \"name\": \"variable.language\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:shortint1|shortint2|shortint3|shortint4|shortint5|shortint6|shortint7|longint1|longint2|longint3|longint4|longint5|longint6|bigint1|bigint2|blob-locator|clob-locator|dbclob-locator|dbclob-file|blob-file|clob-file|clob|dbclob|blob|varbinary|long-varbinary|time-record|timestamp-record|timestamp-offset-record|timestamp-offset|timestamp|rowid|xml|long-varchar)(?=\\\\s|\\\\.|\\\\)|\\\\()\",\n      \"name\": \"storage.type.sql.picture.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:self)\",\n      \"name\": \"keyword.other.self.cobol\"\n    },\n    {\n      \"match\": \"(?<![-_])(?i:super)\",\n      \"name\": \"keyword.other.super.cobol\"\n    },\n    {\n      \"match\": \"(^[0-9][0-9][0-9][0-9][0-9][0-9])\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    {\n      \"match\": \"(\\\\()([0-9]*)(:)([0-9]*)(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.symbol.cobol\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integer\"\n        },\n        \"3\": {\n          \"name\": \"meta.symbol.cobol\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.integer\"\n        },\n        \"5\": {\n          \"name\": \"meta.symbol.cobol\"\n        }\n      }\n    },\n    {\n      \"match\": \"([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))\",\n      \"name\": \"meta.symbol.cobol\"\n    }\n  ],\n  \"repository\": {\n    \"cics-keywords\": {\n      \"match\": \"(?<![\\\\-\\\\w])(?i:abcode|abdump|abend|abort|abprogram|abstime|accum|acee|acqactivity|acqprocess|acquactivity|action|activity|activityid|actpartn|add|address|after|aid|alarm|all|allocate|alter|alternate|altscrnht|altscrnwd|and|anykey|aplkybd|apltext|applid|as|asa|asis|asktime|asraintrpt|asrakey|asrapsw|asraregs|asraspc|asrastg|assign|asynchronous|at|attach|attachid|attributes|authenticate|autopage|auxiliary|base64|basicauth|below|bif|binary|bit|bodycharset|bookmark|brdata|brdatalength|brexit|bridge|browsetoken|btrans|buffer|build|burgeability|caddrlength|cancel|card|cbuff|ccsid|certificate|change|changetime|channel|char|characterset|check|chunkend|chunking|chunkno|chunkyes|cicsdatakey|ciphers|class|clear|cliconvert|client|clientaddr|clientaddrnu|clientconv|clientname|clntaddr6nu|clntipfamily|close|closestatus|clrpartn|cmdsec|cnamelength|cnotcompl|codepage|color|commarea|commonname|commonnamlen|comparemax|comparemin|complete|composite|compstatus|condition|confirm|confirmation|connect|consistent|console|container|contexttype|control|convdata|converse|convertst|converttime|convid|copy|counter|country|countrylen|create|critical|ctlchar|current|cursor|cwa|cwaleng|data|data1|data2|datalength|datalenth|dataonly|datapointer|dataset|datastr|datatoxml|datatype|datcontainer|date|dateform|datesep|datestring|day|daycount|dayofmonth|dayofweek|dayofyear|days|daysleft|day-of-week|dcounter|ddmmyy|ddmmyyyy|debkey|debrec|debug-contents|debug-item|debug-line|debug-name|debug-sub-1|debug-sub-2|debug-sub-3|deedit|default|define|defresp|defscrnht|defscrnwd|delay|delete|deleteq|delimiter|deq|destcount|destid|destidleng|detail|detaillength|dfhresp|dfhvalue|digest|digesttype|disconnect|docdelete|docsize|docstatus|doctoken|document|ds3270|dsscs|dump|dumpcode|dumpid|duprec|ecaddr|ecblist|eib|elemname|elemnamelen|elemns|elemnslen|end|endactivity|endbr|endbrowse|endfile|endoutput|enq|enter|entry|entryname|eoc|eods|eprfield|eprfrom|eprinto|eprlength|eprset|eprtype|equal|erase|eraseaup|error|errterm|esmreason|esmresp|event|eventtype|eventual|ewasupp|exception|expect|expirytime|extds|external|extract|facility|facilitytokn|false|faultactlen|faultactor|faultcode|faultcodelen|faultcodestr|faultstring|faultstrlen|fci|fct|field|file|firestatus|flength|fmh|fmhparm|for|force|formattime|formfeed|formfield|free|freekb|freemain|from|fromactivity|fromccsid|fromchannel|fromcodepage|fromdoc|fromflength|fromlength|fromprocess|frset|fulldate|function|gchars|gcodes|gds|generic|get|getmain|getnext|gmmi|groupid|gtec|gteq|handle|head|header|hex|high-value|high-values|hilight|hold|honeom|host|hostcodepage|hostlength|hosttype|hours|httpheader|httpmethod|httprnum|httpversion|httpvnum|ignore|immediate|in|increment|initimg|initparm|initparmlen|inpartn|input|inputevent|inputmsg|inputmsglen|inquire|insert|integer|interval|into|intoccsid|intocodepage|invalidcount|invite|invmpsz|invoke|invokingprog|invpartn|invreq|issue|issuer|item|iutype|journalname|jtypeid|jusfirst|juslast|justify|katakana|keep|keylength|keynumber|l40|l64|l80|label|langinuse|languagecode|last|lastusetime|ldc|ldcmnem|ldcnum|leavekb|length|lengthlist|level|lightpen|linage-counter|line|lineaddr|line-counter|link|list|listlength|llid|load|locality|localitylen|logmessage|logmode|logonlogmode|logonmsg|low-value|low-values|luname|main|map|mapcolumn|mapfail|mapheight|mapline|maponly|mapped|mappingdev|mapset|mapwidth|massinsert|maxdatalen|maxflength|maximum|maxlength|maxlifetime|maxproclen|mcc|mediatype|message|messageid|metadata|metadatalen|method|methodlength|milliseconds|minimum|minutes|mmddyy|mmddyyyy|mode|modename|monitor|month|monthofyear|move|msr|msrcontrol|name|namelength|natlang|natlanginuse|netname|newpassword|newphrase|newphraselen|next|nexttransid|nleom|noautopage|nocc|nocheck|nocliconvert|noclose|nodata|node|nodocdelete|nodump|noedit|noflush|nohandle|noinconvert|none|nooutconert|noqueue|noquiesce|nosrvconvert|nosuspend|note|notpurgeable|notruncate|nowait|nscontainer|null|nulls|numciphers|numevents|numitems|numrec|numroutes|numsegments|numtab|of|oidcard|on|opclass|open|operation|operator|operid|operkeys|operpurge|opid|opsecurity|options|or|orgabcode|organization|organizatlen|orgunit|orgunitlen|outdescr|outline|outpartn|output|owner|pa1|pa2|pa3|page|pagenum|page-counter|paging|parse|partn|partner|partnfail|partnpage|partns|partnset|pass|passbk|password|passwordlen|path|pathlength|pct|pf1|pf10|pf11|pf12|pf13|pf14|pf15|pf16|pf17|pf18|pf19|pf2|pf20|pf21|pf22|pf23|pf24|pf3|pf4|pf5|pf6|pf7|pf8|pf9|pfxleng|phrase|phraselen|piplength|piplist|point|pool|pop|portnumber|portnumnu|post|ppt|predicate|prefix|prepare|princonvid|prinsysid|print|priority|privacy|process|processtype|proclength|procname|profile|program|protect|ps|punch|purge|purgeable|push|put|qname|query|queryparm|querystring|querystrlen|queue|quote|quotes|random|rba|rbn|rdatt|read|readnext|readprev|readq|reattach|receive|receiver|recfm|record|recordlen|recordlength|reduce|refparms|refparmslen|relatesindex|relatestype|relatesuri|release|remove|repeatable|repetable|replace|reply|replylength|reqid|requesttype|resclass|reset|resetbr|resid|residlength|resource|resp|resp2|ressec|restart|restype|result|resume|retain|retcode|retcord|retriece|retrieve|return|returnprog|return-code|rewind|rewrite|ridfld|role|rolelength|rollback|route|routecodes|rprocess|rresource|rrn|rtermid|rtransid|run|saddrlength|scheme|schemename|scope|scopelen|scrnht|scrnwd|seconds|security|segmentlist|send|sender|serialnum|serialnumlen|server|serveraddr|serveraddrnu|serverconv|servername|service|session|sesstoken|set|shared|shift-in|shift-out|sigdata|signal|signoff|signon|sit|snamelength|soapfault|sort-control|sort-core-size|sort-file-size|sort-message|sort-mode-size|sort-return|sosi|space|spaces|spoolclose|spoolopen|spoolread|spoolwrite|srvconvert|srvraddr6nu|srvripfamily|ssltype|start|startbr|startbrowse|startcode|state|statelen|stationid|status|statuscode|statuslen|statustext|storage|strfield|stringformat|subaddr|subcodelen|subcodestr|subevent|subevent1|subevent2|subevent3|subevent4|subevent5|subevent6|subevent7|subevent8|sum|suspend|suspstatus|symbol|symbollist|synchronous|synclevel|synconreturn|syncpoint|sysid|tables|tally|task|taskpriority|tcpip|tcpipservice|tct|tctua|tctualeng|td|tellerid|template|termcode|termid|terminal|termpriority|test|text|textkybd|textlength|textprint|time|timeout|timer|timesep|title|to|toactivity|tochannel|tocontainer|toflength|token|tolength|toprocess|trace|tracenum|trailer|tranpriority|transaction|transform|transid|trigger|trt|true|ts|twa|twaleng|type|typename|typenamelen|typens|typenslen|unattend|uncommitted|unescaped|unexpin|unlock|until|uow|update|uri|urimap|url|urllength|userdatakey|userid|username|usernamelen|userpriority|using|validation|value|valuelength|verify|versionlen|volume|volumeleng|wait|waitcics|web|when-compiled|wpmedia1|wpmedia2|wpmedia3|wpmedia4|wrap|write|writeq|wsacontext|wsaepr|xctl|xmlcontainer|xmltodata|xmltransform|xrba|year|yyddd|yyddmm|yymmdd|yyyyddd|yyyyddmm|yyyymmdd|zero|zeroes|zeros)(?![\\\\-\\\\w])\",\n      \"name\": \"keyword.verb.cics\"\n    },\n    \"string-quoted-constant\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"('|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      },\n      \"name\": \"string.quoted.single.cobol\"\n    },\n    \"string-double-quoted-constant\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cobol\"\n        }\n      },\n      \"end\": \"(\\\"|$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cobol\"\n        }\n      }\n    },\n    \"number-complex-constant\": {\n      \"match\": \"(\\\\-|\\\\+)?((([0-9]+(\\\\.[0-9]+))|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?(?=\\\\s|\\\\.$|,|\\\\))\",\n      \"name\": \"constant.numeric.cobol\"\n    },\n    \"number-simple-constant\": {\n      \"match\": \"(\\\\-|\\\\+)?([0-9]+)(?=\\\\s|\\\\.$|,|\\\\))\",\n      \"name\": \"constant.numeric.cobol\"\n    }\n  },\n  \"scopeName\": \"source.cobol\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/codeql.tmLanguage.json",
    "content": "{\n  \"name\": \"codeql\",\n  \"scopeName\": \"source.ql\",\n  \"fileTypes\": [\"ql\", \"qll\"],\n  \"uuid\": \"7F6926BF-1C6C-468A-A7AA-215EBAC86A4E\",\n  \"patterns\": [\n    {\n      \"include\": \"#module-member\"\n    }\n  ],\n  \"repository\": {\n    \"id-character\": {\n      \"match\": \"(?x)[0-9A-Za-z_]\"\n    },\n    \"end-of-id\": {\n      \"match\": \"(?x)(?!(?:[0-9A-Za-z_]))\"\n    },\n    \"simple-id\": {\n      \"match\": \"(?x)\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))\"\n    },\n    \"lower-id\": {\n      \"match\": \"(?x)\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))\"\n    },\n    \"upper-id\": {\n      \"match\": \"(?x)\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))\"\n    },\n    \"at-lower-id\": {\n      \"match\": \"(?x)@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))\"\n    },\n    \"comment-start\": {\n      \"match\": \"(?x)// | /\\\\*\"\n    },\n    \"non-context-sensitive\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#operator-or-punctuation\"\n        },\n        {\n          \"include\": \"#keyword\"\n        }\n      ]\n    },\n    \"relational-operator\": {\n      \"match\": \"(?x)<=|<|>=|>\",\n      \"name\": \"keyword.operator.relational.ql\"\n    },\n    \"comparison-operator\": {\n      \"match\": \"(?x)=|\\\\!-\",\n      \"name\": \"keyword.operator.comparison.ql\"\n    },\n    \"arithmetic-operator\": {\n      \"match\": \"(?x)\\\\+|-|\\\\*|/|%\",\n      \"name\": \"keyword.operator.arithmetic.ql\"\n    },\n    \"comma\": {\n      \"match\": \"(?x),\",\n      \"name\": \"punctuation.separator.comma.ql\"\n    },\n    \"semicolon\": {\n      \"match\": \"(?x);\",\n      \"name\": \"punctuation.separator.statement.ql\"\n    },\n    \"dot\": {\n      \"match\": \"(?x)\\\\.\",\n      \"name\": \"punctuation.accessor.ql\"\n    },\n    \"dotdot\": {\n      \"match\": \"(?x)\\\\.\\\\.\",\n      \"name\": \"punctuation.operator.range.ql\"\n    },\n    \"pipe\": {\n      \"match\": \"(?x)\\\\|\",\n      \"name\": \"punctuation.separator.pipe.ql\"\n    },\n    \"open-paren\": {\n      \"match\": \"(?x)\\\\(\",\n      \"name\": \"punctuation.parenthesis.open.ql\"\n    },\n    \"close-paren\": {\n      \"match\": \"(?x)\\\\)\",\n      \"name\": \"punctuation.parenthesis.close.ql\"\n    },\n    \"open-brace\": {\n      \"match\": \"(?x)\\\\{\",\n      \"name\": \"punctuation.curlybrace.open.ql\"\n    },\n    \"close-brace\": {\n      \"match\": \"(?x)\\\\}\",\n      \"name\": \"punctuation.curlybrace.close.ql\"\n    },\n    \"open-bracket\": {\n      \"match\": \"(?x)\\\\[\",\n      \"name\": \"punctuation.squarebracket.open.ql\"\n    },\n    \"close-bracket\": {\n      \"match\": \"(?x)\\\\]\",\n      \"name\": \"punctuation.squarebracket.close.ql\"\n    },\n    \"operator-or-punctuation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#relational-operator\"\n        },\n        {\n          \"include\": \"#comparison-operator\"\n        },\n        {\n          \"include\": \"#arithmetic-operator\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#dot\"\n        },\n        {\n          \"include\": \"#dotdot\"\n        },\n        {\n          \"include\": \"#pipe\"\n        },\n        {\n          \"include\": \"#open-paren\"\n        },\n        {\n          \"include\": \"#close-paren\"\n        },\n        {\n          \"include\": \"#open-brace\"\n        },\n        {\n          \"include\": \"#close-brace\"\n        },\n        {\n          \"include\": \"#open-bracket\"\n        },\n        {\n          \"include\": \"#close-bracket\"\n        }\n      ]\n    },\n    \"dont-care\": {\n      \"match\": \"(?x)\\\\b(?:_)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"variable.language.dont-care.ql\"\n    },\n    \"and\": {\n      \"match\": \"(?x)\\\\b(?:and)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.and.ql\"\n    },\n    \"any\": {\n      \"match\": \"(?x)\\\\b(?:any)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.quantifier.any.ql\"\n    },\n    \"as\": {\n      \"match\": \"(?x)\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.as.ql\"\n    },\n    \"asc\": {\n      \"match\": \"(?x)\\\\b(?:asc)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.order.asc.ql\"\n    },\n    \"avg\": {\n      \"match\": \"(?x)\\\\b(?:avg)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.avg.ql\"\n    },\n    \"boolean\": {\n      \"match\": \"(?x)\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.type.boolean.ql\"\n    },\n    \"by\": {\n      \"match\": \"(?x)\\\\b(?:by)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.order.by.ql\"\n    },\n    \"class\": {\n      \"match\": \"(?x)\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.class.ql\"\n    },\n    \"concat\": {\n      \"match\": \"(?x)\\\\b(?:concat)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.concat.ql\"\n    },\n    \"count\": {\n      \"match\": \"(?x)\\\\b(?:count)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.count.ql\"\n    },\n    \"date\": {\n      \"match\": \"(?x)\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.type.date.ql\"\n    },\n    \"desc\": {\n      \"match\": \"(?x)\\\\b(?:desc)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.order.desc.ql\"\n    },\n    \"else\": {\n      \"match\": \"(?x)\\\\b(?:else)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.else.ql\"\n    },\n    \"exists\": {\n      \"match\": \"(?x)\\\\b(?:exists)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.quantifier.exists.ql\"\n    },\n    \"extends\": {\n      \"match\": \"(?x)\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.extends.ql\"\n    },\n    \"false\": {\n      \"match\": \"(?x)\\\\b(?:false)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"constant.language.boolean.false.ql\"\n    },\n    \"float\": {\n      \"match\": \"(?x)\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.type.float.ql\"\n    },\n    \"forall\": {\n      \"match\": \"(?x)\\\\b(?:forall)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.quantifier.forall.ql\"\n    },\n    \"forex\": {\n      \"match\": \"(?x)\\\\b(?:forex)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.quantifier.forex.ql\"\n    },\n    \"from\": {\n      \"match\": \"(?x)\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.from.ql\"\n    },\n    \"if\": {\n      \"match\": \"(?x)\\\\b(?:if)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.if.ql\"\n    },\n    \"implies\": {\n      \"match\": \"(?x)\\\\b(?:implies)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.implies.ql\"\n    },\n    \"import\": {\n      \"match\": \"(?x)\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.import.ql\"\n    },\n    \"in\": {\n      \"match\": \"(?x)\\\\b(?:in)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.in.ql\"\n    },\n    \"instanceof\": {\n      \"match\": \"(?x)\\\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.instanceof.ql\"\n    },\n    \"int\": {\n      \"match\": \"(?x)\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.type.int.ql\"\n    },\n    \"max\": {\n      \"match\": \"(?x)\\\\b(?:max)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.max.ql\"\n    },\n    \"min\": {\n      \"match\": \"(?x)\\\\b(?:min)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.min.ql\"\n    },\n    \"module\": {\n      \"match\": \"(?x)\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.module.ql\"\n    },\n    \"newtype\": {\n      \"match\": \"(?x)\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.newtype.ql\"\n    },\n    \"none\": {\n      \"match\": \"(?x)\\\\b(?:none)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.quantifier.none.ql\"\n    },\n    \"not\": {\n      \"match\": \"(?x)\\\\b(?:not)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.not.ql\"\n    },\n    \"or\": {\n      \"match\": \"(?x)\\\\b(?:or)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.or.ql\"\n    },\n    \"order\": {\n      \"match\": \"(?x)\\\\b(?:order)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.order.order.ql\"\n    },\n    \"predicate\": {\n      \"match\": \"(?x)\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.predicate.ql\"\n    },\n    \"rank\": {\n      \"match\": \"(?x)\\\\b(?:rank)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.rank.ql\"\n    },\n    \"result\": {\n      \"match\": \"(?x)\\\\b(?:result)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"variable.language.result.ql\"\n    },\n    \"select\": {\n      \"match\": \"(?x)\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.query.select.ql\"\n    },\n    \"strictconcat\": {\n      \"match\": \"(?x)\\\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.strictconcat.ql\"\n    },\n    \"strictcount\": {\n      \"match\": \"(?x)\\\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.strictcount.ql\"\n    },\n    \"strictsum\": {\n      \"match\": \"(?x)\\\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.strictsum.ql\"\n    },\n    \"string\": {\n      \"match\": \"(?x)\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.type.string.ql\"\n    },\n    \"sum\": {\n      \"match\": \"(?x)\\\\b(?:sum)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.aggregate.sum.ql\"\n    },\n    \"super\": {\n      \"match\": \"(?x)\\\\b(?:super)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"variable.language.super.ql\"\n    },\n    \"then\": {\n      \"match\": \"(?x)\\\\b(?:then)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.other.then.ql\"\n    },\n    \"this\": {\n      \"match\": \"(?x)\\\\b(?:this)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"variable.language.this.ql\"\n    },\n    \"true\": {\n      \"match\": \"(?x)\\\\b(?:true)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"constant.language.boolean.true.ql\"\n    },\n    \"where\": {\n      \"match\": \"(?x)\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"keyword.query.where.ql\"\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"include\": \"#dont-care\"\n        },\n        {\n          \"include\": \"#and\"\n        },\n        {\n          \"include\": \"#any\"\n        },\n        {\n          \"include\": \"#as\"\n        },\n        {\n          \"include\": \"#asc\"\n        },\n        {\n          \"include\": \"#avg\"\n        },\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#by\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#concat\"\n        },\n        {\n          \"include\": \"#count\"\n        },\n        {\n          \"include\": \"#date\"\n        },\n        {\n          \"include\": \"#desc\"\n        },\n        {\n          \"include\": \"#else\"\n        },\n        {\n          \"include\": \"#exists\"\n        },\n        {\n          \"include\": \"#extends\"\n        },\n        {\n          \"include\": \"#false\"\n        },\n        {\n          \"include\": \"#float\"\n        },\n        {\n          \"include\": \"#forall\"\n        },\n        {\n          \"include\": \"#forex\"\n        },\n        {\n          \"include\": \"#from\"\n        },\n        {\n          \"include\": \"#if\"\n        },\n        {\n          \"include\": \"#implies\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#in\"\n        },\n        {\n          \"include\": \"#instanceof\"\n        },\n        {\n          \"include\": \"#int\"\n        },\n        {\n          \"include\": \"#max\"\n        },\n        {\n          \"include\": \"#min\"\n        },\n        {\n          \"include\": \"#module\"\n        },\n        {\n          \"include\": \"#newtype\"\n        },\n        {\n          \"include\": \"#none\"\n        },\n        {\n          \"include\": \"#not\"\n        },\n        {\n          \"include\": \"#or\"\n        },\n        {\n          \"include\": \"#order\"\n        },\n        {\n          \"include\": \"#predicate\"\n        },\n        {\n          \"include\": \"#rank\"\n        },\n        {\n          \"include\": \"#result\"\n        },\n        {\n          \"include\": \"#select\"\n        },\n        {\n          \"include\": \"#strictconcat\"\n        },\n        {\n          \"include\": \"#strictcount\"\n        },\n        {\n          \"include\": \"#strictsum\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#sum\"\n        },\n        {\n          \"include\": \"#super\"\n        },\n        {\n          \"include\": \"#then\"\n        },\n        {\n          \"include\": \"#this\"\n        },\n        {\n          \"include\": \"#true\"\n        },\n        {\n          \"include\": \"#where\"\n        }\n      ]\n    },\n    \"predicate-start-keyword\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#date\"\n        },\n        {\n          \"include\": \"#float\"\n        },\n        {\n          \"include\": \"#int\"\n        },\n        {\n          \"include\": \"#predicate\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"abstract\": {\n      \"match\": \"(?x)\\\\b(?:abstract)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.abstract.ql\"\n    },\n    \"bindingset\": {\n      \"match\": \"(?x)\\\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.bindingset.ql\"\n    },\n    \"cached\": {\n      \"match\": \"(?x)\\\\b(?:cached)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.cached.ql\"\n    },\n    \"deprecated\": {\n      \"match\": \"(?x)\\\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.deprecated.ql\"\n    },\n    \"external\": {\n      \"match\": \"(?x)\\\\b(?:external)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.external.ql\"\n    },\n    \"final\": {\n      \"match\": \"(?x)\\\\b(?:final)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.final.ql\"\n    },\n    \"language\": {\n      \"match\": \"(?x)\\\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.language.ql\"\n    },\n    \"library\": {\n      \"match\": \"(?x)\\\\b(?:library)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.library.ql\"\n    },\n    \"override\": {\n      \"match\": \"(?x)\\\\b(?:override)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.override.ql\"\n    },\n    \"pragma\": {\n      \"match\": \"(?x)\\\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.pragma.ql\"\n    },\n    \"private\": {\n      \"match\": \"(?x)\\\\b(?:private)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.private.ql\"\n    },\n    \"query\": {\n      \"match\": \"(?x)\\\\b(?:query)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.query.ql\"\n    },\n    \"transient\": {\n      \"match\": \"(?x)\\\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))\",\n      \"name\": \"storage.modifier.transient.ql\"\n    },\n    \"annotation-keyword\": {\n      \"patterns\": [\n        {\n          \"include\": \"#abstract\"\n        },\n        {\n          \"include\": \"#bindingset\"\n        },\n        {\n          \"include\": \"#cached\"\n        },\n        {\n          \"include\": \"#deprecated\"\n        },\n        {\n          \"include\": \"#external\"\n        },\n        {\n          \"include\": \"#final\"\n        },\n        {\n          \"include\": \"#language\"\n        },\n        {\n          \"include\": \"#library\"\n        },\n        {\n          \"include\": \"#override\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#private\"\n        },\n        {\n          \"include\": \"#query\"\n        },\n        {\n          \"include\": \"#transient\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)/\\\\*\\\\*\",\n          \"end\": \"(?x)\\\\*/\",\n          \"name\": \"comment.block.documentation.ql\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?x)(?<=/\\\\*\\\\*)([^*]|\\\\*(?!/))*$\",\n              \"while\": \"(?x)(^|\\\\G)\\\\s*([^*]|\\\\*(?!/))(?=([^*]|[*](?!/))*$)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?x)\\\\G\\\\s* (@\\\\S+)\",\n                  \"name\": \"keyword.tag.ql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)/\\\\*\",\n          \"end\": \"(?x)\\\\*/\",\n          \"name\": \"comment.block.ql\"\n        },\n        {\n          \"match\": \"(?x)//.*$\",\n          \"name\": \"comment.line.double-slash.ql\"\n        }\n      ]\n    },\n    \"module-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#import-directive\"\n        },\n        {\n          \"include\": \"#import-as-clause\"\n        },\n        {\n          \"include\": \"#module-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#select-clause\"\n        },\n        {\n          \"include\": \"#predicate-or-field-declaration\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"include\": \"#annotation\"\n        }\n      ]\n    },\n    \"import-directive\": {\n      \"end\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) (?!\\\\s*(\\\\.|\\\\:\\\\:))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.type.namespace.ql\"\n        }\n      },\n      \"name\": \"meta.block.import-directive.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.namespace.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#import\"\n            }\n          ]\n        }\n      }\n    },\n    \"end-of-as-clause\": {\n      \"match\": \"(?x)(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\\\s* (?!(?:// | /\\\\*) | (?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\\\S) | (?=\\\\s* (?:(?:(?:\\\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))))))\"\n    },\n    \"import-as-clause\": {\n      \"end\": \"(?x)(?:(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\\\s* (?!(?:// | /\\\\*) | (?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\\\S) | (?=\\\\s* (?:(?:(?:\\\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))))\",\n      \"name\": \"meta.block.import-as-clause.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.namespace.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#as\"\n            }\n          ]\n        }\n      }\n    },\n    \"module-declaration\": {\n      \"end\": \"(?x)(?<=\\\\}|;)\",\n      \"name\": \"meta.block.module-declaration.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#module-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.namespace.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#module\"\n            }\n          ]\n        }\n      }\n    },\n    \"module-body\": {\n      \"name\": \"meta.block.module-body.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#module-member\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\{))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-brace\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\}))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-brace\"\n            }\n          ]\n        }\n      }\n    },\n    \"module-qualifier\": {\n      \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) (?=\\\\s*\\\\:\\\\:)\",\n      \"name\": \"entity.name.type.namespace.ql\"\n    },\n    \"predicate-or-field-declaration\": {\n      \"begin\": \"(?x)(?:(?=(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))(?!(?:(?:(?:\\\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))|(?:(?:(?:\\\\b(?:abstract)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:cached)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:external)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:final)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:language)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:library)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:override)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:private)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:query)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))))))) | (?=(?:(?:(?:\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))))) | (?=(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))\",\n      \"end\": \"(?x)(?<=\\\\}|;)\",\n      \"name\": \"meta.block.predicate-or-field-declaration.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-parameter-list\"\n        },\n        {\n          \"include\": \"#predicate-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"include\": \"#module-qualifier\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\\\s*;)\",\n          \"name\": \"variable.field.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.function.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        }\n      ]\n    },\n    \"predicate-parameter-list\": {\n      \"name\": \"meta.block.predicate-parameter-list.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\\\s*(?:,|\\\\)))\",\n          \"name\": \"variable.parameter.ql\"\n        },\n        {\n          \"include\": \"#module-qualifier\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.parameter.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\())\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-paren\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\)))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-paren\"\n            }\n          ]\n        }\n      }\n    },\n    \"expr-as-clause\": {\n      \"end\": \"(?x)(?:(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\\\s* (?!(?:// | /\\\\*) | (?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\\\S) | (?=\\\\s* (?:(?:(?:\\\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))))\",\n      \"name\": \"meta.block.expr-as-clause.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.other.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#as\"\n            }\n          ]\n        }\n      }\n    },\n    \"predicate-body-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expr-as-clause\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"include\": \"#module-qualifier\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\\\\s*(?:\\\\*|\\\\+)?\\\\s*(?=\\\\()\",\n          \"name\": \"entity.name.function.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.other.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        }\n      ]\n    },\n    \"predicate-body\": {\n      \"name\": \"meta.block.predicate-body.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-body-contents\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\{))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-brace\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\}))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-brace\"\n            }\n          ]\n        }\n      }\n    },\n    \"annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#bindingset-annotation\"\n        },\n        {\n          \"include\": \"#language-annotation\"\n        },\n        {\n          \"include\": \"#pragma-annotation\"\n        },\n        {\n          \"include\": \"#annotation-keyword\"\n        }\n      ]\n    },\n    \"bindingset-annotation\": {\n      \"end\": \"(?x)(?! \\\\s | (?:// | /\\\\*) | \\\\[ ) | (?<=\\\\])\",\n      \"name\": \"meta.block.bindingset-annotation.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#bindingset-annotation-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#bindingset\"\n            }\n          ]\n        }\n      }\n    },\n    \"bindingset-annotation-body\": {\n      \"name\": \"meta.block.bindingset-annotation-body.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.parameter.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\[))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-bracket\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\]))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-bracket\"\n            }\n          ]\n        }\n      }\n    },\n    \"language-annotation\": {\n      \"end\": \"(?x)(?! \\\\s | (?:// | /\\\\*) | \\\\[ ) | (?<=\\\\])\",\n      \"name\": \"meta.block.language-annotation.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#language-annotation-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        }\n      }\n    },\n    \"language-annotation-body\": {\n      \"name\": \"meta.block.language-annotation-body.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?:monotonicAggregates)(?:(?!(?:[0-9A-Za-z_])))\",\n          \"name\": \"storage.modifier.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\[))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-bracket\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\]))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-bracket\"\n            }\n          ]\n        }\n      }\n    },\n    \"pragma-annotation\": {\n      \"end\": \"(?x)(?! \\\\s | (?:// | /\\\\*) | \\\\[ ) | (?<=\\\\])\",\n      \"name\": \"meta.block.pragma-annotation.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#pragma-annotation-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#pragma\"\n            }\n          ]\n        }\n      }\n    },\n    \"pragma-annotation-body\": {\n      \"name\": \"meta.block.pragma-annotation-body.ql\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\b(?:inline|noinline|nomagic|noopt)\\\\b\",\n          \"name\": \"storage.modifier.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\[))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-bracket\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\]))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-bracket\"\n            }\n          ]\n        }\n      }\n    },\n    \"newtype-declaration\": {\n      \"end\": \"(?x)(?! \\\\s | (?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) | (?:// | /\\\\*) | \\\\= | \\\\( )\",\n      \"name\": \"meta.block.newtype.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"include\": \"#newtype-branch\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#newtype\"\n            }\n          ]\n        }\n      }\n    },\n    \"newtype-branch\": {\n      \"begin\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.type.ql\"\n        }\n      },\n      \"end\": \"(?x)(?<=\\\\}) | (?! \\\\s | (?:// | /\\\\*) | \\\\{ )\",\n      \"name\": \"meta.block.newtype-branch.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-body\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"end\": \"(?x)(?<= \\\\} | ; )\",\n      \"name\": \"meta.block.class-declaration.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-body\"\n        },\n        {\n          \"include\": \"#extends-clause\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.class.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:class)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#class\"\n            }\n          ]\n        }\n      }\n    },\n    \"extends-clause\": {\n      \"end\": \"(?x)(?= \\\\{ )\",\n      \"name\": \"meta.block.extends-clause.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:extends)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#extends\"\n            }\n          ]\n        }\n      }\n    },\n    \"class-body\": {\n      \"name\": \"meta.block.class-body.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-member\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\{))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#open-brace\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x)((?:\\\\}))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#close-brace\"\n            }\n          ]\n        }\n      }\n    },\n    \"class-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-or-field-declaration\"\n        },\n        {\n          \"include\": \"#annotation\"\n        },\n        {\n          \"include\": \"#non-context-sensitive\"\n        }\n      ]\n    },\n    \"select-clause\": {\n      \"begin\": \"(?x)(?=(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"end\": \"(?x)(?!(?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"name\": \"meta.block.select-clause.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#from-section\"\n        },\n        {\n          \"include\": \"#where-section\"\n        },\n        {\n          \"include\": \"#select-section\"\n        }\n      ]\n    },\n    \"from-section\": {\n      \"end\": \"(?x)(?= (?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))) | (?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))) )\",\n      \"name\": \"meta.block.from-section.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\\\s*(?:,|(?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|$))\",\n          \"name\": \"variable.parameter.ql\"\n        },\n        {\n          \"include\": \"#module-qualifier\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"entity.name.type.ql\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.parameter.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:from)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#from\"\n            }\n          ]\n        }\n      }\n    },\n    \"where-section\": {\n      \"end\": \"(?x)(?=(?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"name\": \"meta.block.where-section.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-body-contents\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#where\"\n            }\n          ]\n        }\n      }\n    },\n    \"select-section\": {\n      \"end\": \"(?x)(?=\\\\n)\",\n      \"name\": \"meta.block.select-section.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#predicate-body-contents\"\n        },\n        {\n          \"include\": \"#select-as-clause\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#select\"\n            }\n          ]\n        }\n      }\n    },\n    \"select-as-clause\": {\n      \"end\": \"(?x)(?<=(?:[0-9A-Za-z_])(?:(?!(?:[0-9A-Za-z_]))))\",\n      \"match\": \"(?x)meta.block.select-as-clause.ql\",\n      \"patterns\": [\n        {\n          \"include\": \"#non-context-sensitive\"\n        },\n        {\n          \"match\": \"(?x)(?:\\\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\",\n          \"name\": \"variable.other.ql\"\n        }\n      ],\n      \"begin\": \"(?x)((?:\\\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#as\"\n            }\n          ]\n        }\n      }\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#int-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        }\n      ]\n    },\n    \"int-literal\": {\n      \"match\": \"(?x)-?[0-9]+(?![0-9])\",\n      \"name\": \"constant.numeric.decimal.ql\"\n    },\n    \"float-literal\": {\n      \"match\": \"(?x)-?[0-9]+\\\\.[0-9]+(?![0-9])\",\n      \"name\": \"constant.numeric.decimal.ql\"\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.double.ql\",\n      \"begin\": \"(?x)\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ql\"\n        }\n      },\n      \"end\": \"(?x)(\\\") | ((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.ql\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.ql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-escape\"\n        }\n      ]\n    },\n    \"string-escape\": {\n      \"match\": \"(?x)\\\\\\\\[\\\"\\\\\\\\nrt]\",\n      \"name\": \"constant.character.escape.ql\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/coffee.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-coffee-script/blob/master/grammars/coffeescript.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-coffee-script/commit/0f6db9143663e18b1ad00667820f46747dba495e\",\n  \"name\": \"coffee\",\n  \"scopeName\": \"source.coffee\",\n  \"patterns\": [\n    {\n      \"include\": \"#jsx\"\n    },\n    {\n      \"match\": \"(new)\\\\s+(?:(?:(class)\\\\s+(\\\\w+(?:\\\\.\\\\w*)*)?)|(\\\\w+(?:\\\\.\\\\w*)*))\",\n      \"name\": \"meta.class.instance.constructor.coffee\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.coffee\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.instance.coffee\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.instance.coffee\"\n        }\n      }\n    },\n    {\n      \"begin\": \"'''\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"'''\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.quoted.single.heredoc.coffee\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.backslash.coffee\"\n            }\n          },\n          \"match\": \"(\\\\\\\\).\",\n          \"name\": \"constant.character.escape.backslash.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.quoted.double.heredoc.coffee\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.backslash.coffee\"\n            }\n          },\n          \"match\": \"(\\\\\\\\).\",\n          \"name\": \"constant.character.escape.backslash.coffee\"\n        },\n        {\n          \"include\": \"#interpolated_coffee\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(`)(.*)(`)\",\n      \"name\": \"string.quoted.script.coffee\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"2\": {\n          \"name\": \"source.js.embedded.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(?<!#)###(?!#)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"end\": \"###\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"name\": \"comment.block.coffee\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|\\\\s)@\\\\w*(?=\\\\s)\",\n          \"name\": \"storage.type.annotation.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.coffee\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.number-sign.coffee\"\n    },\n    {\n      \"begin\": \"///\",\n      \"end\": \"(///)[gimuy]*\",\n      \"name\": \"string.regexp.multiline.coffee\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#heregexp\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<![\\\\w$])(/)(?=(?![/*+?])(.+)(/)[gimuy]*(?!\\\\s*[\\\\w$/(]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        }\n      },\n      \"end\": \"(/)[gimuy]*(?!\\\\s*[\\\\w$/(])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        }\n      },\n      \"name\": \"string.regexp.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js.regexp\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while|until|loop|do|export|import|default|from|as|yield|async|await|(?<=for)\\\\s+own)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.control.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(delete|instanceof|new|typeof)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.operator.$1.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<![\\\\.\\\\$])(case|function|var|void|with|const|let|enum|native|__hasProp|__extends|__slice|__bind|__indexOf|implements|interface|package|private|protected|public|static)(?!\\\\s*:)\\\\b\",\n      \"name\": \"keyword.reserved.coffee\"\n    },\n    {\n      \"begin\": \"(?x)\\n(?<=\\\\s|^)((@)?[a-zA-Z_$][\\\\w$]*)\\n\\\\s*([:=])\\\\s*\\n(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.readwrite.instance.coffee\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.coffee\"\n        }\n      },\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n(?<=\\\\s|^)(?:((')([^']*?)('))|((\\\")([^\\\"]*?)(\\\")))\\n\\\\s*([:=])\\\\s*\\n(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.single.coffee\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.coffee\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.coffee\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.coffee\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.coffee\"\n        },\n        \"9\": {\n          \"name\": \"keyword.operator.assignment.coffee\"\n        }\n      },\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(\\\\([^\\\\(\\\\)]*\\\\)\\\\s*)?[=-]>)\",\n      \"end\": \"[=-]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.coffee\"\n        }\n      },\n      \"name\": \"meta.function.inline.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_params\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\s|^)({)(?=[^'\\\"#]+?}[\\\\s\\\\]}]*=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.destructuring.begin.bracket.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.destructuring.end.bracket.curly.coffee\"\n        }\n      },\n      \"name\": \"meta.variable.assignment.destructured.object.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_]\\\\w*\",\n          \"name\": \"variable.assignment.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\s|^)(\\\\[)(?=[^'\\\"#]+?\\\\][\\\\s\\\\]}]*=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.destructuring.begin.bracket.square.coffee\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.destructuring.end.bracket.square.coffee\"\n        }\n      },\n      \"name\": \"meta.variable.assignment.destructured.array.coffee\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_]\\\\w*\",\n          \"name\": \"variable.assignment.coffee\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)(true|on|yes)(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.boolean.true.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)(false|off|no)(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.boolean.false.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)null(?!\\\\s*[:=][^=])\\\\b\",\n      \"name\": \"constant.language.null.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(?<!\\\\.|::)extends(?!\\\\s*[:=])\\\\b\",\n      \"name\": \"variable.language.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(?<!\\\\$)(super|this|arguments)(?!\\\\s*[:=][^=]|\\\\$)\\\\b\",\n      \"name\": \"variable.language.$1.coffee\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.inheritance.coffee\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.coffee\"\n        }\n      },\n      \"match\": \"(?<=\\\\s|^|\\\\[|\\\\()(class)\\\\s+(extends)\\\\s+(@?[a-zA-Z\\\\$\\\\._][\\\\w\\\\.]*)\",\n      \"name\": \"meta.class.coffee\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.coffee\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.coffee\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.inheritance.coffee\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.inherited-class.coffee\"\n        }\n      },\n      \"match\": \"(?<=\\\\s|^|\\\\[|\\\\()(class\\\\b)\\\\s+(@?[a-zA-Z\\\\$_][\\\\w\\\\.]*)?(?:\\\\s+(extends)\\\\s+(@?[a-zA-Z\\\\$\\\\._][\\\\w\\\\.]*))?\",\n      \"name\": \"meta.class.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(debugger|\\\\\\\\)\\\\b\",\n      \"name\": \"keyword.other.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(Array|ArrayBuffer|Blob|Boolean|Date|document|Function|Int(8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(8|16|32|64)Array|XMLHttpRequest)\\\\b\",\n      \"name\": \"support.class.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(console)\\\\b\",\n      \"name\": \"entity.name.type.object.coffee\"\n    },\n    {\n      \"match\": \"((?<=console\\\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\\\b\",\n      \"name\": \"support.function.console.coffee\"\n    },\n    {\n      \"match\": \"((?<=\\\\.)(apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|unshift|valueOf))\\\\b\",\n      \"name\": \"support.function.method.array.coffee\"\n    },\n    {\n      \"match\": \"((?<=Array\\\\.)(isArray))\\\\b\",\n      \"name\": \"support.function.static.array.coffee\"\n    },\n    {\n      \"match\": \"((?<=Object\\\\.)(create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|isnt|keys|preventExtensions|seal))\\\\b\",\n      \"name\": \"support.function.static.object.coffee\"\n    },\n    {\n      \"match\": \"((?<=Math\\\\.)(abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc))\\\\b\",\n      \"name\": \"support.function.static.math.coffee\"\n    },\n    {\n      \"match\": \"((?<=Number\\\\.)(is(Finite|Integer|NaN)|toInteger))\\\\b\",\n      \"name\": \"support.function.static.number.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(module|exports|__filename|__dirname|global|process)(?!\\\\s*:)\\\\b\",\n      \"name\": \"support.variable.coffee\"\n    },\n    {\n      \"match\": \"\\\\b(Infinity|NaN|undefined)\\\\b\",\n      \"name\": \"constant.language.coffee\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#method_calls\"\n    },\n    {\n      \"include\": \"#function_calls\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#objects\"\n    },\n    {\n      \"include\": \"#properties\"\n    },\n    {\n      \"match\": \"::\",\n      \"name\": \"keyword.operator.prototype.coffee\"\n    },\n    {\n      \"match\": \"(?<!\\\\$)\\\\b[0-9]+[\\\\w$]*\",\n      \"name\": \"invalid.illegal.identifier.coffee\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.coffee\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.coffee\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.square.coffee\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.bracket.square.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\.)\\\\.{3}\",\n          \"name\": \"keyword.operator.slice.exclusive.coffee\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\.{2}\",\n          \"name\": \"keyword.operator.slice.inclusive.coffee\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.coffee\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#instance_variable\"\n    },\n    {\n      \"include\": \"#single_quoted_string\"\n    },\n    {\n      \"include\": \"#double_quoted_string\"\n    }\n  ],\n  \"repository\": {\n    \"arguments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.coffee\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.coffee\"\n            }\n          },\n          \"name\": \"meta.arguments.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(@|@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|'))\",\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.arguments.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.coffee\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.coffee\"\n            }\n          },\n          \"name\": \"string.quoted.double.coffee\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.backslash.coffee\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.backslash.coffee\"\n            },\n            {\n              \"include\": \"#interpolated_coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_calls\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@)?([\\\\w$]+)(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.instance.coffee\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#function_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"name\": \"meta.function-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(@)?([\\\\w$]+)\\n\\\\s*\\n(?=\\\\s+(?!(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))(?=(@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|')))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.instance.coffee\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#function_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.function-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|\\ndecodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|\\nrequire|set(Interval|Timeout)|clear(Interval|Timeout))\\\\b\",\n          \"name\": \"support.function.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.coffee\"\n        },\n        {\n          \"match\": \"\\\\d[\\\\w$]*\",\n          \"name\": \"invalid.illegal.identifier.coffee\"\n        }\n      ]\n    },\n    \"function_params\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.coffee\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.coffee\"\n            }\n          },\n          \"name\": \"meta.parameters.coffee\",\n          \"patterns\": [\n            {\n              \"match\": \"([a-zA-Z_$][\\\\w$]*)(\\\\.\\\\.\\\\.)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.coffee\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.splat.coffee\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:[a-zA-Z_$][\\\\w$]*)?)(\\\\.\\\\.\\\\.)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.readwrite.instance.coffee\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.splat.coffee\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"embedded_comment\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.coffee\"\n            }\n          },\n          \"match\": \"(?<!\\\\\\\\)(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.coffee\"\n        }\n      ]\n    },\n    \"instance_variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@)([a-zA-Z_\\\\$]\\\\w*)?\",\n          \"name\": \"variable.other.readwrite.instance.coffee\"\n        }\n      ]\n    },\n    \"interpolated_coffee\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\#\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.coffee\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"source.coffee.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method_calls\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(\\\\.)|(::))\\\\s*([\\\\w$]+)\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.method.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#method_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"name\": \"meta.method-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(\\\\.)|(::))\\\\s*([\\\\w$]+)\\\\s*(?=\\\\s+(?!(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))(?=(@|@?[\\\\w$]+|[=-]>|\\\\-\\\\d|\\\\[|{|\\\"|')))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.method.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#method_names\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?=\\\\s*(?<![\\\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\\\w$]))|(?=\\\\s*(}|\\\\]|\\\\)|#|$))\",\n          \"name\": \"meta.method-call.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method_names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\\nReadystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\\nBefore(cut|deactivate|unload|update|paste|print|editfocus|activate)|\\nBlur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\\nChange|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\\nDatasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\\nDragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\\nErrorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\\\b\",\n          \"name\": \"support.function.event-handler.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\\nscrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\\nsup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|\\nMonth|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\\nTime|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\\nsavePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\\ncontextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\\ncreateEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\\ntest|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\\nuntaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\\nprint|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\\nfileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\\nforward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\\nabort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\\nreleaseCapture|releaseEvents|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\\nTime|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\\nAttention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\\nmoveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back)\\\\b\",\n          \"name\": \"support.function.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\\nappendChild|appendData|before|blur|canPlayType|captureStream|\\ncaretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\\ncloneContents|cloneNode|cloneRange|close|closest|collapse|\\ncompareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\\nconvertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\\ncreateAttributeNS|createCaption|createCDATASection|createComment|\\ncreateContextualFragment|createDocument|createDocumentFragment|\\ncreateDocumentType|createElement|createElementNS|createEntityReference|\\ncreateEvent|createExpression|createHTMLDocument|createNodeIterator|\\ncreateNSResolver|createProcessingInstruction|createRange|createShadowRoot|\\ncreateTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\\ndeleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\\ndeleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\\nenableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\\nexitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\\ngetAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\\ngetAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\\ngetClientRects|getContext|getDestinationInsertionPoints|getElementById|\\ngetElementsByClassName|getElementsByName|getElementsByTagName|\\ngetElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\\ngetVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\\nhasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\\ninsertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\\ninsertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\\nisPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\\nlookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\\nmoveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\\nparentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\\npreviousSibling|probablySupportsContext|queryCommandEnabled|\\nqueryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\\nquerySelector|querySelectorAll|registerContentHandler|registerElement|\\nregisterProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\\nremoveAttributeNode|removeAttributeNS|removeChild|removeEventListener|\\nremoveItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\\nrequestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\\nscrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\\nsetAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\\nsetCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\\nsetRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\\nslice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\\nsubmit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\\ntoDataURL|toggle|toString|values|write|writeln)\\\\b\",\n          \"name\": \"support.function.dom.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n          \"name\": \"entity.name.function.coffee\"\n        },\n        {\n          \"match\": \"\\\\d[\\\\w$]*\",\n          \"name\": \"invalid.illegal.identifier.coffee\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(x|X)[0-9a-fA-F]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.hex.coffee\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.binary.coffee\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(o|O)?[0-7]+\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.octal.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[eE][+-]?[0-9]+\\\\b)|       # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)|       # .1E+3\\n  (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)|            # 1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)|                # 1.1\\n  (?:\\\\b[0-9]+(?=\\\\.{2,3}))|                  # 1 followed by a slice\\n  (?:\\\\b[0-9]+(\\\\.)\\\\B)|                      # 1.\\n  (?:\\\\B(\\\\.)[0-9]+\\\\b)|                      # .1\\n  (?:\\\\b[0-9]+\\\\b(?!\\\\.))                     # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.coffee\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.decimal.period.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"objects\": {\n      \"patterns\": [\n        {\n          \"match\": \"[A-Z][A-Z0-9_$]*(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"name\": \"constant.other.object.coffee\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w$]*(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"name\": \"variable.other.object.coffee\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:([a-zA-Z$_][\\\\w$]*)?\\\\s+|(?<![\\\\w$]))(and=|or=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(%=|\\\\+=|-=|\\\\*=|&&=|\\\\|\\\\|=|\\\\?=|(?<!\\\\()/=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(&=|\\\\^=|<<=|>>=|>>>=|\\\\|=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.bitwise.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"<<|>>>|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.coffee\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.coffee\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.coffee\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.coffee\"\n        },\n        {\n          \"match\": \"([a-zA-Z$_][\\\\w$]*)?\\\\s*(=|:(?!:))(?![>=])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.assignment.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.coffee\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.coffee\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"keyword.operator.splat.coffee\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.existential.coffee\"\n        },\n        {\n          \"match\": \"%|\\\\*|/|-|\\\\+\",\n          \"name\": \"keyword.operator.coffee\"\n        },\n        {\n          \"match\": \"(?x)\\n\\\\b(?<![\\\\.\\\\$])\\n(?:\\n  (and|or|not) # logical\\n  |\\n  (is|isnt) # comparison\\n)\\n(?!\\\\s*:)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.comparison.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.object.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\??(\\\\.\\\\s*[a-zA-Z_$]\\\\w*|::))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.object.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([A-Z][A-Z0-9_$]*\\\\b\\\\$*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*(\\\\$*[a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.coffee\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(::))\\\\s*([0-9][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.period.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prototype.coffee\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.identifier.coffee\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quoted_string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.coffee\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.coffee\"\n            }\n          },\n          \"name\": \"string.quoted.single.coffee\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.backslash.coffee\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n              \"name\": \"constant.character.escape.backslash.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[wWsSdD]|\\\\.\",\n          \"name\": \"constant.character.character-class.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\",\n          \"name\": \"constant.character.numeric.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\c[A-Z]\",\n          \"name\": \"constant.character.control.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.regexp\"\n        }\n      ]\n    },\n    \"heregexp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\",\n          \"name\": \"keyword.control.anchor.regexp\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*\",\n          \"name\": \"keyword.other.back-reference.regexp\"\n        },\n        {\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\",\n          \"name\": \"keyword.operator.quantifier.regexp\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.or.regexp\"\n        },\n        {\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"name\": \"meta.group.assertion.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#heregexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\((\\\\?:)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"name\": \"meta.group.regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"#heregexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              },\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"name\": \"constant.other.character-class.range.regexp\"\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        },\n        {\n          \"include\": \"#interpolated_coffee\"\n        },\n        {\n          \"include\": \"#embedded_comment\"\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-end-tag\"\n        }\n      ]\n    },\n    \"jsx-expression\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.curly.coffee\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double_quoted_string\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"jsx-attribute\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.coffee\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.coffee\"\n            }\n          },\n          \"match\": \"(?:^|\\\\s+)([-\\\\w.]+)\\\\s*(=)\"\n        },\n        {\n          \"include\": \"#double_quoted_string\"\n        },\n        {\n          \"include\": \"#single_quoted_string\"\n        },\n        {\n          \"include\": \"#jsx-expression\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)([-\\\\w\\\\.]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.coffee\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.coffee\"\n            }\n          },\n          \"end\": \"(/?>)\",\n          \"name\": \"meta.tag.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-end-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(</)([-\\\\w\\\\.]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.coffee\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.coffee\"\n            }\n          },\n          \"end\": \"(/?>)\",\n          \"name\": \"meta.tag.coffee\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cpp-macro.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.embedded.macro.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-cpp-syntax/commit/924295fc44bde1a00fab60da3a2caca4509adb25\",\n  \"name\": \"cpp-macro\",\n  \"scopeName\": \"source.cpp.embedded.macro\",\n  \"patterns\": [\n    {\n      \"include\": \"#ever_present_context\"\n    },\n    {\n      \"include\": \"#constructor_root\"\n    },\n    {\n      \"include\": \"#destructor_root\"\n    },\n    {\n      \"include\": \"#function_definition\"\n    },\n    {\n      \"include\": \"#operator_overload\"\n    },\n    {\n      \"include\": \"#using_namespace\"\n    },\n    {\n      \"include\": \"source.cpp#type_alias\"\n    },\n    {\n      \"include\": \"source.cpp#using_name\"\n    },\n    {\n      \"include\": \"source.cpp#namespace_alias\"\n    },\n    {\n      \"include\": \"#namespace_block\"\n    },\n    {\n      \"include\": \"#extern_block\"\n    },\n    {\n      \"include\": \"#typedef_class\"\n    },\n    {\n      \"include\": \"#typedef_struct\"\n    },\n    {\n      \"include\": \"#typedef_union\"\n    },\n    {\n      \"include\": \"source.cpp#misc_keywords\"\n    },\n    {\n      \"include\": \"source.cpp#standard_declares\"\n    },\n    {\n      \"include\": \"#class_block\"\n    },\n    {\n      \"include\": \"#struct_block\"\n    },\n    {\n      \"include\": \"#union_block\"\n    },\n    {\n      \"include\": \"#enum_block\"\n    },\n    {\n      \"include\": \"source.cpp#template_isolated_definition\"\n    },\n    {\n      \"include\": \"#template_definition\"\n    },\n    {\n      \"include\": \"source.cpp#access_control_keywords\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#static_assert\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#function_pointer\"\n    },\n    {\n      \"include\": \"#evaluation_context\"\n    }\n  ],\n  \"repository\": {\n    \"alignas_attribute\": {\n      \"begin\": \"alignas\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"alignas_operator\": {\n      \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignas\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"alignof_operator\": {\n      \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"assembly\": {\n      \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)(?:(?:\\\\s)+)?((?:volatile)?)\",\n      \"end\": \"(?!\\\\G)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.asm.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.asm.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\n)|$)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.cpp\"\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.assembly.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(R?)(\\\")\",\n              \"end\": \"\\\"|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.encoding.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.assembly.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.assembly.cpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.cpp\",\n              \"contentName\": \"meta.embedded.assembly\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.asm\"\n                },\n                {\n                  \"include\": \"source.x86\"\n                },\n                {\n                  \"include\": \"source.x86_64\"\n                },\n                {\n                  \"include\": \"source.arm\"\n                },\n                {\n                  \"include\": \"source.cpp#backslash_escapes\"\n                },\n                {\n                  \"include\": \"#string_escaped_char\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\[((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.other.asm.label.cpp\"\n                },\n                \"6\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"9\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.delimiter.colon.assembly.cpp\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp_attributes\"\n        },\n        {\n          \"include\": \"#gcc_attributes\"\n        },\n        {\n          \"include\": \"#ms_attributes\"\n        },\n        {\n          \"include\": \"#alignas_attribute\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"{\",\n      \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.cpp\"\n        }\n      },\n      \"name\": \"meta.block.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_body_context\"\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n      \"end\": \"\\\\*\\\\/|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.cpp\"\n        }\n      },\n      \"name\": \"comment.block.cpp\"\n    },\n    \"builtin_storage_type_initilizer\": {\n      \"begin\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)(?:\\\\s)*+(?<!\\\\w)(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.initializer.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)case(?!\\\\w))\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"class_block\": {\n      \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.class.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.class.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.head.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.body.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(?:(?:\\\\s)+)?+(\\\\/\\\\/[!\\\\/]+)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.italic.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.bold.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.inline.raw.string.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"in|out\",\n                          \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"variable.parameter.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                  \"name\": \"storage.type.class.gtkdoc.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\"\n        },\n        {\n          \"begin\": \"(?:(?:\\\\s)+)?+\\\\/\\\\*[!*]+(?:(?:(?:\\\\n)|$)|(?=\\\\s))\",\n          \"end\": \"[!*]*\\\\*\\\\/|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.cpp#emacs_file_banner\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"source.cpp#invalid_comment_end\"\n        }\n      ]\n    },\n    \"constructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constructor_root\": {\n      \"begin\": \"\\\\s*+((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.constructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cpp_attributes\": {\n      \"begin\": \"\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"curly_initializer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\{)\",\n      \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"name\": \"meta.initialization.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"decltype\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"decltype_specifier\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)default(?!\\\\w))\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.default.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"destructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(~(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructor_root\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))~\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)~(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.member.destructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"diagnostic\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:error|warning)))\\\\b(?:(?:\\\\s)+)?\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$7.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {}\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.diagnostic.$reference(directive).cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"(?:(\\\")|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"(?:(')|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"string.unquoted.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"enum_block\": {\n      \"begin\": \"((?<!\\\\w)enum(?!\\\\w))(?:(?:\\\\s)+(class|struct))?(?:(?:(?:\\\\s)+|((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\))))|(?={))(?:(?:\\\\s)+)?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)(?:(?:(?:\\\\s)+)?(:)(?:(?:\\\\s)+)?(?:((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?(::))?(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))?\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.enum.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.enum.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.enum.enum-key.$2.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.type-specifier.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"11\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"14\": {\n          \"name\": \"storage.type.integral.$14.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.enum.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.head.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.body.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"source.cpp#enumerator_list\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#semicolon\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"source.cpp#member_access\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"source.cpp#wordlike_operators\"\n        },\n        {\n          \"include\": \"source.cpp#type_casting_operators\"\n        },\n        {\n          \"include\": \"source.cpp#control_flow_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#exception_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#the_this_keyword\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"source.cpp#semicolon\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"ever_present_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"source.cpp#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"source.cpp#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"source.cpp#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"source.cpp#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"extern_block\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(extern)(?=\\\\s*\\\\\\\")\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.extern.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.extern.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.extern.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.head.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.body.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function_body_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#using_namespace\"\n        },\n        {\n          \"include\": \"source.cpp#type_alias\"\n        },\n        {\n          \"include\": \"source.cpp#using_name\"\n        },\n        {\n          \"include\": \"source.cpp#namespace_alias\"\n        },\n        {\n          \"include\": \"#typedef_class\"\n        },\n        {\n          \"include\": \"#typedef_struct\"\n        },\n        {\n          \"include\": \"#typedef_union\"\n        },\n        {\n          \"include\": \"source.cpp#misc_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#standard_declares\"\n        },\n        {\n          \"include\": \"#class_block\"\n        },\n        {\n          \"include\": \"#struct_block\"\n        },\n        {\n          \"include\": \"#union_block\"\n        },\n        {\n          \"include\": \"#enum_block\"\n        },\n        {\n          \"include\": \"source.cpp#access_control_keywords\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#static_assert\"\n        },\n        {\n          \"include\": \"#assembly\"\n        },\n        {\n          \"include\": \"#function_pointer\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"include\": \"source.cpp#goto_statement\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"source.cpp#label\"\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.function.call.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {},\n        \"12\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"function_definition\": {\n      \"begin\": \"(?:(?:^|\\\\G|(?<=;|\\\\}))|(?<=>))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)template(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.$1.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"storage.modifier.$12.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"29\": {},\n        \"30\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"31\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"32\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"34\": {},\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"41\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"43\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"45\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"46\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"47\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"48\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"49\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"51\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"52\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"54\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"55\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"56\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"57\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"58\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"60\": {},\n        \"61\": {\n          \"name\": \"entity.name.function.definition.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"63\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"65\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#parameter_or_maybe_value\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<=^|\\\\))(?:(?:\\\\s)+)?(->)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)?(?![\\\\w<:.]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.function.return-type.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"meta.qualified_type.cpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                      \"name\": \"storage.type.$0.cpp\"\n                    },\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#storage_types\"\n                    },\n                    {\n                      \"include\": \"source.cpp#number_literal\"\n                    },\n                    {\n                      \"include\": \"#string_context\"\n                    },\n                    {\n                      \"include\": \"source.cpp#comma\"\n                    },\n                    {\n                      \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                    },\n                    {\n                      \"begin\": \"<\",\n                      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                        }\n                      },\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                        }\n                      },\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_context\"\n                        }\n                      ]\n                    },\n                    {\n                      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                      \"name\": \"entity.name.type.cpp\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"source.cpp#number_literal\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"10\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"11\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"13\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"14\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"15\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"16\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                      \"name\": \"entity.name.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"17\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"18\": {},\n                \"19\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"20\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"21\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"22\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"23\": {}\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_parameter_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ]\n    },\n    \"function_pointer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.other.definition.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"function_pointer_parameter\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.parameter.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"gcc_attributes\": {\n      \"begin\": \"__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(\",\n      \"end\": \"\\\\)\\\\s*\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"inheritance_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.inheritance.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.access.$0.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)virtual(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.virtual.cpp\"\n        },\n        {\n          \"match\": \"(?<=protected|virtual|private|public|,|:)(?:(?:\\\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"9\": {},\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {}\n          }\n        }\n      ]\n    },\n    \"lambdas\": {\n      \"begin\": \"(?:(?<=[^\\\\s]|^)(?<![\\\\w\\\\]\\\\)\\\\[\\\\*&\\\">])|(?<=\\\\Wreturn|^return))(?:(?:\\\\s)+)?(\\\\[(?!\\\\[| *+\\\"| *+\\\\d))((?:[^\\\\[\\\\]]|((?<!\\\\[)\\\\[(?!\\\\[)(?:[^\\\\[\\\\]]*+\\\\g<3>?)++\\\\]))*+)(\\\\](?!((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))[\\\\[\\\\];]))\",\n      \"end\": \"(?<=[;}])|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.capture.begin.lambda.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.lambda.capture.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#the_this_keyword\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?=\\\\]|\\\\z|$)|(,))|(\\\\=))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.capture.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"3\": {},\n        \"4\": {\n          \"name\": \"punctuation.definition.capture.end.lambda.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.parameters.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\\\w)\",\n          \"name\": \"storage.modifier.lambda.$0.cpp\"\n        },\n        {\n          \"match\": \"(->)((?:.+?(?=\\\\{|$))?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lambda.return-type.cpp\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.return-type.lambda.cpp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.body.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?line\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.line.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.line.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"comment.line.double-slash.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"macro\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?define\\\\b)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.macro.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?:(?:\\\\s)+)?(\\\\()([^\\\\(]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.preprocessor.cpp\"\n            },\n            \"2\": {\n              \"name\": \"meta.function.preprocessor.parameters.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[(,])(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.parameter.preprocessor.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.cpp\"\n                },\n                {\n                  \"match\": \"\\\\.\\\\.\\\\.\",\n                  \"name\": \"punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.end.preprocessor.cpp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#macro_context\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        }\n      ]\n    },\n    \"macro_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.macro\"\n        }\n      ]\n    },\n    \"method_access\": {\n      \"begin\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.function.member.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"ms_attributes\": {\n      \"begin\": \"__declspec\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        }\n      ]\n    },\n    \"namespace_block\": {\n      \"begin\": \"((?<!\\\\w)namespace(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.namespace.cpp\"\n        },\n        \"1\": {\n          \"name\": \"keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.namespace.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.head.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<4>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(::)(?:(?:\\\\s)+)?(inline))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#scope_resolution_namespace_block_inner_generated\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"4\": {},\n                \"5\": {\n                  \"name\": \"entity.name.namespace.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"storage.modifier.inline.cpp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.body.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"noexcept_operator\": {\n      \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.noexcept\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"operator_overload\": {\n      \"begin\": \"(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(?:(?:((?:(?:delete\\\\[\\\\])|(?:delete)|(?:new\\\\[\\\\])|(?:new)|(?:\\\\->\\\\*)|(?:<<=)|(?:>>=)|(?:<=>)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:\\\\(\\\\))|(?:\\\\[\\\\])|(?:\\\\->)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:<<)|(?:>>)|(?:<=)|(?:>=)|(?:==)|(?:!=)|(?:&&)|(?:\\\\|\\\\|)|(?:\\\\+=)|(?:\\\\-=)|(?:\\\\*=)|(?:\\\\/=)|(?:%=)|(?:&=)|(?:\\\\^=)|(?:\\\\|=)|(?:\\\\+)|(?:\\\\-)|!|~|(?:\\\\*)|&|(?:\\\\*)|(?:\\\\/)|%|(?:\\\\+)|(?:\\\\-)|<|>|&|(?:\\\\^)|(?:\\\\|)|=|,))|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:\\\\[\\\\])?)))|(\\\"\\\")((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\<|\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\"\n        },\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"source.cpp#comma\"\n            },\n            {\n              \"include\": \"source.cpp#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"34\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"39\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"41\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"43\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"45\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"46\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"47\": {},\n        \"48\": {\n          \"name\": \"keyword.other.operator.overload.cpp\"\n        },\n        \"49\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"51\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"52\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"54\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"55\": {},\n        \"56\": {\n          \"name\": \"entity.name.operator.cpp\"\n        },\n        \"57\": {\n          \"name\": \"entity.name.operator.type.cpp\"\n        },\n        \"58\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"entity.name.operator.type.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"entity.name.operator.type.reference.cpp\"\n            }\n          ]\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"60\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"61\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"63\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"65\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"66\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"67\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"68\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"69\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"70\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"71\": {\n          \"name\": \"entity.name.operator.type.array.cpp\"\n        },\n        \"72\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"73\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"74\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"75\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"76\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"77\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"78\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"79\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"80\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"81\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.operator-overload.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.operator-overload\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignas\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.typeid\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.noexcept\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.cpp\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.cpp\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()\\\\/=\",\n          \"name\": \"keyword.operator.assignment.compound.cpp\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cpp\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.cpp\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.cpp\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.cpp\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.cpp\"\n        },\n        {\n          \"include\": \"source.cpp#assignment_operator\"\n        },\n        {\n          \"match\": \"%|\\\\*|\\\\/|-|\\\\+\",\n          \"name\": \"keyword.operator.arithmetic.cpp\"\n        },\n        {\n          \"include\": \"#ternary_operator\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\)|,|\\\\[|=|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter_or_maybe_value\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#curly_initializer\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=(?:\\\\)|,|\\\\[|=|\\\\/\\\\/|(?:(?:\\\\n)|$)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#over_qualified_types\"\n        },\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"punctuation.separator.colon.range-based.cpp\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.pragma.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.pragma.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.cpp\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor_conditional_defined\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#d9bc4796b0b_preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"source.cpp#macro_name\"\n        },\n        {\n          \"include\": \"source.cpp#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_defined\": {\n      \"begin\": \"((?<!\\\\w)defined(?!\\\\w))(\\\\()\",\n      \"end\": \"(?:\\\\)|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.defined.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#macro_name\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.preprocessor.conditional.cpp\"\n    },\n    \"preprocessor_conditional_range\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:(?:ifndef|ifdef)|if))\",\n      \"end\": \"^(?!\\\\s*+#\\\\s*(?:else|endif))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.$6.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {}\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=ifndef|ifdef|if)\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.preprocessor.conditional.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor_conditional_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"source.cpp#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"source.cpp#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"source.cpp#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"source.cpp#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"source.cpp#macro_argument\"\n        }\n      ]\n    },\n    \"sizeof_operator\": {\n      \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"sizeof_variadic_operator\": {\n      \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"name\": \"meta.bracket.square.access\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square\"\n        }\n      },\n      \"end\": \"\\\\]|(?=(?<!\\\\\\\\)\\n)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"static_assert\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(,)(?:(?:\\\\s)+)?(?=(?:L|u8|u|U(?:(?:\\\\s)+)?\\\\\\\")?)\",\n          \"end\": \"(?=\\\\))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"meta.static_assert.message.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#storage_specifiers\"\n        },\n        {\n          \"include\": \"source.cpp#inline_builtin_storage_type\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"source.cpp#typename\"\n        }\n      ]\n    },\n    \"string_context\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:u|u8|U|L)?)\\\"\",\n          \"end\": \"\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8})\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-7]{1,3}\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#string_escapes_context_c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'\",\n          \"end\": \"'|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.cpp#string_escapes_context_c\"\n            },\n            {\n              \"include\": \"source.cpp#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:(?:_r|re)|regex)\\\\(\",\n          \"end\": \"\\\\)(?:(?:_r|re)|regex)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.regex.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:glsl|GLSL)\\\\(\",\n          \"end\": \"\\\\)(?:glsl|GLSL)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.glsl.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\(\",\n          \"end\": \"\\\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.sql.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:u|u8|U|L)?R)\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"end\": \"\\\\)\\\\2(\\\\3)\\\"|(?=(?<!\\\\\\\\)\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            },\n            \"1\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw\"\n        }\n      ]\n    },\n    \"struct_block\": {\n      \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.struct.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.struct.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.struct.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.head.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.body.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch_conditional_parentheses\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.switch.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)switch(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.switch.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.switch.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.head.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.body.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template_call_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_template_call_inner_generated\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#comma_in_template_argument\"\n        },\n        {\n          \"include\": \"source.cpp#qualified_type\"\n        }\n      ]\n    },\n    \"template_call_range\": {\n      \"begin\": \"<\",\n      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n        }\n      },\n      \"name\": \"meta.template.call.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#template_call_context\"\n        }\n      ]\n    },\n    \"template_definition\": {\n      \"begin\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)\",\n      \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      },\n      \"name\": \"meta.template.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\w)(?:(?:\\\\s)+)?<\",\n          \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#template_definition_context\"\n        }\n      ]\n    },\n    \"template_definition_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp#scope_resolution_template_definition_inner_generated\"\n        },\n        {\n          \"include\": \"source.cpp#template_definition_argument\"\n        },\n        {\n          \"include\": \"source.cpp#template_argument_defaulted\"\n        },\n        {\n          \"include\": \"source.cpp#template_call_innards\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"ternary_operator\": {\n      \"begin\": \"\\\\?\",\n      \"end\": \":|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"source.cpp#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"source.cpp#member_access\"\n        },\n        {\n          \"include\": \"source.cpp#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"source.cpp#memory_operators\"\n        },\n        {\n          \"include\": \"source.cpp#wordlike_operators\"\n        },\n        {\n          \"include\": \"source.cpp#type_casting_operators\"\n        },\n        {\n          \"include\": \"source.cpp#control_flow_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#exception_keywords\"\n        },\n        {\n          \"include\": \"source.cpp#the_this_keyword\"\n        },\n        {\n          \"include\": \"source.cpp#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"source.cpp#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"source.cpp#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"source.cpp#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"source.cpp#semicolon\"\n        },\n        {\n          \"include\": \"source.cpp#comma\"\n        }\n      ],\n      \"applyEndPatternLast\": 1\n    },\n    \"typedef_class\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)class(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.class.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.class.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.class.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.head.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.body.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.class.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_function_pointer\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=.*\\\\(\\\\*\\\\s*(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\s*\\\\))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n          \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"source.cpp#comma\"\n                },\n                {\n                  \"include\": \"source.cpp#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">|(?=(?<!\\\\\\\\)\\n)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"13\": {},\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"15\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"16\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"18\": {},\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"21\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"22\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"23\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"24\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"25\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"26\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"27\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"28\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"29\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"30\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"31\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"32\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n            },\n            \"33\": {\n              \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n            },\n            \"34\": {\n              \"name\": \"entity.name.type.alias.cpp entity.name.type.pointer.function.cpp\"\n            },\n            \"35\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n            },\n            \"36\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            \"37\": {\n              \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n            },\n            \"38\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n            },\n            \"39\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_struct\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)struct(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.struct.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.struct.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.struct.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.head.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.body.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_union\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)union(?!\\\\w))\",\n      \"end\": \"(?<=;)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.union.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"source.cpp#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.union.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cpp#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.union.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.head.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.body.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.union.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.cpp#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.cpp#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid_operator\": {\n      \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.typeid\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"union_block\": {\n      \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.union.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"source.cpp#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.union.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.cpp#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.union.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.head.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.body.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)|(?=(?<!\\\\\\\\)\\n)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"using_namespace\": {\n      \"begin\": \"(?<!\\\\w)(using)(?:\\\\s)+(namespace)(?:\\\\s)+((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<6>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?=;|\\\\n)\",\n      \"end\": \";|(?=(?<!\\\\\\\\)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"6\": {},\n        \"7\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.using-namespace.cpp\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cpp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-cpp-syntax/commit/924295fc44bde1a00fab60da3a2caca4509adb25\",\n  \"name\": \"cpp\",\n  \"scopeName\": \"source.cpp\",\n  \"patterns\": [\n    {\n      \"include\": \"#ever_present_context\"\n    },\n    {\n      \"include\": \"#constructor_root\"\n    },\n    {\n      \"include\": \"#destructor_root\"\n    },\n    {\n      \"include\": \"#function_definition\"\n    },\n    {\n      \"include\": \"#operator_overload\"\n    },\n    {\n      \"include\": \"#using_namespace\"\n    },\n    {\n      \"include\": \"#type_alias\"\n    },\n    {\n      \"include\": \"#using_name\"\n    },\n    {\n      \"include\": \"#namespace_alias\"\n    },\n    {\n      \"include\": \"#namespace_block\"\n    },\n    {\n      \"include\": \"#extern_block\"\n    },\n    {\n      \"include\": \"#typedef_class\"\n    },\n    {\n      \"include\": \"#typedef_struct\"\n    },\n    {\n      \"include\": \"#typedef_union\"\n    },\n    {\n      \"include\": \"#misc_keywords\"\n    },\n    {\n      \"include\": \"#standard_declares\"\n    },\n    {\n      \"include\": \"#class_block\"\n    },\n    {\n      \"include\": \"#struct_block\"\n    },\n    {\n      \"include\": \"#union_block\"\n    },\n    {\n      \"include\": \"#enum_block\"\n    },\n    {\n      \"include\": \"#template_isolated_definition\"\n    },\n    {\n      \"include\": \"#template_definition\"\n    },\n    {\n      \"include\": \"#access_control_keywords\"\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"include\": \"#static_assert\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#function_pointer\"\n    },\n    {\n      \"include\": \"#evaluation_context\"\n    }\n  ],\n  \"repository\": {\n    \"access_control_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\\\s)+)?(:))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.type.modifier.access.control.$4.cpp\"\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.access.control.cpp\"\n        }\n      }\n    },\n    \"alignas_attribute\": {\n      \"begin\": \"alignas\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"alignas_operator\": {\n      \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignas\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"alignof_operator\": {\n      \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.alignof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"assembly\": {\n      \"begin\": \"(\\\\b(?:__asm__|asm)\\\\b)(?:(?:\\\\s)+)?((?:volatile)?)\",\n      \"end\": \"(?!\\\\G)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.asm.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.asm.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\n)|$)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.cpp\"\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.assembly.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(R?)(\\\")\",\n              \"end\": \"\\\"\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.encoding.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin.assembly.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.assembly.cpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.cpp\",\n              \"contentName\": \"meta.embedded.assembly\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.asm\"\n                },\n                {\n                  \"include\": \"source.x86\"\n                },\n                {\n                  \"include\": \"source.x86_64\"\n                },\n                {\n                  \"include\": \"source.arm\"\n                },\n                {\n                  \"include\": \"#backslash_escapes\"\n                },\n                {\n                  \"include\": \"#string_escaped_char\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.assembly.inner.cpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\[((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.other.asm.label.cpp\"\n                },\n                \"6\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"9\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.delimiter.colon.assembly.cpp\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assignment_operator\": {\n      \"match\": \"\\\\=\",\n      \"name\": \"keyword.operator.assignment.cpp\"\n    },\n    \"attributes_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp_attributes\"\n        },\n        {\n          \"include\": \"#gcc_attributes\"\n        },\n        {\n          \"include\": \"#ms_attributes\"\n        },\n        {\n          \"include\": \"#alignas_attribute\"\n        }\n      ]\n    },\n    \"backslash_escapes\": {\n      \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n      \"name\": \"constant.character.escape\"\n    },\n    \"block\": {\n      \"begin\": \"{\",\n      \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.cpp\"\n        }\n      },\n      \"name\": \"meta.block.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_body_context\"\n        }\n      ]\n    },\n    \"block_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\*)\",\n      \"end\": \"\\\\*\\\\/\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.cpp\"\n        }\n      },\n      \"name\": \"comment.block.cpp\"\n    },\n    \"builtin_storage_type_initilizer\": {\n      \"begin\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)(?:\\\\s)*+(?<!\\\\w)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.initializer.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"case_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)case(?!\\\\w))\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.case.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"class_block\": {\n      \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.class.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.class.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.head.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n            }\n          },\n          \"name\": \"meta.body.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.class.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class_declare\": {\n      \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n    },\n    \"comma_in_template_argument\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(?:(?:\\\\s)+)?+(\\\\/\\\\/[!\\\\/]+)\",\n          \"end\": \"(?<=\\\\n)(?<!\\\\\\\\\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"comment.line.double-slash.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\/\\\\*[!*]+(?=\\\\s))(.+)([!*]*\\\\*\\\\/)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.italic.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.bold.doxygen.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"markup.inline.raw.string.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.class.doxygen.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"in|out\",\n                          \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"variable.parameter.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n                  \"name\": \"storage.type.class.gtkdoc.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\"\n        },\n        {\n          \"begin\": \"(?:(?:\\\\s)+)?+\\\\/\\\\*[!*]+(?:(?:(?:\\\\n)|$)|(?=\\\\s))\",\n          \"end\": \"[!*]*\\\\*\\\\/\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.documentation.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.documentation.cpp\"\n            }\n          },\n          \"name\": \"comment.block.documentation.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:callergraph|callgraph|else|endif|f\\\\$|f\\\\[|f\\\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\\\$|\\\\#|<|>|%|\\\"|\\\\.|=|::|\\\\||\\\\-\\\\-|\\\\-\\\\-\\\\-)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|em|e))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.italic.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]b)(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.bold.doxygen.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:c|p))(?:\\\\s)+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inline.raw.string.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"((?<=[\\\\s*!\\\\/])[\\\\\\\\@]param)(?:\\\\s*\\\\[((?:,?(?:(?:\\\\s)+)?(?:in|out)(?:(?:\\\\s)+)?)+)\\\\])?(?:\\\\s)+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.doxygen.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"in|out\",\n                      \"name\": \"keyword.other.parameter.direction.$0.cpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?<=[\\\\s*!\\\\/])[\\\\\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\\\b(?:\\\\{[^}]*\\\\})?\",\n              \"name\": \"storage.type.class.doxygen.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\b[A-Z]+:|@[a-z_]+:)\",\n              \"name\": \"storage.type.class.gtkdoc.cpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#emacs_file_banner\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#invalid_comment_end\"\n        }\n      ]\n    },\n    \"constructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constructor_root\": {\n      \"begin\": \"\\\\s*+((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.constructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.constructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.constructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.constructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            },\n            {\n              \"begin\": \":\",\n              \"end\": \"(?=\\\\{)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.initializers.cpp\"\n                }\n              },\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?(\\\\()\",\n                  \"end\": \"\\\\)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_range\"\n                        }\n                      ]\n                    },\n                    \"3\": {},\n                    \"4\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(\\\\{)\",\n                  \"end\": \"\\\\}\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.call.initializer.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp\"\n                    }\n                  },\n                  \"contentName\": \"meta.parameter.initialization\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#evaluation_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.constructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.constructor\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.constructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control_flow_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:co_return)|(?:continue)|(?:co_await)|(?:co_yield)|(?:default)|(?:switch)|(?:return)|(?:throw)|(?:while)|(?:catch)|(?:break)|(?:else)|(?:goto)|(?:case)|(?:for)|(?:try)|(?:do)|(?:if))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.$3.cpp\"\n        }\n      }\n    },\n    \"cpp_attributes\": {\n      \"begin\": \"\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"curly_initializer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\{)\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.curly.initializer.cpp\"\n        }\n      },\n      \"name\": \"meta.initialization.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"d9bc4796b0b_module_import\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((import))(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))(?:(?:\\\\s)+)?(;?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.directive.import.cpp\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.other.lt-gt.include.cpp\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"string.quoted.double.include.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"entity.name.other.preprocessor.macro.include.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.import.cpp\"\n    },\n    \"d9bc4796b0b_preprocessor_number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"decltype\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"decltype_specifier\": {\n      \"begin\": \"((?<!\\\\w)decltype(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.decltype.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.decltype.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.decltype\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"default_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)default(?!\\\\w))\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.default.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.case.default.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.case.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"destructor_inline\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(~(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"12\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#functional_specifiers_pre_parameters\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"name\": \"entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructor_root\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)(((?>(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))::((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))~\\\\14((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\())\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.destructor.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?=:)\",\n              \"name\": \"entity.name.type.destructor.cpp\"\n            },\n            {\n              \"match\": \"(?<=:)~(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.function.definition.special.member.destructor.cpp\"\n            },\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.member.destructor.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"match\": \"(\\\\=)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(default)|(delete))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"keyword.other.default.constructor.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.other.delete.constructor.cpp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.member.destructor\",\n              \"patterns\": []\n            },\n            {\n              \"match\": \"((?:(?:final)|(?:override)))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$1.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.member.destructor.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"diagnostic\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:error|warning)))\\\\b(?:(?:\\\\s)+)?\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.diagnostic.$7.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {}\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.diagnostic.$reference(directive).cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"(?:(\\\")|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"(?:(')|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[^'\\\"]\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"string.unquoted.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"emacs_file_banner\": {\n      \"match\": \"(?:(^(?:(?:\\\\s)+)?((\\\\/\\\\/)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\4(?:(?:\\\\s)+)?(?:\\\\n|$)))|(^(?:(?:\\\\s)+)?((\\\\/\\\\*)(?:(?:\\\\s)+)?((?:[#;\\\\/=*C~]+)++(?![#;\\\\/=*C~]))(?:(?:\\\\s)+)?.+(?:(?:\\\\s)+)?\\\\8(?:(?:\\\\s)+)?\\\\*\\\\/)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.toc-list.banner.double-slash.cpp\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.cpp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        },\n        \"4\": {\n          \"name\": \"meta.banner.character.cpp\"\n        },\n        \"5\": {\n          \"name\": \"meta.toc-list.banner.block.cpp\"\n        },\n        \"6\": {\n          \"name\": \"comment.line.banner.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        },\n        \"8\": {\n          \"name\": \"meta.banner.character.cpp\"\n        }\n      }\n    },\n    \"empty_square_brackets\": {\n      \"name\": \"storage.modifier.array.bracket.square\",\n      \"match\": \"(?<!delete)\\\\[(?:(?:\\\\s)+)?\\\\]\"\n    },\n    \"enum_block\": {\n      \"begin\": \"((?<!\\\\w)enum(?!\\\\w))(?:(?:\\\\s)+(class|struct))?(?:(?:(?:\\\\s)+|((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\))))|(?={))(?:(?:\\\\s)+)?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)(?:(?:(?:\\\\s)+)?(:)(?:(?:\\\\s)+)?(?:((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?(::))?(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))?\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.enum.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.enum.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.enum.enum-key.$2.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.colon.type-specifier.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"11\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"14\": {\n          \"name\": \"storage.type.integral.$14.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.enum.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.head.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.enum.cpp\"\n            }\n          },\n          \"name\": \"meta.body.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#enumerator_list\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#semicolon\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.enum.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"enum_declare\": {\n      \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"enumerator_list\": {\n      \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?(?:(?:\\\\s)+)?(?:(\\\\=)(?:(?:\\\\s)+)?(.+?)(?:(?:\\\\s)+)?)?(?:(?:((?:[,;](?!')|\\\\n))|(?=\\\\}[^']))|(?=(?:\\\\/\\\\/|\\\\/\\\\*)))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.enummember.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#semicolon\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.enum.definition.cpp\"\n    },\n    \"evaluation_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#wordlike_operators\"\n        },\n        {\n          \"include\": \"#type_casting_operators\"\n        },\n        {\n          \"include\": \"#control_flow_keywords\"\n        },\n        {\n          \"include\": \"#exception_keywords\"\n        },\n        {\n          \"include\": \"#the_this_keyword\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"ever_present_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"exception_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:throw)|(?:catch)|(?:try))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.exception.$3.cpp\"\n        }\n      }\n    },\n    \"extern_block\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(extern)(?=\\\\s*\\\\\\\")\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.extern.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.extern.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.extern.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.head.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.extern.cpp\"\n            }\n          },\n          \"name\": \"meta.body.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.extern.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"function_body_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#using_namespace\"\n        },\n        {\n          \"include\": \"#type_alias\"\n        },\n        {\n          \"include\": \"#using_name\"\n        },\n        {\n          \"include\": \"#namespace_alias\"\n        },\n        {\n          \"include\": \"#typedef_class\"\n        },\n        {\n          \"include\": \"#typedef_struct\"\n        },\n        {\n          \"include\": \"#typedef_union\"\n        },\n        {\n          \"include\": \"#misc_keywords\"\n        },\n        {\n          \"include\": \"#standard_declares\"\n        },\n        {\n          \"include\": \"#class_block\"\n        },\n        {\n          \"include\": \"#struct_block\"\n        },\n        {\n          \"include\": \"#union_block\"\n        },\n        {\n          \"include\": \"#enum_block\"\n        },\n        {\n          \"include\": \"#access_control_keywords\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#static_assert\"\n        },\n        {\n          \"include\": \"#assembly\"\n        },\n        {\n          \"include\": \"#function_pointer\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"include\": \"#goto_statement\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        },\n        {\n          \"include\": \"#label\"\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.function.call.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {},\n        \"12\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.call.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"function_definition\": {\n      \"begin\": \"(?:(?:^|\\\\G|(?<=;|\\\\}))|(?<=>))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)template(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<60>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\\\\b(?<!\\\\Wreinterpret_cast|^reinterpret_cast|\\\\Watomic_noexcept|^atomic_noexcept|\\\\Wuint_least16_t|^uint_least16_t|\\\\Wuint_least32_t|^uint_least32_t|\\\\Wuint_least64_t|^uint_least64_t|\\\\Wint_least16_t|^int_least16_t|\\\\Wint_least32_t|^int_least32_t|\\\\Wint_least64_t|^int_least64_t|\\\\Wuint_least8_t|^uint_least8_t|\\\\Wuint_fast16_t|^uint_fast16_t|\\\\Wuint_fast32_t|^uint_fast32_t|\\\\Wuint_fast64_t|^uint_fast64_t|\\\\Watomic_cancel|^atomic_cancel|\\\\Watomic_commit|^atomic_commit|\\\\Wdynamic_cast|^dynamic_cast|\\\\Wint_least8_t|^int_least8_t|\\\\Wint_fast16_t|^int_fast16_t|\\\\Wint_fast32_t|^int_fast32_t|\\\\Wint_fast64_t|^int_fast64_t|\\\\Wuint_fast8_t|^uint_fast8_t|\\\\Wthread_local|^thread_local|\\\\Wsynchronized|^synchronized|\\\\Wstatic_cast|^static_cast|\\\\Wsuseconds_t|^suseconds_t|\\\\Wint_fast8_t|^int_fast8_t|\\\\Wconst_cast|^const_cast|\\\\Wuseconds_t|^useconds_t|\\\\Wco_return|^co_return|\\\\Wblksize_t|^blksize_t|\\\\Win_addr_t|^in_addr_t|\\\\Win_port_t|^in_port_t|\\\\Wuintptr_t|^uintptr_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wuintmax_t|^uintmax_t|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wconstexpr|^constexpr|\\\\Wconstexpr|^constexpr|\\\\Wconsteval|^consteval|\\\\Wprotected|^protected|\\\\Wnamespace|^namespace|\\\\Wconstinit|^constinit|\\\\Wco_return|^co_return|\\\\Wnoexcept|^noexcept|\\\\Wnoexcept|^noexcept|\\\\Wcontinue|^continue|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wunsigned|^unsigned|\\\\Wu_quad_t|^u_quad_t|\\\\Wblkcnt_t|^blkcnt_t|\\\\Wuint16_t|^uint16_t|\\\\Wuint32_t|^uint32_t|\\\\Wuint64_t|^uint64_t|\\\\Wintptr_t|^intptr_t|\\\\Wintmax_t|^intmax_t|\\\\Wintmax_t|^intmax_t|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wexplicit|^explicit|\\\\Wvolatile|^volatile|\\\\Wnoexcept|^noexcept|\\\\Wtemplate|^template|\\\\Woperator|^operator|\\\\Wdecltype|^decltype|\\\\Wtypename|^typename|\\\\Wrequires|^requires|\\\\Wco_await|^co_await|\\\\Wco_yield|^co_yield|\\\\Wreflexpr|^reflexpr|\\\\Walignof|^alignof|\\\\Walignas|^alignas|\\\\Wdefault|^default|\\\\Wwchar_t|^wchar_t|\\\\Wu_short|^u_short|\\\\Wqaddr_t|^qaddr_t|\\\\Wcaddr_t|^caddr_t|\\\\Wdaddr_t|^daddr_t|\\\\Wfixpt_t|^fixpt_t|\\\\Wnlink_t|^nlink_t|\\\\Wsegsz_t|^segsz_t|\\\\Wswblk_t|^swblk_t|\\\\Wclock_t|^clock_t|\\\\Wssize_t|^ssize_t|\\\\Wint16_t|^int16_t|\\\\Wint32_t|^int32_t|\\\\Wint64_t|^int64_t|\\\\Wuint8_t|^uint8_t|\\\\Wnullptr|^nullptr|\\\\Wmutable|^mutable|\\\\Wvirtual|^virtual|\\\\Wmutable|^mutable|\\\\Wprivate|^private|\\\\Wtypedef|^typedef|\\\\W__asm__|^__asm__|\\\\Wconcept|^concept|\\\\Wsizeof|^sizeof|\\\\Wdelete|^delete|\\\\Wnot_eq|^not_eq|\\\\Wbitand|^bitand|\\\\Wand_eq|^and_eq|\\\\Wxor_eq|^xor_eq|\\\\Wtypeid|^typeid|\\\\Wswitch|^switch|\\\\Wreturn|^return|\\\\Wsigned|^signed|\\\\Wdouble|^double|\\\\Wu_char|^u_char|\\\\Wu_long|^u_long|\\\\Wushort|^ushort|\\\\Wquad_t|^quad_t|\\\\Wmode_t|^mode_t|\\\\Wsize_t|^size_t|\\\\Wtime_t|^time_t|\\\\Wint8_t|^int8_t|\\\\Wstruct|^struct|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Winline|^inline|\\\\Wfriend|^friend|\\\\Wpublic|^public|\\\\Wexport|^export|\\\\Wimport|^import|\\\\Wmodule|^module|\\\\Wcompl|^compl|\\\\Wbitor|^bitor|\\\\Wthrow|^throw|\\\\Wor_eq|^or_eq|\\\\Wwhile|^while|\\\\Wcatch|^catch|\\\\Wbreak|^break|\\\\Wshort|^short|\\\\Wfloat|^float|\\\\Wu_int|^u_int|\\\\Wdiv_t|^div_t|\\\\Wdev_t|^dev_t|\\\\Wgid_t|^gid_t|\\\\Wino_t|^ino_t|\\\\Wkey_t|^key_t|\\\\Wpid_t|^pid_t|\\\\Woff_t|^off_t|\\\\Wuid_t|^uid_t|\\\\Wfalse|^false|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wconst|^const|\\\\Wconst|^const|\\\\Wusing|^using|\\\\Welse|^else|\\\\Wgoto|^goto|\\\\Wcase|^case|\\\\Wauto|^auto|\\\\Wvoid|^void|\\\\Wchar|^char|\\\\Wlong|^long|\\\\Wbool|^bool|\\\\Wuint|^uint|\\\\Wid_t|^id_t|\\\\Wid_t|^id_t|\\\\WNULL|^NULL|\\\\Wtrue|^true|\\\\Wenum|^enum|\\\\Wthis|^this|\\\\Wnot|^not|\\\\Wnew|^new|\\\\Wxor|^xor|\\\\Wand|^and|\\\\Wfor|^for|\\\\Wtry|^try|\\\\Wint|^int|\\\\Wasm|^asm|\\\\Wor|^or|\\\\Wdo|^do|\\\\Wif|^if)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.$1.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"storage.modifier.$12.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"24\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"26\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"29\": {},\n        \"30\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"31\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"32\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"34\": {},\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"41\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"43\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"45\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"46\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"47\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"48\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"49\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"51\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"52\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"54\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"55\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"56\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"57\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"58\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"60\": {},\n        \"61\": {\n          \"name\": \"entity.name.function.definition.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"63\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"65\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#parameter_or_maybe_value\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<=^|\\\\))(?:(?:\\\\s)+)?(->)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<23>?)+>)?(?![\\\\w<:.]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.function.return-type.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"meta.qualified_type.cpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                      \"name\": \"storage.type.$0.cpp\"\n                    },\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#storage_types\"\n                    },\n                    {\n                      \"include\": \"#number_literal\"\n                    },\n                    {\n                      \"include\": \"#string_context\"\n                    },\n                    {\n                      \"include\": \"#comma\"\n                    },\n                    {\n                      \"include\": \"#scope_resolution_inner_generated\"\n                    },\n                    {\n                      \"begin\": \"<\",\n                      \"end\": \">\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                        }\n                      },\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                        }\n                      },\n                      \"name\": \"meta.template.call.cpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#template_call_context\"\n                        }\n                      ]\n                    },\n                    {\n                      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                      \"name\": \"entity.name.type.cpp\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attributes_context\"\n                    },\n                    {\n                      \"include\": \"#number_literal\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"10\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"11\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"13\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"14\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"15\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"16\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                      \"name\": \"entity.name.scope-resolution.type.cpp\"\n                    },\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"17\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"18\": {},\n                \"19\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"20\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"21\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"22\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"23\": {}\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_parameter_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"function_pointer\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.other.definition.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"function_pointer_parameter\": {\n      \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n        },\n        \"33\": {\n          \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n        },\n        \"34\": {\n          \"name\": \"variable.parameter.pointer.function.cpp\"\n        },\n        \"35\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"37\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"38\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n        },\n        \"39\": {\n          \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function_parameter_context\"\n        }\n      ]\n    },\n    \"functional_specifiers_pre_parameters\": {\n      \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))(?!\\\\w)\",\n      \"name\": \"storage.modifier.specifier.functional.pre-parameters.$0.cpp\"\n    },\n    \"gcc_attributes\": {\n      \"begin\": \"__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(\",\n      \"end\": \"\\\\)\\\\s*\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"goto_statement\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)goto(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.goto.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.label.call.cpp\"\n        }\n      }\n    },\n    \"identifier\": {\n      \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\"\n    },\n    \"include\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((#)(?:(?:\\\\s)+)?((?:include|include_next))\\\\b)(?:(?:\\\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/)))|((\\\\\\\")[^\\\\\\\"]*((?:\\\\\\\")?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=\\\\/\\\\/))))|(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\.(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;)))))|((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:\\\\n)|$)|(?=(?:\\\\/\\\\/|;))))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.directive.$5.cpp\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {\n          \"name\": \"string.quoted.other.lt-gt.include.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"11\": {\n          \"name\": \"string.quoted.double.include.cpp\"\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.begin.cpp\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.end.cpp\"\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": {\n          \"name\": \"entity.name.other.preprocessor.macro.include.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.preprocessor.include.cpp\"\n    },\n    \"inheritance_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.comma.inheritance.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.access.$0.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)virtual(?!\\\\w)\",\n          \"name\": \"storage.type.modifier.virtual.cpp\"\n        },\n        {\n          \"match\": \"(?<=protected|virtual|private|public|,|:)(?:(?:\\\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"9\": {},\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {}\n          }\n        }\n      ]\n    },\n    \"inline_builtin_storage_type\": {\n      \"match\": \"(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n        },\n        \"3\": {\n          \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n        },\n        \"4\": {\n          \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n        }\n      }\n    },\n    \"inline_comment\": {\n      \"match\": \"(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      }\n    },\n    \"invalid_comment_end\": {\n      \"match\": \"\\\\*\\\\/\",\n      \"name\": \"invalid.illegal.unexpected.punctuation.definition.comment.end.cpp\"\n    },\n    \"label\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\b(?<!case|default)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"entity.name.label.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.label.cpp\"\n        }\n      }\n    },\n    \"lambdas\": {\n      \"begin\": \"(?:(?<=[^\\\\s]|^)(?<![\\\\w\\\\]\\\\)\\\\[\\\\*&\\\">])|(?<=\\\\Wreturn|^return))(?:(?:\\\\s)+)?(\\\\[(?!\\\\[| *+\\\"| *+\\\\d))((?:[^\\\\[\\\\]]|((?<!\\\\[)\\\\[(?!\\\\[)(?:[^\\\\[\\\\]]*+\\\\g<3>?)++\\\\]))*+)(\\\\](?!((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))[\\\\[\\\\];]))\",\n      \"end\": \"(?<=[;}])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.capture.begin.lambda.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.lambda.capture.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#the_this_keyword\"\n            },\n            {\n              \"match\": \"((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?=\\\\]|\\\\z|$)|(,))|(\\\\=))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.capture.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.assignment.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"3\": {},\n        \"4\": {\n          \"name\": \"punctuation.definition.capture.end.lambda.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.parameters.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\\\w)\",\n          \"name\": \"storage.modifier.lambda.$0.cpp\"\n        },\n        {\n          \"match\": \"(->)((?:.+?(?=\\\\{|$))?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lambda.return-type.cpp\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.return-type.lambda.cpp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.lambda.cpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.body.lambda.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"language_constants\": {\n      \"match\": \"(?<!\\\\w)(?:(?:nullptr)|(?:false)|(?:NULL)|(?:true))(?!\\\\w)\",\n      \"name\": \"constant.language.$0.cpp\"\n    },\n    \"line\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?line\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.line.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.line.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"begin\": \"\\\\s*+(\\\\/\\\\/)\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"comment.line.double-slash.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"line_continuation_character\": {\n      \"match\": \"\\\\\\\\\\\\n\",\n      \"name\": \"constant.character.escape.line-continuation.cpp\"\n    },\n    \"macro\": {\n      \"begin\": \"(^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?define\\\\b)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.macro.cpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?:(?:\\\\s)+)?(\\\\()([^\\\\(]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.preprocessor.cpp\"\n            },\n            \"2\": {\n              \"name\": \"meta.function.preprocessor.parameters.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[(,])(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.parameter.preprocessor.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.cpp\"\n                },\n                {\n                  \"match\": \"\\\\.\\\\.\\\\.\",\n                  \"name\": \"punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.end.preprocessor.cpp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#macro_context\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        }\n      ]\n    },\n    \"macro_argument\": {\n      \"match\": \"##?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"variable.other.macro.argument.cpp\"\n    },\n    \"macro_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.macro\"\n        }\n      ]\n    },\n    \"macro_name\": {\n      \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n      \"name\": \"entity.name.function.preprocessor.cpp\"\n    },\n    \"member_access\": {\n      \"match\": \"(?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(\\\\b(?!uint_least16_t[^\\\\w]|uint_least32_t[^\\\\w]|uint_least64_t[^\\\\w]|int_least16_t[^\\\\w]|int_least32_t[^\\\\w]|int_least64_t[^\\\\w]|uint_least8_t[^\\\\w]|uint_fast16_t[^\\\\w]|uint_fast32_t[^\\\\w]|uint_fast64_t[^\\\\w]|int_least8_t[^\\\\w]|int_fast16_t[^\\\\w]|int_fast32_t[^\\\\w]|int_fast64_t[^\\\\w]|uint_fast8_t[^\\\\w]|suseconds_t[^\\\\w]|int_fast8_t[^\\\\w]|useconds_t[^\\\\w]|blksize_t[^\\\\w]|in_addr_t[^\\\\w]|in_port_t[^\\\\w]|uintptr_t[^\\\\w]|uintmax_t[^\\\\w]|uintmax_t[^\\\\w]|uintmax_t[^\\\\w]|unsigned[^\\\\w]|u_quad_t[^\\\\w]|blkcnt_t[^\\\\w]|uint16_t[^\\\\w]|uint32_t[^\\\\w]|uint64_t[^\\\\w]|intptr_t[^\\\\w]|intmax_t[^\\\\w]|intmax_t[^\\\\w]|wchar_t[^\\\\w]|u_short[^\\\\w]|qaddr_t[^\\\\w]|caddr_t[^\\\\w]|daddr_t[^\\\\w]|fixpt_t[^\\\\w]|nlink_t[^\\\\w]|segsz_t[^\\\\w]|swblk_t[^\\\\w]|clock_t[^\\\\w]|ssize_t[^\\\\w]|int16_t[^\\\\w]|int32_t[^\\\\w]|int64_t[^\\\\w]|uint8_t[^\\\\w]|signed[^\\\\w]|double[^\\\\w]|u_char[^\\\\w]|u_long[^\\\\w]|ushort[^\\\\w]|quad_t[^\\\\w]|mode_t[^\\\\w]|size_t[^\\\\w]|time_t[^\\\\w]|int8_t[^\\\\w]|short[^\\\\w]|float[^\\\\w]|u_int[^\\\\w]|div_t[^\\\\w]|dev_t[^\\\\w]|gid_t[^\\\\w]|ino_t[^\\\\w]|key_t[^\\\\w]|pid_t[^\\\\w]|off_t[^\\\\w]|uid_t[^\\\\w]|auto[^\\\\w]|void[^\\\\w]|char[^\\\\w]|long[^\\\\w]|bool[^\\\\w]|uint[^\\\\w]|id_t[^\\\\w]|id_t[^\\\\w]|int[^\\\\w])(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?!\\\\())\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"variable.other.property.cpp\"\n        }\n      }\n    },\n    \"memory_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(delete)(?:(?:\\\\s)+)?(\\\\[\\\\])|(delete))|(new))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.wordlike.cpp\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.delete.array.cpp\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.delete.array.bracket.cpp\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.delete.cpp\"\n        },\n        \"7\": {\n          \"name\": \"keyword.operator.new.cpp\"\n        }\n      }\n    },\n    \"method_access\": {\n      \"begin\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:(?:\\\\s)+)?(?:(?:\\\\.\\\\*|\\\\.)|(?:->\\\\*|->))(?:(?:\\\\s)+)?)*)(?:(?:\\\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"variable.language.this.cpp\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.access.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.dot-access.cpp\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.pointer-access.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<=(?:\\\\.\\\\*|\\\\.|->|->\\\\*))(?:(?:\\\\s)+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.property.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*|(?<=\\\\]|\\\\)))(?:(?:\\\\s)+)?))(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"variable.language.this.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"variable.other.object.access.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.separator.dot-access.cpp\"\n                },\n                \"8\": {\n                  \"name\": \"punctuation.separator.pointer-access.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#method_access\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.function.member.cpp\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"misc_keywords\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:constinit)|(?:requires)|(?:typedef)|(?:concept)|(?:export)|(?:module))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.cpp\"\n        }\n      }\n    },\n    \"ms_attributes\": {\n      \"begin\": \"__declspec\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.begin.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.attribute.end.cpp\"\n        }\n      },\n      \"name\": \"support.other.attribute.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(using)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.directive.cpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.attribute.cpp\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.accessor.attribute.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(?=::)\",\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n          \"name\": \"entity.other.attribute.$0.cpp\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        }\n      ]\n    },\n    \"namespace_alias\": {\n      \"match\": \"(?<!\\\\w)(namespace)(?:\\\\s)+((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?(((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<8>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(;)|\\\\n))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.alias.cpp storage.type.namespace.alias.cpp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.namespace.alias.cpp\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"4\": {\n          \"name\": \"meta.declaration.namespace.alias.value.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.declaration.namespace.alias.cpp\"\n    },\n    \"namespace_block\": {\n      \"begin\": \"((?<!\\\\w)namespace(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.namespace.cpp\"\n        },\n        \"1\": {\n          \"name\": \"keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.namespace.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.head.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<4>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)(?:(?:\\\\s)+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?:(?:\\\\s)+)?(?:(::)(?:(?:\\\\s)+)?(inline))?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_range\"\n                    }\n                  ]\n                },\n                \"4\": {},\n                \"5\": {\n                  \"name\": \"entity.name.namespace.cpp\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.scope-resolution.namespace.block.cpp\"\n                },\n                \"7\": {\n                  \"name\": \"storage.modifier.inline.cpp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.namespace.cpp\"\n            }\n          },\n          \"name\": \"meta.body.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.namespace.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"noexcept_operator\": {\n      \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.noexcept\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"number_literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"10\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.suffix.floating-point.cpp\"\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.binary.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.octal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.octal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9a-fA-FpP])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.cpp\"\n                    },\n                    \"7\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"\\\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\\\+)?)((?:\\\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\\\w))?((?:\\\\w(?<![0-9eE])\\\\w*)?$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.cpp\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.cpp\"\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.exponent.decimal.cpp\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.cpp\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.suffix.integer.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.user-defined.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|')|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cpp\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"operator_overload\": {\n      \"begin\": \"(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<55>?)+>)(?:\\\\s)*+)?::)*+)(?:(?:((?:(?:delete\\\\[\\\\])|(?:delete)|(?:new\\\\[\\\\])|(?:new)|(?:\\\\->\\\\*)|(?:<<=)|(?:>>=)|(?:<=>)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:\\\\(\\\\))|(?:\\\\[\\\\])|(?:\\\\->)|(?:\\\\+\\\\+)|(?:\\\\-\\\\-)|(?:<<)|(?:>>)|(?:<=)|(?:>=)|(?:==)|(?:!=)|(?:&&)|(?:\\\\|\\\\|)|(?:\\\\+=)|(?:\\\\-=)|(?:\\\\*=)|(?:\\\\/=)|(?:%=)|(?:&=)|(?:\\\\^=)|(?:\\\\|=)|(?:\\\\+)|(?:\\\\-)|!|~|(?:\\\\*)|&|(?:\\\\*)|(?:\\\\/)|%|(?:\\\\+)|(?:\\\\-)|<|>|&|(?:\\\\^)|(?:\\\\|)|=|,))|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:\\\\[\\\\])?)))|(\\\"\\\")((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\<|\\\\()\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\"\n        },\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"5\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {},\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"16\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"18\": {},\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"22\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"25\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"26\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"29\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"30\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"34\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"36\": {\n          \"name\": \"storage.type.modifier.calling-convention.cpp\"\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"39\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"40\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"41\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"42\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"43\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"44\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"45\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"46\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"47\": {},\n        \"48\": {\n          \"name\": \"keyword.other.operator.overload.cpp\"\n        },\n        \"49\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"50\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"51\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"52\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"53\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.operator-overload.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"54\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"55\": {},\n        \"56\": {\n          \"name\": \"entity.name.operator.cpp\"\n        },\n        \"57\": {\n          \"name\": \"entity.name.operator.type.cpp\"\n        },\n        \"58\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"entity.name.operator.type.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"entity.name.operator.type.reference.cpp\"\n            }\n          ]\n        },\n        \"59\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"60\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"61\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"62\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"63\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"64\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"65\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"66\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"67\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"68\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"69\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"70\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"71\": {\n          \"name\": \"entity.name.operator.type.array.cpp\"\n        },\n        \"72\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"73\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"74\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"75\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"76\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"77\": {\n          \"name\": \"entity.name.operator.custom-literal.cpp\"\n        },\n        \"78\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"79\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"80\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"81\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.function.definition.special.operator-overload.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.head.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp\"\n                }\n              },\n              \"contentName\": \"meta.function.definition.parameters.special.operator-overload\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_parameter_context\"\n                },\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp\"\n            }\n          },\n          \"name\": \"meta.body.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_body_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.function.definition.special.operator-overload.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignof.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignof.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignof\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)alignas(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.alignas.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.alignas.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.alignas\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.typeid\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<!\\\\w)noexcept(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.noexcept\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n            }\n          },\n          \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"--\",\n          \"name\": \"keyword.operator.decrement.cpp\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.cpp\"\n        },\n        {\n          \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()\\\\/=\",\n          \"name\": \"keyword.operator.assignment.compound.cpp\"\n        },\n        {\n          \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cpp\"\n        },\n        {\n          \"match\": \"<<|>>\",\n          \"name\": \"keyword.operator.bitwise.shift.cpp\"\n        },\n        {\n          \"match\": \"!=|<=|>=|==|<|>\",\n          \"name\": \"keyword.operator.comparison.cpp\"\n        },\n        {\n          \"match\": \"&&|!|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.cpp\"\n        },\n        {\n          \"match\": \"&|\\\\||\\\\^|~\",\n          \"name\": \"keyword.operator.bitwise.cpp\"\n        },\n        {\n          \"include\": \"#assignment_operator\"\n        },\n        {\n          \"match\": \"%|\\\\*|\\\\/|-|\\\\+\",\n          \"name\": \"keyword.operator.arithmetic.cpp\"\n        },\n        {\n          \"include\": \"#ternary_operator\"\n        }\n      ]\n    },\n    \"over_qualified_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\bstruct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.struct.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\benum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.enum.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\bunion)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.union.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\bclass)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.parameter.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.parameter.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"14\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"18\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\)|,|\\\\[|=|\\\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"parameter_class\": {\n      \"match\": \"(\\\\bclass)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_enum\": {\n      \"match\": \"(\\\\benum)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.enum.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_or_maybe_value\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\w)\",\n      \"end\": \"(?:(?=\\\\))|(,))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n        }\n      },\n      \"name\": \"meta.parameter.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#function_pointer_parameter\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#curly_initializer\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#vararg_ellipses\"\n        },\n        {\n          \"match\": \"((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))+)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:\\\\s)*+(?<!\\\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:signed)|(?:double)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:char)|(?:long)|(?:bool)|(?:int)))|((?:(?:uint_least16_t)|(?:uint_least32_t)|(?:uint_least64_t)|(?:int_least16_t)|(?:int_least32_t)|(?:int_least64_t)|(?:uint_least8_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:uint_fast64_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:suseconds_t)|(?:int_fast8_t)|(?:useconds_t)|(?:blksize_t)|(?:in_addr_t)|(?:in_port_t)|(?:uintptr_t)|(?:uintmax_t)|(?:uintmax_t)|(?:uintmax_t)|(?:u_quad_t)|(?:blkcnt_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:intptr_t)|(?:intmax_t)|(?:intmax_t)|(?:u_short)|(?:qaddr_t)|(?:caddr_t)|(?:daddr_t)|(?:fixpt_t)|(?:nlink_t)|(?:segsz_t)|(?:swblk_t)|(?:clock_t)|(?:ssize_t)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:u_char)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:time_t)|(?:int8_t)|(?:u_int)|(?:div_t)|(?:dev_t)|(?:gid_t)|(?:ino_t)|(?:key_t)|(?:pid_t)|(?:off_t)|(?:uid_t)|(?:uint)|(?:id_t)|(?:id_t))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_attr_t)|(?:pthread_cond_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\\\w)*_t))(?!\\\\w)|((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\b\\\\b(?<!\\\\Wthread_local|^thread_local|\\\\Wvolatile|^volatile|\\\\Wregister|^register|\\\\Wrestrict|^restrict|\\\\Wstatic|^static|\\\\Wextern|^extern|\\\\Wconst|^const)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=,|\\\\)|=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.specifier.parameter.cpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"name\": \"storage.type.primitive.cpp storage.type.built-in.primitive.cpp\"\n            },\n            \"12\": {\n              \"name\": \"storage.type.cpp storage.type.built-in.cpp\"\n            },\n            \"13\": {\n              \"name\": \"support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp\"\n            },\n            \"14\": {\n              \"name\": \"support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp\"\n            },\n            \"15\": {\n              \"name\": \"entity.name.type.parameter.cpp\"\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_parameter_inner_generated\"\n        },\n        {\n          \"match\": \"(?:(?:struct)|(?:class)|(?:union)|(?:enum))\",\n          \"name\": \"storage.type.$0.cpp\"\n        },\n        {\n          \"begin\": \"(?<==)\",\n          \"end\": \"(?:(?=\\\\))|(,))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\s|\\\\(|,|:)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=(?:\\\\)|,|\\\\[|=|\\\\/\\\\/|(?:(?:\\\\n)|$)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.array.type.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.array.type.cpp\"\n            }\n          },\n          \"name\": \"meta.bracket.square.array.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b(?<!\\\\Wstruct|^struct|\\\\Wclass|^class|\\\\Wunion|^union|\\\\Wenum|^enum)\",\n          \"name\": \"entity.name.type.parameter.cpp\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"match\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*))\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"7\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"parameter_struct\": {\n      \"match\": \"(\\\\bstruct)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.struct.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.struct.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parameter_union\": {\n      \"match\": \"(\\\\bunion)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))?)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:\\\\[((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\]((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=,|\\\\)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.union.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.union.parameter.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"18\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#over_qualified_types\"\n        },\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"punctuation.separator.colon.range-based.cpp\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma\\\\b\",\n      \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.pragma.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.preprocessor.pragma.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n          \"name\": \"entity.other.attribute-name.pragma.preprocessor.cpp\"\n        },\n        {\n          \"include\": \"#preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"pragma_mark\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?pragma(?:\\\\s)+mark)(?:\\\\s)+(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.pragma.pragma-mark.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.pragma-mark.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.pragma.cpp\"\n    },\n    \"predefined_macros\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.$1.cpp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b__([A-Z_]+)__\\\\b\",\n          \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$1.cpp\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor_conditional_defined\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#d9bc4796b0b_preprocessor_number_literal\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#macro_name\"\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_defined\": {\n      \"begin\": \"((?<!\\\\w)defined(?!\\\\w))(\\\\()\",\n      \"end\": \"(?:\\\\)|(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$)))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.defined.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.control.defined.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#macro_name\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.cpp\"\n        }\n      },\n      \"name\": \"meta.parens.preprocessor.conditional.cpp\"\n    },\n    \"preprocessor_conditional_range\": {\n      \"begin\": \"^((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?:(?:ifndef|ifdef)|if))\",\n      \"end\": \"^(?!\\\\s*+#\\\\s*(?:else|endif))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.directive.conditional.$6.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"6\": {}\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=ifndef|ifdef|if)\",\n          \"end\": \"(?<!\\\\\\\\)(?:(?=\\\\n)|(?<=^\\\\n|[^\\\\\\\\]\\\\n)(?=$))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.preprocessor.conditional.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor_conditional_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"preprocessor_conditional_standalone\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?((?<!\\\\w)(?:endif|else|elif)(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        }\n      },\n      \"name\": \"keyword.control.directive.$4.cpp\"\n    },\n    \"preprocessor_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma_mark\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#include\"\n        },\n        {\n          \"include\": \"#line\"\n        },\n        {\n          \"include\": \"#diagnostic\"\n        },\n        {\n          \"include\": \"#undef\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_range\"\n        },\n        {\n          \"include\": \"#single_line_macro\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#preprocessor_conditional_standalone\"\n        },\n        {\n          \"include\": \"#macro_argument\"\n        }\n      ]\n    },\n    \"qualified_type\": {\n      \"match\": \"\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<11>?)+>)?(?![\\\\w<:.])\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.qualified_type.cpp\"\n    },\n    \"qualifiers_and_specifiers_post_parameters\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?:((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\\\w))+(?=\\\\s*(?:(?:\\\\{|;)|[\\\\n\\\\r])))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.specifier.functional.post-parameters.$3.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.call.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.definition.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_function_definition_operator_overload_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_function_definition_operator_overload_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.function.definition.operator-overload.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_alias\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_alias_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_alias_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.alias.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_block\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_block_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_block_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.block.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_namespace_using\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_namespace_using_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.namespace.using.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_parameter\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_parameter_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_parameter_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_parameter_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.parameter.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_call\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_call_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_template_call_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_call_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.template.call.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp\"\n        }\n      }\n    },\n    \"scope_resolution_template_definition\": {\n      \"match\": \"(::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<3>?)+>)(?:\\\\s)*+)?::)*\\\\s*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      }\n    },\n    \"scope_resolution_template_definition_inner_generated\": {\n      \"match\": \"((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)((?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<7>?)+>)(?:\\\\s)*+)?(::)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_template_definition_inner_generated\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"4\": {},\n        \"5\": {\n          \"name\": \"entity.name.scope-resolution.template.definition.cpp\"\n        },\n        \"6\": {\n          \"name\": \"meta.template.call.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"7\": {},\n        \"8\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp\"\n        }\n      }\n    },\n    \"semicolon\": {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.statement.cpp\"\n    },\n    \"simple_type\": {\n      \"match\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<12>?)+>)?(?![\\\\w<:.]))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {},\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {},\n        \"13\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"single_line_macro\": {\n      \"match\": \"^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))#define.*(?<![\\\\\\\\])(?:(?:\\\\n)|$)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"sizeof_operator\": {\n      \"begin\": \"((?<!\\\\w)sizeof(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"sizeof_variadic_operator\": {\n      \"begin\": \"(\\\\bsizeof\\\\.\\\\.\\\\.)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.sizeof.variadic\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"name\": \"meta.bracket.square.access\",\n      \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.begin.bracket.square\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.square\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"standard_declares\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.struct.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.union.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)enum(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.enum.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"((?<!\\\\w)class(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.declare.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"variable.other.object.declare.cpp\"\n            },\n            \"13\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"3\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"static_assert\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)static_assert|_Static_assert(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.other.static_assert.cpp\"\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.static_assert.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(,)(?:(?:\\\\s)+)?(?=(?:L|u8|u|U(?:(?:\\\\s)+)?\\\\\\\")?)\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.delimiter.comma.cpp\"\n            }\n          },\n          \"endCaptures\": {},\n          \"name\": \"meta.static_assert.message.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"std_space\": {\n      \"match\": \"(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"storage_specifiers\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.specifier.$3.cpp\"\n        }\n      }\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#storage_specifiers\"\n        },\n        {\n          \"include\": \"#inline_builtin_storage_type\"\n        },\n        {\n          \"include\": \"#decltype\"\n        },\n        {\n          \"include\": \"#typename\"\n        }\n      ]\n    },\n    \"string_context\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:u|u8|U|L)?)\\\"\",\n          \"end\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8})\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-7]{1,3}\",\n              \"name\": \"constant.character.escape.cpp\"\n            },\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#string_escapes_context_c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'\",\n          \"end\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.single.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"(?:(\\\\\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\\\\\x[0-9a-fA-F]*|\\\\\\\\x)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.unknown-escape.cpp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#string_escapes_context_c\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:(?:_r|re)|regex)\\\\(\",\n          \"end\": \"\\\\)(?:(?:_r|re)|regex)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.regex.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:glsl|GLSL)\\\\(\",\n          \"end\": \"\\\\)(?:glsl|GLSL)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.glsl.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:[uUL]8?)?R)\\\\\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\(\",\n          \"end\": \"\\\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cpp\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cpp\"\n            }\n          },\n          \"name\": \"meta.string.quoted.double.raw.sql.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?:u|u8|U|L)?R)\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            },\n            \"1\": {\n              \"name\": \"meta.encoding\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"end\": \"\\\\)\\\\2(\\\\3)\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            },\n            \"1\": {\n              \"name\": \"invalid.illegal.delimiter-too-long\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw\"\n        }\n      ]\n    },\n    \"string_escapes_context_c\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3][0-7]{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape\"\n        },\n        {\n          \"match\": \"(?x) (?!%')(?!%\\\")%\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder\"\n        }\n      ]\n    },\n    \"struct_block\": {\n      \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.struct.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.struct.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.struct.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.head.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n            }\n          },\n          \"name\": \"meta.body.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.struct.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"struct_declare\": {\n      \"match\": \"((?<!\\\\w)struct(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.struct.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.struct.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"switch_conditional_parentheses\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.cpp\"\n        }\n      },\n      \"name\": \"meta.conditional.switch.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"begin\": \"((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)switch(?!\\\\w))\",\n      \"end\": \"(?:(?<=\\\\}|%>|\\\\?\\\\?>)|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.switch.cpp\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"keyword.control.switch.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"name\": \"meta.block.switch.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.head.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#switch_conditional_parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.switch.cpp\"\n            }\n          },\n          \"name\": \"meta.body.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#default_statement\"\n            },\n            {\n              \"include\": \"#case_statement\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.switch.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template_argument_defaulted\": {\n      \"match\": \"(?<=<|,)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)*)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?([=])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        }\n      }\n    },\n    \"template_call_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#template_call_range\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#scope_resolution_template_call_inner_generated\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#comma_in_template_argument\"\n        },\n        {\n          \"include\": \"#qualified_type\"\n        }\n      ]\n    },\n    \"template_call_innards\": {\n      \"match\": \"((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<1>?)+>)(?:\\\\s)*+\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.template.call.cpp\"\n    },\n    \"template_call_range\": {\n      \"begin\": \"<\",\n      \"end\": \">\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n        }\n      },\n      \"name\": \"meta.template.call.cpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#template_call_context\"\n        }\n      ]\n    },\n    \"template_definition\": {\n      \"begin\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)\",\n      \"end\": \">\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      },\n      \"name\": \"meta.template.definition.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\w)(?:(?:\\\\s)+)?<\",\n          \"end\": \">\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_context\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#template_definition_context\"\n        }\n      ]\n    },\n    \"template_definition_argument\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?:\\\\s)+)+)((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\\\s)+)?(\\\\.\\\\.\\\\.)(?:(?:\\\\s)+)?((?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*))(?:(?:\\\\s)+)?(?:(,)|(?=>|$))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"storage.type.template.argument.$3.cpp\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"storage.type.template.argument.$0.cpp\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"6\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.vararg-ellipses.template.definition.cpp\"\n        },\n        \"8\": {\n          \"name\": \"entity.name.type.template.cpp\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.separator.delimiter.comma.template.argument.cpp\"\n        }\n      }\n    },\n    \"template_definition_context\": {\n      \"patterns\": [\n        {\n          \"include\": \"#scope_resolution_template_definition_inner_generated\"\n        },\n        {\n          \"include\": \"#template_definition_argument\"\n        },\n        {\n          \"include\": \"#template_argument_defaulted\"\n        },\n        {\n          \"include\": \"#template_call_innards\"\n        },\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"template_isolated_definition\": {\n      \"match\": \"(?<!\\\\w)(template)(?:(?:\\\\s)+)?(<)(.*)(>(?:(?:\\\\s)+)?$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.template.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.angle-brackets.start.template.definition.cpp\"\n        },\n        \"3\": {\n          \"name\": \"meta.template.definition.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_definition_context\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.angle-brackets.end.template.definition.cpp\"\n        }\n      }\n    },\n    \"ternary_operator\": {\n      \"begin\": \"\\\\?\",\n      \"end\": \":\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#ever_present_context\"\n        },\n        {\n          \"include\": \"#string_context\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#method_access\"\n        },\n        {\n          \"include\": \"#member_access\"\n        },\n        {\n          \"include\": \"#predefined_macros\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"include\": \"#wordlike_operators\"\n        },\n        {\n          \"include\": \"#type_casting_operators\"\n        },\n        {\n          \"include\": \"#control_flow_keywords\"\n        },\n        {\n          \"include\": \"#exception_keywords\"\n        },\n        {\n          \"include\": \"#the_this_keyword\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"include\": \"#builtin_storage_type_initilizer\"\n        },\n        {\n          \"include\": \"#qualifiers_and_specifiers_post_parameters\"\n        },\n        {\n          \"include\": \"#functional_specifiers_pre_parameters\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"include\": \"#lambdas\"\n        },\n        {\n          \"include\": \"#attributes_context\"\n        },\n        {\n          \"include\": \"#parentheses\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#scope_resolution_inner_generated\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ],\n      \"applyEndPatternLast\": 1\n    },\n    \"the_this_keyword\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)this(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.language.this.cpp\"\n        }\n      }\n    },\n    \"type_alias\": {\n      \"match\": \"(using)(?:(?:\\\\s)+)?(?!namespace)(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))(?:(?:\\\\s)+)?(\\\\=)(?:(?:\\\\s)+)?((?:typename)?)(?:(?:\\\\s)+)?((?:(?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))(?<!\\\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\\\w)(?:\\\\s)+)+)?(?:(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<29>?)+>)?(?![\\\\w<:.]))|(.*(?<!;)))(?:(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)?(?:(?:\\\\s)+)?(?:(;)|\\\\n)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"14\": {\n          \"name\": \"keyword.operator.assignment.cpp\"\n        },\n        \"15\": {\n          \"name\": \"keyword.other.typename.cpp\"\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#storage_specifiers\"\n            }\n          ]\n        },\n        \"17\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"18\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"20\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"21\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"22\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"23\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"24\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"25\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"27\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"28\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"30\": {\n          \"name\": \"meta.declaration.type.alias.value.unknown.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"31\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"32\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"33\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"34\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"35\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"36\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"37\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"38\": {\n          \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n        },\n        \"39\": {\n          \"patterns\": [\n            {\n              \"include\": \"#evaluation_context\"\n            }\n          ]\n        },\n        \"40\": {\n          \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n        },\n        \"41\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.declaration.type.alias.cpp\"\n    },\n    \"type_casting_operators\": {\n      \"match\": \"((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:(?:reinterpret_cast)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast))(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp\"\n        }\n      }\n    },\n    \"typedef_class\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)class(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)class(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.class.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.class.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.class.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.head.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.class.cpp\"\n                }\n              },\n              \"name\": \"meta.body.class.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.class.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_function_pointer\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=.*\\\\(\\\\*\\\\s*(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\s*\\\\))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)(?:\\\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<18>?)+>)?(?![\\\\w<:.]))(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()(\\\\*)(?:(?:\\\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\\\s)+)?(?:(\\\\[)(\\\\w*)(\\\\])(?:(?:\\\\s)+)?)*(\\\\))(?:(?:\\\\s)+)?(\\\\()\",\n          \"end\": \"(\\\\))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=[{=,);>]|\\\\n)(?!\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.qualified_type.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n                  \"name\": \"storage.type.$0.cpp\"\n                },\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#storage_types\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                },\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#scope_resolution_inner_generated\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                    }\n                  },\n                  \"name\": \"meta.template.call.cpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_context\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.type.cpp\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"5\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"::\",\n                  \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n                  \"name\": \"entity.name.scope-resolution.type.cpp\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            \"13\": {},\n            \"14\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"15\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"16\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"17\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"18\": {},\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"storage.modifier.pointer.cpp\"\n                },\n                {\n                  \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"4\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  },\n                  \"name\": \"invalid.illegal.reference-type.cpp\"\n                },\n                {\n                  \"match\": \"\\\\&\",\n                  \"name\": \"storage.modifier.reference.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"21\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"22\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"23\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"24\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"25\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"26\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"27\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"28\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"29\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"30\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"31\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"32\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.function.pointer.cpp\"\n            },\n            \"33\": {\n              \"name\": \"punctuation.definition.function.pointer.dereference.cpp\"\n            },\n            \"34\": {\n              \"name\": \"entity.name.type.alias.cpp entity.name.type.pointer.function.cpp\"\n            },\n            \"35\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.cpp\"\n            },\n            \"36\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#evaluation_context\"\n                }\n              ]\n            },\n            \"37\": {\n              \"name\": \"punctuation.definition.end.bracket.square.cpp\"\n            },\n            \"38\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.function.pointer.cpp\"\n            },\n            \"39\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.function.pointer.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.function.pointer.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_parameter_context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_struct\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)struct(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)struct(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.struct.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.struct.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.struct.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.head.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.struct.cpp\"\n                }\n              },\n              \"name\": \"meta.body.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.struct.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typedef_union\": {\n      \"begin\": \"((?<!\\\\w)typedef(?!\\\\w))(?:(?:\\\\s)+)?(?=(?<!\\\\w)union(?!\\\\w))\",\n      \"end\": \"(?<=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typedef.cpp\"\n        }\n      },\n      \"endCaptures\": {},\n      \"patterns\": [\n        {\n          \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n          \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.head.union.cpp\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.$1.cpp\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"4\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attributes_context\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                }\n              ]\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"8\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"9\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"10\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"11\": {\n              \"patterns\": [\n                {\n                  \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.union.cpp\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"storage.type.modifier.final.cpp\"\n                    },\n                    \"7\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"9\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \"DLLEXPORT\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n                },\n                {\n                  \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n                  \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n                }\n              ]\n            },\n            \"12\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"14\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"15\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"16\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_comment\"\n                }\n              ]\n            },\n            \"17\": {\n              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n            },\n            \"18\": {\n              \"name\": \"comment.block.cpp\"\n            },\n            \"19\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\*\\\\/\",\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                },\n                {\n                  \"match\": \"\\\\*\",\n                  \"name\": \"comment.block.cpp\"\n                }\n              ]\n            },\n            \"20\": {\n              \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.terminator.statement.cpp\"\n            }\n          },\n          \"name\": \"meta.block.union.cpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.head.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#ever_present_context\"\n                },\n                {\n                  \"include\": \"#inheritance_context\"\n                },\n                {\n                  \"include\": \"#template_call_range\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n              \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n                }\n              },\n              \"name\": \"meta.body.union.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function_pointer\"\n                },\n                {\n                  \"include\": \"#static_assert\"\n                },\n                {\n                  \"include\": \"#constructor_inline\"\n                },\n                {\n                  \"include\": \"#destructor_inline\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n              \"end\": \"[\\\\s]*(?=;)\",\n              \"beginCaptures\": {},\n              \"endCaptures\": {},\n              \"name\": \"meta.tail.union.cpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"storage.modifier.pointer.cpp\"\n                        },\n                        {\n                          \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n                          \"captures\": {\n                            \"1\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"#inline_comment\"\n                                }\n                              ]\n                            },\n                            \"2\": {\n                              \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                            },\n                            \"3\": {\n                              \"name\": \"comment.block.cpp\"\n                            },\n                            \"4\": {\n                              \"patterns\": [\n                                {\n                                  \"match\": \"\\\\*\\\\/\",\n                                  \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                                },\n                                {\n                                  \"match\": \"\\\\*\",\n                                  \"name\": \"comment.block.cpp\"\n                                }\n                              ]\n                            }\n                          },\n                          \"name\": \"invalid.illegal.reference-type.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\&\",\n                          \"name\": \"storage.modifier.reference.cpp\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"4\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"7\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"8\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"9\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#inline_comment\"\n                        }\n                      ]\n                    },\n                    \"11\": {\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                    },\n                    \"12\": {\n                      \"name\": \"comment.block.cpp\"\n                    },\n                    \"13\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\*\\\\/\",\n                          \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                        },\n                        {\n                          \"match\": \"\\\\*\",\n                          \"name\": \"comment.block.cpp\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"entity.name.type.alias.cpp\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid_operator\": {\n      \"begin\": \"((?<!\\\\w)typeid(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.functionlike.cpp keyword.operator.typeid.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.arguments.end.bracket.round.operator.typeid.cpp\"\n        }\n      },\n      \"contentName\": \"meta.arguments.operator.typeid\",\n      \"patterns\": [\n        {\n          \"include\": \"#evaluation_context\"\n        }\n      ]\n    },\n    \"typename\": {\n      \"match\": \"(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?<!\\\\w)typename(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(\\\\s*+((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*((?:::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)(?:\\\\s)*+)?::)*+)?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:__has_include)|(?:atomic_cancel)|(?:atomic_commit)|(?:dynamic_cast)|(?:thread_local)|(?:synchronized)|(?:static_cast)|(?:const_cast)|(?:co_return)|(?:constexpr)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:consteval)|(?:protected)|(?:namespace)|(?:constinit)|(?:co_return)|(?:noexcept)|(?:noexcept)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:noexcept)|(?:template)|(?:operator)|(?:decltype)|(?:typename)|(?:requires)|(?:co_await)|(?:co_yield)|(?:reflexpr)|(?:alignof)|(?:alignas)|(?:default)|(?:nullptr)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:sizeof)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:typeid)|(?:switch)|(?:return)|(?:static)|(?:extern)|(?:inline)|(?:friend)|(?:public)|(?:ifndef)|(?:define)|(?:pragma)|(?:export)|(?:import)|(?:module)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:false)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:else)|(?:goto)|(?:case)|(?:NULL)|(?:true)|(?:elif)|(?:else)|(?:line)|(?:this)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:for)|(?:try)|(?:asm)|(?:or)|(?:do)|(?:if)|(?:if))\\\\b)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\\\\b((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<17>?)+>)?(?![\\\\w<:.]))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"meta.qualified_type.cpp\",\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\\\w)\",\n              \"name\": \"storage.type.$0.cpp\"\n            },\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#string_context\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#scope_resolution_inner_generated\"\n            },\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.begin.template.call.cpp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.angle-brackets.end.template.call.cpp\"\n                }\n              },\n              \"name\": \"meta.template.call.cpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_context\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.type.cpp\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"match\": \"::\",\n              \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\",\n              \"name\": \"entity.name.scope-resolution.type.cpp\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"14\": {},\n        \"15\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"17\": {}\n      }\n    },\n    \"undef\": {\n      \"match\": \"(^((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(#)(?:(?:\\\\s)+)?undef\\\\b)((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.undef.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.preprocessor.cpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.undef.cpp\"\n    },\n    \"union_block\": {\n      \"begin\": \"((?<!\\\\w)union(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:(?={)|(?:((?:(?:(?:\\\\[\\\\[.*?\\\\]\\\\]|__attribute(?:__)?\\\\s*\\\\(\\\\s*\\\\(.*?\\\\)\\\\s*\\\\))|__declspec\\\\(.*?\\\\))|alignas\\\\(.*?\\\\))(?!\\\\)))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?((?:(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(:(?!:)))?)\",\n      \"end\": \"(?:(?:(?<=\\\\}|%>|\\\\?\\\\?>)(?:(?:\\\\s)+)?(;)|(;))|(?=[;>\\\\[\\\\]=]))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.head.union.cpp\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.$1.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"4\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes_context\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"9\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?:((?<!\\\\w)final(?!\\\\w))((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))?(?=:|{|$)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.union.cpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"4\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"5\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"storage.type.modifier.final.cpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"8\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"9\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"10\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"DLLEXPORT\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*\",\n              \"name\": \"entity.name.other.preprocessor.macro.predefined.probably.$0.cpp\"\n            }\n          ]\n        },\n        \"12\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"13\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"14\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"15\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"16\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"17\": {\n          \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n        },\n        \"18\": {\n          \"name\": \"comment.block.cpp\"\n        },\n        \"19\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\\\\/\",\n              \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"comment.block.cpp\"\n            }\n          ]\n        },\n        \"20\": {\n          \"name\": \"punctuation.separator.colon.inheritance.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.block.union.cpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G ?\",\n          \"end\": \"(?:\\\\{|<%|\\\\?\\\\?<|(?=;))\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.head.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#ever_present_context\"\n            },\n            {\n              \"include\": \"#inheritance_context\"\n            },\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\{|<%|\\\\?\\\\?<)\",\n          \"end\": \"\\\\}|%>|\\\\?\\\\?>\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.union.cpp\"\n            }\n          },\n          \"name\": \"meta.body.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_pointer\"\n            },\n            {\n              \"include\": \"#static_assert\"\n            },\n            {\n              \"include\": \"#constructor_inline\"\n            },\n            {\n              \"include\": \"#destructor_inline\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\}|%>|\\\\?\\\\?>)[\\\\s]*\",\n          \"end\": \"[\\\\s]*(?=;)\",\n          \"beginCaptures\": {},\n          \"endCaptures\": {},\n          \"name\": \"meta.tail.union.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"union_declare\": {\n      \"match\": \"((?<!\\\\w)union(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))?(?:(?:&|(?:\\\\*))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z))))*(?:&|(?:\\\\*)))?((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))\\\\b(?!override\\\\W|override\\\\$|final\\\\W|final\\\\$)((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))((?:((?:(?>(?:\\\\s)+)|\\\\/\\\\*(?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+(?:\\\\*)++\\\\/)+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))(?=\\\\S)(?![:{a-zA-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.union.declare.cpp\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.union.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"storage.modifier.pointer.cpp\"\n            },\n            {\n              \"match\": \"(?:\\\\&((?:(?:(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))+)|(?:\\\\b)|(?=\\\\W)|(?<=\\\\W)|(?:\\\\A)|(?:\\\\Z)))){2,}\\\\&\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline_comment\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"3\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              },\n              \"name\": \"invalid.illegal.reference-type.cpp\"\n            },\n            {\n              \"match\": \"\\\\&\",\n              \"name\": \"storage.modifier.reference.cpp\"\n            }\n          ]\n        },\n        \"6\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"10\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"variable.other.object.declare.cpp\"\n        },\n        \"13\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline_comment\"\n            }\n          ]\n        },\n        \"14\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?>(?:\\\\s)+)|(\\\\/\\\\*)((?:[^\\\\*]|(?:\\\\*)++[^\\\\/])*+((?:\\\\*)++\\\\/)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"comment.block.cpp punctuation.definition.comment.begin.cpp\"\n                },\n                \"2\": {\n                  \"name\": \"comment.block.cpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\*\\\\/\",\n                      \"name\": \"comment.block.cpp punctuation.definition.comment.end.cpp\"\n                    },\n                    {\n                      \"match\": \"\\\\*\",\n                      \"name\": \"comment.block.cpp\"\n                    }\n                  ]\n                }\n              }\n            }\n          ]\n        }\n      }\n    },\n    \"using_name\": {\n      \"match\": \"(using)(?:\\\\s)+(?!namespace\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        }\n      }\n    },\n    \"using_namespace\": {\n      \"begin\": \"(?<!\\\\w)(using)(?:\\\\s)+(namespace)(?:\\\\s)+((::)?(?:(?!\\\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|__has_include|atomic_cancel|atomic_commit|dynamic_cast|thread_local|synchronized|static_cast|const_cast|co_return|constexpr|consteval|constexpr|constexpr|consteval|protected|namespace|constinit|co_return|noexcept|noexcept|continue|co_await|co_yield|volatile|register|restrict|explicit|volatile|noexcept|template|operator|decltype|typename|requires|co_await|co_yield|reflexpr|alignof|alignas|default|mutable|virtual|mutable|private|include|warning|_Pragma|defined|typedef|__asm__|concept|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|compl|bitor|throw|or_eq|while|catch|break|class|union|const|const|endif|ifdef|undef|error|using|else|goto|case|enum|elif|else|line|this|not|new|xor|and|for|try|asm|or|do|if|if)\\\\b)(?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w)\\\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\\\"<>]*+|\\\"(?:[^\\\"]*|\\\\\\\\\\\")\\\")|'(?:[^']*|\\\\\\\\')')\\\\g<6>?)+>)(?:\\\\s)*+)?::)*\\\\s*+)?((?<!\\\\w)(?:[a-zA-Z_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\U[0-9a-fA-F]{8}))*(?!\\\\w))(?=;|\\\\n)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.directive.cpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution_namespace_using_inner_generated\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#template_call_range\"\n            }\n          ]\n        },\n        \"6\": {},\n        \"7\": {\n          \"name\": \"entity.name.namespace.cpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.statement.cpp\"\n        }\n      },\n      \"name\": \"meta.using-namespace.cpp\"\n    },\n    \"vararg_ellipses\": {\n      \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n      \"name\": \"punctuation.vararg-ellipses.cpp\"\n    },\n    \"wordlike_operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)(?:(?:noexcept)|(?:delete)|(?:not_eq)|(?:bitand)|(?:and_eq)|(?:xor_eq)|(?:compl)|(?:bitor)|(?:or_eq)|(?:not)|(?:new)|(?:xor)|(?:and)|(?:or))(?!\\\\w)\",\n          \"name\": \"keyword.operator.wordlike.cpp keyword.operator.$0.cpp\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/crystal.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file is based on https://github.com/Microsoft/vscode/blob/master/extensions/ruby/syntaxes/ruby.tmLanguage.json\"\n  ],\n  \"version\": \"https://github.com/Microsoft/vscode/blob/3f1f36333d3453f67a36b6bfb1206e9159e9c4f0/extensions/ruby/syntaxes/ruby.tmLanguage.json\",\n  \"name\": \"crystal\",\n  \"scopeName\": \"source.crystal\",\n  \"fileTypes\": [\"cr\"],\n  \"firstLineMatch\": \"^#!/.*\\\\bcrystal\",\n  \"foldingStartMarker\": \"(?x)^(\\\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\\\bend\\\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\\\"(\\\\\\\\.|[^\\\"])*+\\\"|'(\\\\\\\\.|[^'])*+'|[^#\\\"'])*(\\\\s(do|begin|case)|(?<!\\\\$)[-+=&|*/~%^<>~]\\\\s*+(if|unless)))\\\\b(?![^;]*+;.*?\\\\bend\\\\b)|(\\\"(\\\\\\\\.|[^\\\"])*+\\\"|'(\\\\\\\\.|[^'])*+'|[^#\\\"'])*(\\\\{(?![^}]*+\\\\})|\\\\[(?![^\\\\]]*+\\\\]))).*$|[#].*?\\\\(fold\\\\)\\\\s*+$\",\n  \"foldingStopMarker\": \"(?x)((^|;)\\\\s*+end\\\\s*+([#].*)?$|(^|;)\\\\s*+end\\\\..*$|^\\\\s*+[}\\\\]] ,?\\\\s*+([#].*)?$|[#].*?\\\\(end\\\\)\\\\s*+$|^=end)\",\n  \"keyEquivalent\": \"^~R\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.class.crystal\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.class.crystal\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.crystal\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.crystal\"\n        },\n        \"6\": {\n          \"name\": \"support.class.other.type-param.crystal\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.crystal\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.crystal\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.separator.crystal\"\n        },\n        \"10\": {\n          \"name\": \"support.class.other.type-param.crystal\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(?x)^\\\\s*(abstract)?\\\\s*(class|struct|union|annotation|enum)\\\\s+(([.A-Z_:\\\\x{80}-\\\\x{10FFFF}][.\\\\w:\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([,\\\\s.a-zA-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+)\\\\))?(\\\\s*(<)\\\\s*[.:A-Z\\\\x{80}-\\\\x{10FFFF}][.:\\\\w\\\\x{80}-\\\\x{10FFFF}]*(\\\\(([.a-zA-Z0-9_:]+\\\\s,)\\\\))?)?)|((<<)\\\\s*[.A-Z0-9_:\\\\x{80}-\\\\x{10FFFF}]+))\",\n      \"name\": \"meta.class.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.module.crystal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.module.crystal\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.module.first.crystal\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.module.second.crystal\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.module.third.crystal\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        }\n      },\n      \"match\": \"^\\\\s*(module)\\\\s+(([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))?([A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(::))*[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)\",\n      \"name\": \"meta.module.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.lib.crystal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.lib.crystal\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.lib.first.crystal\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.lib.second.crystal\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.lib.third.crystal\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.inheritance.crystal\"\n        }\n      },\n      \"match\": \"^\\\\s*(lib)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)\",\n      \"name\": \"meta.lib.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.lib.type.crystal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.lib.type.crystal\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.lib.crystal\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.lib.type.value.crystal\"\n        }\n      },\n      \"comment\": \"type in lib\",\n      \"match\": \"(?<!\\\\.)\\\\b(type)\\\\s+([A-Z]\\\\w+)\\\\s*(=)\\\\s*(.+)\",\n      \"name\": \"meta.lib.type.crystal\"\n    },\n    {\n      \"comment\": \"everything being a reserved word, not a value and needing a 'end' is a..\",\n      \"match\": \"(?<!\\\\.)\\\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\\\b(?![?!:])\",\n      \"name\": \"keyword.control.crystal\"\n    },\n    {\n      \"comment\": \"everything being a reserved word, not a value and not needing a 'end' is a..\",\n      \"match\": \"(?<!\\\\.)\\\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\\\b(?![?!:])\",\n      \"name\": \"keyword.control.primary.crystal\"\n    },\n    {\n      \"comment\": \"contextual smart pair support for block parameters\",\n      \"match\": \"(?<!\\\\.)\\\\bdo\\\\b\\\\s*\",\n      \"name\": \"keyword.control.start-block.crystal\"\n    },\n    {\n      \"comment\": \"contextual smart pair support\",\n      \"match\": \"(?<=\\\\{)(\\\\s+)\",\n      \"name\": \"meta.syntax.crystal.start-block\"\n    },\n    {\n      \"comment\": \"Just as above but being not a logical operation\",\n      \"match\": \"(?<!\\\\.)\\\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\\\b(?![?!:])|\\\\.(is_a\\\\?|nil\\\\?|responds_to\\\\?|as\\\\?|as\\b)\",\n      \"name\": \"keyword.control.pseudo-method.crystal\"\n    },\n    {\n      \"match\": \"\\\\bnil\\\\b(?![?!:])\",\n      \"name\": \"constant.language.nil.crystal\"\n    },\n    {\n      \"match\": \"\\\\b(true|false)\\\\b(?![?!:])\",\n      \"name\": \"constant.language.boolean.crystal\"\n    },\n    {\n      \"match\": \"\\\\b(__(DIR|FILE|LINE|END_LINE)__)\\\\b(?![?!:])\",\n      \"name\": \"variable.language.crystal\"\n    },\n    {\n      \"match\": \"\\\\b(self)\\\\b(?![?!:])\",\n      \"name\": \"variable.language.self.crystal\"\n    },\n    {\n      \"comment\": \"https://crystal-lang.org/api/0.36.1/Object.html#macro-summary\",\n      \"match\": \"(?<!\\\\.)\\\\b(((class_)?((getter|property)\\\\b[!?]?|setter\\\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\\\b)(?![?!:])\",\n      \"name\": \"support.function.kernel.crystal\"\n    },\n    {\n      \"begin\": \"\\\\b(require)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.special-method.crystal\"\n        }\n      },\n      \"end\": \"$|(?=#)\",\n      \"name\": \"meta.require.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?\",\n      \"name\": \"variable.other.readwrite.instance.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(@@)[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*[?!=]?\",\n      \"name\": \"variable.other.readwrite.class.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(\\\\$)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.global.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(?!%[Qxrqwi]?[\\\\(\\\\[\\\\{\\\\<\\\\|])%([a-zA-Z_]\\\\w*\\\\.)*[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.fresh.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.crystal\"\n        }\n      },\n      \"match\": \"(\\\\$)(!|@|&|`|'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\\"|-[0adFiIlpv])\",\n      \"name\": \"variable.other.readwrite.global.pre-defined.crystal\"\n    },\n    {\n      \"begin\": \"\\\\b(ENV)\\\\[\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.constant.crystal\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.environment-variable.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b[A-Z\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*\",\n      \"name\": \"support.class.crystal\",\n      \"comment\": \"Literals name of Crystal\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\\\b(?![?!:])\",\n      \"name\": \"support.function.kernel.crystal\",\n      \"comment\": \"Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html\"\n    },\n    {\n      \"match\": \"\\\\b[_A-Z]+\\\\b\",\n      \"name\": \"variable.other.constant.crystal\",\n      \"comment\": \"Constant name in any where\"\n    },\n    {\n      \"begin\": \"(?x)\\n(?=def\\\\b)                          # optimization to help Oniguruma fail fast\\n(?<=^|\\\\s)(def)\\\\s+\\n(\\n  (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?      # method prefix\\n  (?>                               # method name\\n    [a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?\\n    |\\n    \\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?\\n  )\\n)\\n\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.crystal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.crystal\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.crystal\"\n        }\n      },\n      \"comment\": \"The method pattern comes from the symbol pattern. See there for an explanation.\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.crystal\"\n        }\n      },\n      \"name\": \"meta.function.method.with-arguments.crystal\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?![\\\\s,)])\",\n          \"end\": \"(?=,|\\\\)\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.variable.crystal\"\n                },\n                \"2\": {\n                  \"name\": \"constant.other.symbol.hashkey.parameter.function.crystal\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.constant.hashkey.crystal\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.crystal\"\n                }\n              },\n              \"match\": \"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.crystal\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.crystal\"\n        }\n      },\n      \"comment\": \" the optional name is just to catch the def also without a method-name\",\n      \"match\": \"(?x)\\n(?=def\\\\b)                            # optimization to help Oniguruma fail fast\\n(?<=^|\\\\s)(def)\\\\b\\n(\\n  \\\\s+\\n  (\\n    (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?      # method prefix\\n    (?>                               # method name\\n      [a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?\\n      |\\n      \\\\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[][?=]?|\\\\[]=?\\n    )\\n  )\\n)?\",\n      \"name\": \"meta.function.method.without-arguments.crystal\"\n    },\n    {\n      \"comment\": \"Floating point literal (fraction)\",\n      \"name\": \"constant.numeric.float.crystal\",\n      \"match\": \"\\\\b[0-9][0-9_]*\\\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\\\b\"\n    },\n    {\n      \"comment\": \"Floating point literal (exponent)\",\n      \"name\": \"constant.numeric.float.crystal\",\n      \"match\": \"\\\\b[0-9][0-9_]*(\\\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\\\b\"\n    },\n    {\n      \"comment\": \"Floating point literal (typed)\",\n      \"name\": \"constant.numeric.float.crystal\",\n      \"match\": \"\\\\b[0-9][0-9_]*(\\\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\\\b\"\n    },\n    {\n      \"comment\": \"Integer literal (decimal)\",\n      \"name\": \"constant.numeric.integer.decimal.crystal\",\n      \"match\": \"\\\\b(?!0[0-9])[0-9][0-9_]*([ui](8|16|32|64|128))?\\\\b\"\n    },\n    {\n      \"comment\": \"Integer literal (hexadecimal)\",\n      \"name\": \"constant.numeric.integer.hexadecimal.crystal\",\n      \"match\": \"\\\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\\\b\"\n    },\n    {\n      \"comment\": \"Integer literal (octal)\",\n      \"name\": \"constant.numeric.integer.octal.crystal\",\n      \"match\": \"\\\\b0o[0-7_]+([ui](8|16|32|64|128))?\\\\b\"\n    },\n    {\n      \"comment\": \"Integer literal (binary)\",\n      \"name\": \"constant.numeric.integer.binary.crystal\",\n      \"match\": \"\\\\b0b[01_]+([ui](8|16|32|64|128))?\\\\b\"\n    },\n    {\n      \"begin\": \":'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.symbol.begin.crystal\"\n        }\n      },\n      \"comment\": \"symbol literal with '' delimiter\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.symbol.end.crystal\"\n        }\n      },\n      \"name\": \"constant.other.symbol.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.crystal\"\n        }\n      ]\n    },\n    {\n      \"begin\": \":\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.symbol.begin.crystal\"\n        }\n      },\n      \"comment\": \"symbol literal with \\\"\\\" delimiter\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.symbol.end.crystal\"\n        }\n      },\n      \"name\": \"constant.other.symbol.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Needs higher precedence than regular expressions.\",\n      \"match\": \"(?<!\\\\()/=\",\n      \"name\": \"keyword.operator.assignment.augmented.crystal\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      },\n      \"comment\": \"string literal with '' delimiter\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      },\n      \"name\": \"string.quoted.single.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\'|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      },\n      \"comment\": \"string literal with interpolation and \\\"\\\" delimiter\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      },\n      \"name\": \"string.quoted.double.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      },\n      \"comment\": \"execute string (allows for interpolation)\",\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      },\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%x\\\\{\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_curly_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%x\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"end\": \"\\\\]\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_brackets_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%x\\\\<\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"end\": \"\\\\>\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_ltgt_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%x\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_parens_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%x\\\\|\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"execute string (allow for interpolation)\",\n      \"end\": \"\\\\|\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.interpolated.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x) (?: ^| (?<=[=>~(?:\\\\[,|&;] | [\\\\s;]if\\\\s| [\\\\s;]elsif\\\\s | [\\\\s;]while\\\\s | [\\\\s;]unless\\\\s | [\\\\s;]when\\\\s | [\\\\s;]assert_match\\\\s | [\\\\s;]or\\\\s| [\\\\s;]and\\\\s | [\\\\s;]not\\\\s | [\\\\s.]index\\\\s| [\\\\s.]scan\\\\s | [\\\\s.]sub\\\\s | [\\\\s.]sub!\\\\s | [\\\\s.]gsub\\\\s | [\\\\s.]gsub!\\\\s | [\\\\s.]match\\\\s ) | (?<=^when\\\\s| ^if\\\\s | ^elsif\\\\s | ^while\\\\s | ^unless\\\\s ) ) \\\\s*((/))(?![*+{}?])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp.classic.crystal\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.crystal\"\n        }\n      },\n      \"comment\": \"regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp\",\n      \"contentName\": \"string.regexp.classic.crystal\",\n      \"end\": \"((/[imsx]*))\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%r\\\\{\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"end\": \"\\\\}[imsx]*\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.regexp.mod-r.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_curly_r\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%r\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"end\": \"\\\\][imsx]*\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.regexp.mod-r.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_brackets_r\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%r\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"end\": \"\\\\)[imsx]*\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.regexp.mod-r.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_parens_r\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%r\\\\<\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"end\": \"\\\\>[imsx]*\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.regexp.mod-r.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_ltgt_r\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%r\\\\|\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"regular expressions (literal)\",\n      \"end\": \"\\\\|[imsx]*\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.regexp.mod-r.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%Q?\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal capable of interpolation ()\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.upper.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_parens_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%Q?\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal capable of interpolation []\",\n      \"end\": \"\\\\]\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.upper.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_brackets_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%Q?\\\\<\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal capable of interpolation <>\",\n      \"end\": \"\\\\>\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.upper.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_ltgt_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%Q?\\\\{\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal capable of interpolation -- {}\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.double.crystal.mod\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_curly_i\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%Q\\\\|\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal capable of interpolation -- ||\",\n      \"end\": \"\\\\|\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.upper.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%[qwi]\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- ()\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.lower.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        {\n          \"include\": \"#nest_parens\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%[qwi]\\\\<\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- <>\",\n      \"end\": \"\\\\>\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.lower.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        {\n          \"include\": \"#nest_ltgt\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%[qwi]\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- []\",\n      \"end\": \"\\\\]\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.lower.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        {\n          \"include\": \"#nest_brackets\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%[qwi]\\\\{\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- {}\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.lower.crystal\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.crystal\"\n        },\n        {\n          \"include\": \"#nest_curly\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"%[qwi]\\\\|\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"literal incapable of interpolation -- ||\",\n      \"end\": \"\\\\|\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.quoted.other.literal.lower.crystal\",\n      \"patterns\": [\n        {\n          \"comment\": \"Cant be named because its not necessarily an escape.\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.crystal\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\][?=]?|@@?[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*)\",\n      \"name\": \"constant.other.symbol.crystal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.crystal\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(?>[a-zA-Z_\\\\x{80}-\\\\x{10FFFF}][\\\\w\\\\x{80}-\\\\x{10FFFF}]*(?>[?!])?)(:)(?!:)\",\n      \"name\": \"constant.other.symbol.crystal.19syntax\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.crystal\"\n        }\n      },\n      \"match\": \"(?:^[ \\\\t]+)?(#).*$\\\\n?\",\n      \"name\": \"comment.line.number-sign.crystal\"\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded HTML and indented terminator\",\n      \"contentName\": \"text.html.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.html.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded SQL and indented terminator\",\n      \"contentName\": \"text.sql.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.sql.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.sql\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded css and intented terminator\",\n      \"contentName\": \"text.css.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.css.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.css\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded c++ and intented terminator\",\n      \"contentName\": \"text.c++.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.cplusplus.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.c++\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded c++ and intented terminator\",\n      \"contentName\": \"text.c.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.c.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.c\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded javascript and intented terminator\",\n      \"contentName\": \"text.js.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.js.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.js\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded javascript and intented terminator\",\n      \"contentName\": \"text.js.jquery.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.js.jquery.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.js.jquery\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded shell and intented terminator\",\n      \"contentName\": \"text.shell.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.shell.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.shell\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-('?)((?:[_\\\\w]+_|)CRYSTAL)\\\\b\\\\1)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with embedded crystal and intented terminator\",\n      \"contentName\": \"text.crystal.embedded.crystal\",\n      \"end\": \"\\\\s*\\\\2\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.embedded.crystal.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"source.crystal\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-'(\\\\w+)')\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with indented terminator\",\n      \"end\": \"\\\\s*\\\\1\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.heredoc.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<-(\\\\w+)\\\\b)\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.crystal\"\n        }\n      ],\n      \"comment\": \"heredoc with indented terminator\",\n      \"end\": \"\\\\s*\\\\1\\\\b\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.crystal\"\n        }\n      ],\n      \"name\": \"string.unquoted.heredoc.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<={|{\\\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\\\s|^do\\\\s)(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.variable.crystal\"\n        }\n      },\n      \"end\": \"(?<!\\\\|)(\\\\|)(?!\\\\|)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.crystal\"\n        },\n        {\n          \"match\": \"[_a-zA-Z][_a-zA-Z0-9]*\",\n          \"name\": \"variable.other.block.crystal\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.variable.crystal\"\n        }\n      ]\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"punctuation.separator.key-value\"\n    },\n    {\n      \"match\": \"->\",\n      \"name\": \"support.function.kernel.crystal\"\n    },\n    {\n      \"match\": \"<<=|%=|&{1,2}=|\\\\*=|\\\\*\\\\*=|\\\\+=|-=|\\\\^=|\\\\|{1,2}=|<<\",\n      \"name\": \"keyword.operator.assignment.augmented.crystal\"\n    },\n    {\n      \"match\": \"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?\",\n      \"name\": \"keyword.operator.comparison.crystal\"\n    },\n    {\n      \"match\": \"(?<=^|[ \\\\t])!|&&|\\\\|\\\\||\\\\^\",\n      \"name\": \"keyword.operator.logical.crystal\"\n    },\n    {\n      \"match\": \"(\\\\{\\\\%|\\\\%\\\\}|\\\\{\\\\{|\\\\}\\\\})\",\n      \"name\": \"keyword.operator.macro.crystal\"\n    },\n    {\n      \"comment\": \"Safe navigation operator\",\n      \"match\": \"(&\\\\.)\\\\s*(?![A-Z])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.method.crystal\"\n        }\n      }\n    },\n    {\n      \"match\": \"(%|&|\\\\*\\\\*|\\\\*|\\\\+|\\\\-|/)\",\n      \"name\": \"keyword.operator.arithmetic.crystal\"\n    },\n    {\n      \"match\": \"=\",\n      \"name\": \"keyword.operator.assignment.crystal\"\n    },\n    {\n      \"match\": \"\\\\||~|>>\",\n      \"name\": \"keyword.operator.other.crystal\"\n    },\n    {\n      \"match\": \":\",\n      \"name\": \"punctuation.separator.other.crystal\"\n    },\n    {\n      \"match\": \"\\\\;\",\n      \"name\": \"punctuation.separator.statement.crystal\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.object.crystal\"\n    },\n    {\n      \"match\": \"\\\\.|::\",\n      \"name\": \"punctuation.separator.method.crystal\"\n    },\n    {\n      \"match\": \"\\\\{|\\\\}\",\n      \"name\": \"punctuation.section.scope.crystal\"\n    },\n    {\n      \"match\": \"\\\\[|\\\\]\",\n      \"name\": \"punctuation.section.array.crystal\"\n    },\n    {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"punctuation.section.function.crystal\"\n    },\n    {\n      \"begin\": \"(?=[a-zA-Z0-9_!?]+\\\\()\",\n      \"end\": \"(?<=\\\\))\",\n      \"name\": \"meta.function-call.crystal\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_function_parens\"\n        },\n        {\n          \"include\": \"#known_function_names\"\n        },\n        {\n          \"match\": \"([a-zA-Z0-9_!?]+)(?=\\\\()\",\n          \"name\": \"entity.name.function.crystal\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors\",\n      \"match\": \"((?<=\\\\W)\\\\b|^)\\\\w+\\\\b(?=\\\\s*([\\\\]\\\\)\\\\}\\\\=\\\\+\\\\-\\\\*\\\\/\\\\^\\\\$\\\\,\\\\.]|<\\\\s|<<[\\\\s|\\\\.]))\",\n      \"name\": \"variable.other.crystal\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"comment\": \"https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html\",\n      \"match\": \"\\\\\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\\\{[a-fA-F0-9 ]+\\\\}|.)\",\n      \"name\": \"constant.character.escape.crystal\"\n    },\n    \"heredoc\": {\n      \"begin\": \"^<<-?\\\\w+\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"interpolated_crystal\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.crystal\"\n            }\n          },\n          \"contentName\": \"source.crystal\",\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.crystal\"\n            },\n            \"1\": {\n              \"name\": \"source.crystal\"\n            }\n          },\n          \"name\": \"meta.embedded.line.crystal\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ],\n          \"repository\": {\n            \"nest_curly_and_self\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.scope.crystal\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#nest_curly_and_self\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.crystal\"\n            }\n          },\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.crystal\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.crystal\"\n            }\n          },\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.crystal\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.crystal\"\n            }\n          },\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.crystal\"\n        }\n      ]\n    },\n    \"nest_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_brackets\"\n        }\n      ]\n    },\n    \"nest_brackets_i\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_brackets_i\"\n        }\n      ]\n    },\n    \"nest_brackets_r\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_brackets_r\"\n        }\n      ]\n    },\n    \"nest_curly\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_curly\"\n        }\n      ]\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": [\n            {\n              \"name\": \"punctuation.section.scope.crystal\"\n            }\n          ],\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"nest_curly_i\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_curly_i\"\n        }\n      ]\n    },\n    \"nest_curly_r\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_curly_r\"\n        }\n      ]\n    },\n    \"nest_ltgt\": {\n      \"begin\": \"\\\\<\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\>\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_ltgt\"\n        }\n      ]\n    },\n    \"nest_ltgt_i\": {\n      \"begin\": \"\\\\<\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\>\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_ltgt_i\"\n        }\n      ]\n    },\n    \"nest_ltgt_r\": {\n      \"begin\": \"\\\\<\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\>\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_ltgt_r\"\n        }\n      ]\n    },\n    \"nest_parens\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_parens\"\n        }\n      ]\n    },\n    \"nest_parens_i\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nest_parens_i\"\n        }\n      ]\n    },\n    \"nest_parens_r\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": [\n        {\n          \"name\": \"punctuation.section.scope.crystal\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        },\n        {\n          \"include\": \"#nest_parens_r\"\n        }\n      ]\n    },\n    \"regex_sub\": {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_crystal\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.crystal\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.crystal\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.crystal\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.crystal\"\n            }\n          },\n          \"end\": \"]\",\n          \"name\": \"string.regexp.character-class.crystal\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": [\n            {\n              \"name\": \"punctuation.definition.group.crystal\"\n            }\n          ],\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.group.crystal\",\n          \"patterns\": [\n            {\n              \"include\": \"#regex_sub\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.crystal\"\n            }\n          },\n          \"comment\": \"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\",\n          \"match\": \"(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$\",\n          \"name\": \"comment.line.number-sign.crystal\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/csharp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dotnet/csharp-tmLanguage/blob/master/grammars/csharp.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dotnet/csharp-tmLanguage/commit/16612717ccd557383c0c821d7b6ae6662492ffde\",\n  \"name\": \"csharp\",\n  \"scopeName\": \"source.cs\",\n  \"patterns\": [\n    {\n      \"include\": \"#preprocessor\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#declarations\"\n    },\n    {\n      \"include\": \"#script-top-level\"\n    }\n  ],\n  \"repository\": {\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#extern-alias-directive\"\n        },\n        {\n          \"include\": \"#using-directive\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"script-top-level\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#statement\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"type-declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#delegate-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#record-declaration\"\n        },\n        {\n          \"include\": \"#struct-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"class-or-struct-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#storage-modifier\"\n        },\n        {\n          \"include\": \"#type-declarations\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#event-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#constructor-declaration\"\n        },\n        {\n          \"include\": \"#destructor-declaration\"\n        },\n        {\n          \"include\": \"#operator-declaration\"\n        },\n        {\n          \"include\": \"#conversion-operator-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"interface-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-declaration\"\n        },\n        {\n          \"include\": \"#event-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#break-or-continue-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#yield-statement\"\n        },\n        {\n          \"include\": \"#await-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#checked-unchecked-statement\"\n        },\n        {\n          \"include\": \"#lock-statement\"\n        },\n        {\n          \"include\": \"#using-statement\"\n        },\n        {\n          \"include\": \"#labeled-statement\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#anonymous-object-creation-expression\"\n        },\n        {\n          \"include\": \"#local-declaration\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#checked-unchecked-expression\"\n        },\n        {\n          \"include\": \"#typeof-or-default-expression\"\n        },\n        {\n          \"include\": \"#nameof-expression\"\n        },\n        {\n          \"include\": \"#throw-expression\"\n        },\n        {\n          \"include\": \"#interpolated-string\"\n        },\n        {\n          \"include\": \"#verbatim-interpolated-string\"\n        },\n        {\n          \"include\": \"#this-or-base-expression\"\n        },\n        {\n          \"include\": \"#switch-expression\"\n        },\n        {\n          \"include\": \"#conditional-operator\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#await-expression\"\n        },\n        {\n          \"include\": \"#query-expression\"\n        },\n        {\n          \"include\": \"#as-expression\"\n        },\n        {\n          \"include\": \"#is-expression\"\n        },\n        {\n          \"include\": \"#anonymous-method-expression\"\n        },\n        {\n          \"include\": \"#object-creation-expression\"\n        },\n        {\n          \"include\": \"#array-creation-expression\"\n        },\n        {\n          \"include\": \"#anonymous-object-creation-expression\"\n        },\n        {\n          \"include\": \"#invocation-expression\"\n        },\n        {\n          \"include\": \"#member-access-expression\"\n        },\n        {\n          \"include\": \"#element-access-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#tuple-deconstruction-assignment\"\n        },\n        {\n          \"include\": \"#initializer-expression\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"extern-alias-directive\": {\n      \"begin\": \"\\\\s*(extern)\\\\b\\\\s*(alias)\\\\b\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.extern.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.alias.cs\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.alias.cs\"\n        }\n      },\n      \"end\": \"(?=;)\"\n    },\n    \"using-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(using)\\\\b\\\\s+(static)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.static.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(using)\\\\s+(?=(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.alias.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#operator-assignment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(using)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.using.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"name\": \"entity.name.type.namespace.cs\",\n              \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n            },\n            {\n              \"include\": \"#operator-assignment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute-section\": {\n      \"begin\": \"(\\\\[)(assembly|module|field|event|method|param|property|return|type)?(\\\\:)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.attribute-specifier.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#attribute-arguments\"\n        }\n      ]\n    },\n    \"attribute-arguments\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-named-argument\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"attribute-named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(?==)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)))\",\n      \"patterns\": [\n        {\n          \"include\": \"#operator-assignment\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"begin\": \"\\\\b(namespace)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"entity.name.type.namespace.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#declarations\"\n            },\n            {\n              \"include\": \"#using-directive\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"(?<!\\\\.)\\\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\\\b\"\n    },\n    \"class-declaration\": {\n      \"begin\": \"(?=\\\\bclass\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\\\b(class)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.class.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"delegate-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\\\b(delegate)\\\\b)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.delegate.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.type.delegate.cs\"\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"begin\": \"(?=\\\\benum\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=enum)\",\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"(enum)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.enum.cs\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.enum.cs\"\n                }\n              }\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.colon.cs\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attribute-section\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"begin\": \"@?[_[:alpha:]][_[:alnum:]]*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.variable.enum-member.cs\"\n                }\n              },\n              \"end\": \"(?=(,|\\\\}))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"begin\": \"(?=\\\\binterface\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(interface)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.interface.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interface-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"record-declaration\": {\n      \"begin\": \"(?=\\\\brecord\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(record)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.record.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.record.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"struct-declaration\": {\n      \"begin\": \"(?=\\\\bstruct\\\\b)\",\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(struct)\\\\b\\\\s+\\n(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.struct.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameter-list\"\n            },\n            {\n              \"include\": \"#base-types\"\n            },\n            {\n              \"include\": \"#generic-constraints\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-or-struct-members\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"type-parameter-list\": {\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|out)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.type-parameter.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        }\n      ]\n    },\n    \"base-types\": {\n      \"begin\": \":\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\{|where)\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#preprocessor\"\n        }\n      ]\n    },\n    \"generic-constraints\": {\n      \"begin\": \"(where)\\\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.where.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.type-parameter.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\{|where|;|=>)\",\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.class.cs\",\n          \"match\": \"\\\\bclass\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.struct.cs\",\n          \"match\": \"\\\\bstruct\\\\b\"\n        },\n        {\n          \"match\": \"(new)\\\\s*(\\\\()\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.new.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"begin\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s* # first field name\\n(?!=>|==)(?=,|;|=|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.field.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.field.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-struct-members\"\n        }\n      ]\n    },\n    \"property-declaration\": {\n      \"begin\": \"(?x)\\n\\n# The negative lookahead below ensures that we don't match nested types\\n# or other declarations as properties.\\n(?![[:word:][:space:]]*\\\\b(?:class|interface|struct|enum|event)\\\\b)\\n\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<property_name>\\\\g<identifier>)\\\\s*\\n(?=\\\\{|=>|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#class-or-struct-members\"\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"begin\": \"(?x)\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<indexer_name>this)\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#bracketed-parameter-list\"\n        },\n        {\n          \"include\": \"#property-accessors\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"event-declaration\": {\n      \"begin\": \"(?x)\\n\\\\b(event)\\\\b\\\\s*\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(?<event_names>\\\\g<identifier>(?:\\\\s*,\\\\s*\\\\g<identifier>)*)\\\\s*\\n(?=\\\\{|;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.event.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"8\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.variable.event.cs\",\n              \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#event-accessors\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"property-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.cs\",\n          \"match\": \"\\\\b(private|protected|internal)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.get.cs\",\n          \"match\": \"\\\\b(get)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.set.cs\",\n          \"match\": \"\\\\b(set)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.init.cs\",\n          \"match\": \"\\\\b(init)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"event-accessors\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.add.cs\",\n          \"match\": \"\\\\b(add)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.remove.cs\",\n          \"match\": \"\\\\b(remove)\\\\b\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"begin\": \"(?x)\\n(?<return_type>\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\\\s+\\n)\\n(?<interface_name>\\\\g<type_name>\\\\s*\\\\.\\\\s*)?\\n(\\\\g<identifier>)\\\\s*\\n(<([^<>]+)>)?\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#punctuation-accessor\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"entity.name.function.cs\"\n        },\n        \"9\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-parameter-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#generic-constraints\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-declaration\": {\n      \"begin\": \"(?=@?[_[:alpha:]][_[:alnum:]]*\\\\s*\\\\()\",\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.cs\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\{|=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#constructor-initializer\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#preprocessor\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"constructor-initializer\": {\n      \"begin\": \"\\\\b(?:(base)|(this))\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.base.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"destructor-declaration\": {\n      \"begin\": \"(~)(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.tilde.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"operator-declaration\": {\n      \"begin\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?<operator_keyword>(?:\\\\b(?:operator)))\\\\s*\\n(?<operator>(?:\\\\+|-|\\\\*|/|%|&|\\\\||\\\\^|\\\\<\\\\<|\\\\>\\\\>|==|!=|\\\\>|\\\\<|\\\\>=|\\\\<=|!|~|\\\\+\\\\+|--|true|false))\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"keyword.other.operator-decl.cs\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"conversion-operator-declaration\": {\n      \"begin\": \"(?x)\\n(?<explicit_or_implicit_keyword>(?:\\\\b(?:explicit|implicit)))\\\\s*\\n(?<operator_keyword>(?:\\\\b(?:operator)))\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(explicit)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.explicit.cs\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\b(implicit)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.implicit.cs\"\n                }\n              }\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.operator-decl.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#parenthesized-parameter-list\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"begin\": \"(?<!=|!)(=)(?!=|>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        }\n      },\n      \"end\": \"(?=[,\\\\)\\\\];}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression-body\": {\n      \"begin\": \"=>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.arrow.cs\"\n        }\n      },\n      \"end\": \"(?=[,\\\\);}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(goto)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.cs\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(default)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.label.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.return.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"break-or-continue-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(?:(break)|(continue))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.break.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.continue.cs\"\n        }\n      }\n    },\n    \"throw-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"yield-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#yield-return-statement\"\n        },\n        {\n          \"include\": \"#yield-break-statement\"\n        }\n      ]\n    },\n    \"yield-return-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(yield)\\\\b\\\\s*\\\\b(return)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.yield.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.return.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"yield-break-statement\": {\n      \"match\": \"(?<!\\\\.)\\\\b(yield)\\\\b\\\\s*\\\\b(break)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.yield.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.break.cs\"\n        }\n      }\n    },\n    \"await-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(await)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.await.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"else-part\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(else)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(switch)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#switch-label\"\n            },\n            {\n              \"include\": \"#statement\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-expression\": {\n      \"begin\": \"(?x) (?<!\\\\.)\\\\b(switch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.open.cs\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.curlybrace.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#literal\"\n            },\n            {\n              \"include\": \"#switch-var-pattern\"\n            },\n            {\n              \"include\": \"#switch-property-expression\"\n            },\n            {\n              \"include\": \"#member-access-expression\"\n            },\n            {\n              \"include\": \"#switch-pattern\"\n            },\n            {\n              \"include\": \"#expression-body\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-pattern\": {\n      \"begin\": \"(?x) # e.g. int x OR var x\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#switch-when-clause\"\n        }\n      ]\n    },\n    \"switch-property-expression\": {\n      \"begin\": \"(?x) # e.g. int x OR var x\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\\\s*\\n(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"switch-var-pattern\": {\n      \"begin\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-declaration-deconstruction-element-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#switch-when-clause\"\n        }\n      ]\n    },\n    \"switch-when-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(when)\\\\b\\\\s*(\\\\()?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.when.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(?==>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\.)\\\\b(case)\\\\b\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.cs\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(default)\\\\b\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(do)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.do.cs\"\n        }\n      },\n      \"end\": \"(?=;|})\",\n      \"patterns\": [\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.while.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.for.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"foreach-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(foreach)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.loop.foreach.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?:\\n  (\\\\bvar\\\\b)|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s+\\n\\\\b(in)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.var.cs\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"7\": {\n                  \"name\": \"entity.name.variable.local.cs\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.control.loop.in.cs\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)?\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s+\\n\\\\b(in)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.var.cs\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tuple-declaration-deconstruction-element-list\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.loop.in.cs\"\n                }\n              }\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(try)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(finally)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"catch-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(catch)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"entity.name.variable.local.cs\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#when-clause\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    },\n    \"when-clause\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(when)\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.when.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"checked-unchecked-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(checked)|(unchecked))\\\\b\\\\s*(?!\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.checked.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.unchecked.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"lock-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(lock)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.lock.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"using-statement\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(using)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.cs\"\n        }\n      },\n      \"end\": \"(?=\\\\;|})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#local-variable-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#statement\"\n        }\n      ]\n    },\n    \"labeled-statement\": {\n      \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.label.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      }\n    },\n    \"local-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#local-constant-declaration\"\n        },\n        {\n          \"include\": \"#local-variable-declaration\"\n        },\n        {\n          \"include\": \"#local-function-declaration\"\n        },\n        {\n          \"include\": \"#local-tuple-var-deconstruction\"\n        }\n      ]\n    },\n    \"local-variable-declaration\": {\n      \"begin\": \"(?x)\\n(?:\\n  (?:(\\\\busing)\\\\s+)?\\n  (?:(\\\\bref)\\\\s+(?:(\\\\breadonly)\\\\s+)?)?(\\\\bvar\\\\b)| # ref local\\n  (?<type_name>\\n    (?:\\n      (?:ref\\\\s+(?:readonly\\\\s+)?)?   # ref local\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?!=>)\\n(?=,|;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.using.cs\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"10\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-constant-declaration\": {\n      \"begin\": \"(?x)\\n(?<const_keyword>\\\\b(?:const)\\\\b)\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s*\\n(?=,|;|=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      },\n      \"end\": \"(?=;)\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.variable.local.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"local-function-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration\"\n        }\n      ]\n    },\n    \"local-tuple-var-deconstruction\": {\n      \"begin\": \"(?x) # e.g. var (x, y) = GetPoint();\\n(?:\\\\b(var)\\\\b\\\\s*)\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\\n(?=;|=|\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-declaration-deconstruction-element-list\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"tuple-deconstruction-assignment\": {\n      \"match\": \"(?x)\\n(?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s*\\n(?!=>|==)(?==)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tuple-deconstruction-element-list\"\n            }\n          ]\n        }\n      }\n    },\n    \"tuple-declaration-deconstruction-element-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-declaration-deconstruction-element-list\"\n        },\n        {\n          \"include\": \"#declaration-expression-tuple\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(?x) # e.g. x\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(?=[,)])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.variable.tuple-element.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"tuple-deconstruction-element-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-deconstruction-element-list\"\n        },\n        {\n          \"include\": \"#declaration-expression-tuple\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"match\": \"(?x) # e.g. x\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(?=[,)])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-expression-local\": {\n      \"match\": \"(?x) # e.g. int x OR var x\\n(?:\\n  \\\\b(var)\\\\b|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s* # array suffix?\\n        \\\\[\\n          (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n        \\\\]\\n        \\\\s*\\n        (?:\\\\?)? # arrays can be nullable reference types\\n        \\\\s*\\n      )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)\\\\]])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.local.cs\"\n        }\n      }\n    },\n    \"declaration-expression-tuple\": {\n      \"match\": \"(?x) # e.g. int x OR var x\\n(?:\\n  \\\\b(var)\\\\b|\\n  (?<type_name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name_and_type_args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n                (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.var.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      }\n    },\n    \"checked-unchecked-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(checked)|(unchecked))\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.checked.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.unchecked.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"typeof-or-default-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(?:(typeof)|(default))\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.typeof.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.default.cs\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"nameof-expression\": {\n      \"begin\": \"(?<!\\\\.)\\\\b(nameof)\\\\b\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.nameof.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"throw-expression\": {\n      \"match\": \"(?<!\\\\.)\\\\b(throw)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.throw.cs\"\n        }\n      }\n    },\n    \"interpolated-string\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"\\\\$\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"verbatim-interpolated-string\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"(?:\\\\$@|@\\\\$)\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\"(?=[^\\\"])\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#verbatim-string-character-escape\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"name\": \"meta.interpolation.cs\",\n      \"begin\": \"(?<=[^\\\\{]|^)((?:\\\\{\\\\{)*)(\\\\{)(?=[^\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.interpolation.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#char-literal\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#verbatim-string-literal\"\n        },\n        {\n          \"include\": \"#tuple-literal\"\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.cs\",\n          \"match\": \"(?<!\\\\.)\\\\btrue\\\\b\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.cs\",\n          \"match\": \"(?<!\\\\.)\\\\bfalse\\\\b\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.cs\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\"\n    },\n    \"numeric-literal\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.]|_)|(?<=[eE])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?([fFdDmM](?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.separator.decimals.cs\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.other.exponent.cs\"\n                    },\n                    \"9\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.other.preffix.binary.cs\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.binary.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.other.preffix.hex.cs\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.hex.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\\\w))?$\",\n                  \"captures\": {\n                    \"2\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.other.exponent.cs\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.arithmetic.cs\"\n                    },\n                    \"8\": {\n                      \"name\": \"constant.numeric.decimal.cs\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"constant.numeric.other.separator.thousands.cs\"\n                        }\n                      ]\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.other.suffix.cs\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.]|_)|(?<=[eE])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.cs\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"char-literal\": {\n      \"name\": \"string.quoted.single.cs\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.char.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#char-character-escape\"\n        }\n      ]\n    },\n    \"char-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\\\\\\(['\\\"\\\\\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4})\"\n    },\n    \"string-literal\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"(?<!@)\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\\\\\\(['\\\"\\\\\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4})\"\n    },\n    \"verbatim-string-literal\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"begin\": \"@\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\"(?=[^\\\"])\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#verbatim-string-character-escape\"\n        }\n      ]\n    },\n    \"verbatim-string-character-escape\": {\n      \"name\": \"constant.character.escape.cs\",\n      \"match\": \"\\\"\\\"\"\n    },\n    \"tuple-literal\": {\n      \"begin\": \"(\\\\()(?=.*[:,])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tuple-literal-element\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"tuple-literal-element\": {\n      \"begin\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\n(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      },\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      }\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.assignment.compound.cs\",\n          \"match\": \"\\\\*=|/=|%=|\\\\+=|-=|\\\\?\\\\?=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.cs\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.cs\",\n          \"match\": \"<<|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.cs\",\n          \"match\": \"==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.cs\",\n          \"match\": \"<=|>=|<|>\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.cs\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.cs\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.cs\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.cs\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.cs\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.cs\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.null-coalescing.cs\",\n          \"match\": \"\\\\?\\\\?\"\n        }\n      ]\n    },\n    \"switch-literal\": {\n      \"name\": \"constant.language.null.cs\",\n      \"match\": \"(?<!\\\\.)\\\\bnull\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.null.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#expression-body\"\n        }\n      ]\n    },\n    \"conditional-operator\": {\n      \"begin\": \"\\\\?(?!\\\\s*[?.\\\\[]|\\\\s*$)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.question-mark.cs\"\n        }\n      },\n      \"end\": \":\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.colon.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"await-expression\": {\n      \"name\": \"keyword.other.await.cs\",\n      \"match\": \"(?!\\\\.)\\\\b(await)\\\\b\"\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"initializer-expression\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"name\": \"variable.other.readwrite.cs\",\n      \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n    },\n    \"cast-expression\": {\n      \"match\": \"(?x)\\n(\\\\()\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(\\\\))(?=\\\\s*-*!*@?[_[:alnum:]\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    },\n    \"as-expression\": {\n      \"match\": \"(?x)\\n(?<!\\\\.)\\\\b(as)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.as.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"is-expression\": {\n      \"match\": \"(?x)\\n(?<!\\\\.)\\\\b(is)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.is.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"this-or-base-expression\": {\n      \"match\": \"\\\\b(?:(base)|(this))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.base.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.this.cs\"\n        }\n      }\n    },\n    \"invocation-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                                     # preceding null-conditional operator?\\n(?:(\\\\.)\\\\s*)?                                     # preceding dot?\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*                   # method name\\n(?<type_args>\\\\s*<([^<>]|\\\\g<type_args>)+>\\\\s*)?\\\\s* # type arguments\\n(?=\\\\()                                           # open paren of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.cs\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"element-access-expression\": {\n      \"begin\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                        # preceding null-conditional operator?\\n(?:(\\\\.)\\\\s*)?                        # preceding dot?\\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*)? # property name\\n(?:(\\\\?)\\\\s*)?                        # null-conditional operator?\\n(?=\\\\[)                              # open bracket of argument list\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.object.property.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\])(?!\\\\s*\\\\[)\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"member-access-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:(\\\\?)\\\\s*)?                   # preceding null-conditional operator?\\n(\\\\.)\\\\s*                        # preceding dot\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\s* # property name\\n(?![_[:alnum:]]|\\\\(|(\\\\?)?\\\\[|<)  # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.null-conditional.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.object.property.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\.)?\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?<type_params>\\\\s*<([^<>]|\\\\g<type_params>)+>\\\\s*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.cs\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-arguments\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(@?[_[:alpha:]][_[:alnum:]]*)\\n(?=\\n  (\\\\s*\\\\?)?\\n  \\\\s*\\\\.\\\\s*@?[_[:alpha:]][_[:alnum:]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"object-creation-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-creation-expression-with-parameters\"\n        },\n        {\n          \"include\": \"#object-creation-expression-with-no-parameters\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-parameters\": {\n      \"begin\": \"(?x)\\n(new)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument-list\"\n        }\n      ]\n    },\n    \"object-creation-expression-with-no-parameters\": {\n      \"match\": \"(?x)\\n(new)\\\\s+\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s*\\n(?=\\\\{|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"array-creation-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(new|stackalloc)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\\\s*\\n(?=\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?<=\\\\])\",\n      \"patterns\": [\n        {\n          \"include\": \"#bracketed-argument-list\"\n        }\n      ]\n    },\n    \"anonymous-object-creation-expression\": {\n      \"begin\": \"\\\\b(new)\\\\b\\\\s*(?=\\\\{|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.cs\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#initializer-expression\"\n        }\n      ]\n    },\n    \"bracketed-parameter-list\": {\n      \"begin\": \"(?=(\\\\[))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"(?=(\\\\]))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\[)\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attribute-section\"\n            },\n            {\n              \"include\": \"#parameter\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parenthesized-parameter-list\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"parameter\": {\n      \"match\": \"(?x)\\n(?:(?:\\\\b(ref|params|out|in|this)\\\\b)\\\\s+)?\\n(?<type_name>\\n  (?:\\n    (?:ref\\\\s+)?   # ref return\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        }\n      }\n    },\n    \"argument-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#argument\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"bracketed-argument-list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named-argument\"\n        },\n        {\n          \"include\": \"#argument\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"named-argument\": {\n      \"begin\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        }\n      },\n      \"end\": \"(?=(,|\\\\)|\\\\]))\",\n      \"patterns\": [\n        {\n          \"include\": \"#argument\"\n        }\n      ]\n    },\n    \"argument\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier.cs\",\n          \"match\": \"\\\\b(ref|out|in)\\\\b\"\n        },\n        {\n          \"include\": \"#declaration-expression-local\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"query-expression\": {\n      \"begin\": \"(?x)\\n\\\\b(from)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\n\\\\s+(\\\\g<identifier>)\\\\b\\\\s*\\n\\\\b(in)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.from.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"8\": {\n          \"name\": \"keyword.query.in.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"query-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#let-clause\"\n        },\n        {\n          \"include\": \"#where-clause\"\n        },\n        {\n          \"include\": \"#join-clause\"\n        },\n        {\n          \"include\": \"#orderby-clause\"\n        },\n        {\n          \"include\": \"#select-clause\"\n        },\n        {\n          \"include\": \"#group-clause\"\n        }\n      ]\n    },\n    \"let-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(let)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(=)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.let.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"where-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(where)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.where.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"join-clause\": {\n      \"begin\": \"(?x)\\n\\\\b(join)\\\\b\\\\s*\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)?\\n\\\\s+(\\\\g<identifier>)\\\\b\\\\s*\\n\\\\b(in)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.join.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        },\n        \"8\": {\n          \"name\": \"keyword.query.in.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#join-on\"\n        },\n        {\n          \"include\": \"#join-equals\"\n        },\n        {\n          \"include\": \"#join-into\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"join-on\": {\n      \"match\": \"\\\\b(on)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.on.cs\"\n        }\n      }\n    },\n    \"join-equals\": {\n      \"match\": \"\\\\b(equals)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.equals.cs\"\n        }\n      }\n    },\n    \"join-into\": {\n      \"match\": \"(?x)\\n\\\\b(into)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.into.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        }\n      }\n    },\n    \"orderby-clause\": {\n      \"begin\": \"\\\\b(orderby)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.orderby.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#ordering-direction\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ordering-direction\": {\n      \"match\": \"\\\\b(?:(ascending)|(descending))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.ascending.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.query.descending.cs\"\n        }\n      }\n    },\n    \"select-clause\": {\n      \"begin\": \"\\\\b(select)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.select.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"group-clause\": {\n      \"begin\": \"\\\\b(group)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.query.group.cs\"\n        }\n      },\n      \"end\": \"(?=;|\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#group-by\"\n        },\n        {\n          \"include\": \"#group-into\"\n        },\n        {\n          \"include\": \"#query-body\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"group-by\": {\n      \"match\": \"\\\\b(by)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.by.cs\"\n        }\n      }\n    },\n    \"group-into\": {\n      \"match\": \"(?x)\\n\\\\b(into)\\\\b\\\\s*\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.query.into.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.range-variable.cs\"\n        }\n      }\n    },\n    \"anonymous-method-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(@?[_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*\\n(=>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.variable.parameter.cs\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arrow.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#ref-modifier\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(\\\\(.*?\\\\))\\\\s*\\n(=>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#lambda-parameter-list\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arrow.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#ref-modifier\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\\\b(async)\\\\b\\\\s*)?\\n(?:\\\\b(delegate)\\\\b\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.delegate.cs\"\n            }\n          },\n          \"end\": \"(?=\\\\)|;|}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"#parenthesized-parameter-list\"\n            },\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-parameter-list\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#attribute-section\"\n        },\n        {\n          \"include\": \"#lambda-parameter\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"lambda-parameter\": {\n      \"match\": \"(?x)\\n(?:\\\\b(ref|out|in)\\\\b)?\\\\s*\\n(?:(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\\\s+)?\\n(\\\\g<identifier>)\\\\b\\\\s*\\n(?=[,)])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"entity.name.variable.parameter.cs\"\n        }\n      }\n    },\n    \"type\": {\n      \"name\": \"meta.type.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#ref-modifier\"\n        },\n        {\n          \"include\": \"#readonly-modifier\"\n        },\n        {\n          \"include\": \"#tuple-type\"\n        },\n        {\n          \"include\": \"#type-builtin\"\n        },\n        {\n          \"include\": \"#type-name\"\n        },\n        {\n          \"include\": \"#type-arguments\"\n        },\n        {\n          \"include\": \"#type-array-suffix\"\n        },\n        {\n          \"include\": \"#type-nullable-suffix\"\n        }\n      ]\n    },\n    \"ref-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"\\\\b(ref)\\\\b\"\n    },\n    \"readonly-modifier\": {\n      \"name\": \"storage.modifier.cs\",\n      \"match\": \"\\\\b(readonly)\\\\b\"\n    },\n    \"tuple-type\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tuple-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"tuple-element\": {\n      \"match\": \"(?x)\\n(?<type_name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name_and_type_args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type_args>\\\\s*<(?:[^<>]|\\\\g<type_args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name_and_type_args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s* # array suffix?\\n      \\\\[\\n        (?:\\\\s*,\\\\s*)* # commata for multi-dimensional arrays\\n      \\\\]\\n      \\\\s*\\n      (?:\\\\?)? # arrays can be nullable reference types\\n      \\\\s*\\n    )*\\n  )\\n)\\n(?:(?<tuple_name>\\\\g<identifier>)\\\\b)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"entity.name.variable.tuple-element.cs\"\n        }\n      }\n    },\n    \"type-builtin\": {\n      \"match\": \"\\\\b(bool|byte|char|decimal|double|float|int|long|object|sbyte|short|string|uint|ulong|ushort|void|dynamic)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.cs\"\n        }\n      }\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\:\\\\:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.alias.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.coloncolon.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(@?[_[:alpha:]][_[:alnum:]]*)\\\\s*(\\\\.)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.cs\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*(@?[_[:alpha:]][_[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.cs\",\n          \"match\": \"@?[_[:alpha:]][_[:alnum:]]*\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.cs\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-array-suffix\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-nullable-suffix\": {\n      \"match\": \"\\\\?\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.question-mark.cs\"\n        }\n      }\n    },\n    \"operator-assignment\": {\n      \"name\": \"keyword.operator.assignment.cs\",\n      \"match\": \"(?<!=|!)(=)(?!=)\"\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.cs\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.cs\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"name\": \"punctuation.accessor.cs\",\n      \"match\": \"\\\\.\"\n    },\n    \"preprocessor\": {\n      \"name\": \"meta.preprocessor.cs\",\n      \"begin\": \"^\\\\s*(\\\\#)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.hash.cs\"\n        }\n      },\n      \"end\": \"(?<=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessor-define-or-undef\"\n        },\n        {\n          \"include\": \"#preprocessor-if-or-elif\"\n        },\n        {\n          \"include\": \"#preprocessor-else-or-endif\"\n        },\n        {\n          \"include\": \"#preprocessor-warning-or-error\"\n        },\n        {\n          \"include\": \"#preprocessor-region\"\n        },\n        {\n          \"include\": \"#preprocessor-endregion\"\n        },\n        {\n          \"include\": \"#preprocessor-load\"\n        },\n        {\n          \"include\": \"#preprocessor-r\"\n        },\n        {\n          \"include\": \"#preprocessor-line\"\n        },\n        {\n          \"include\": \"#preprocessor-pragma-warning\"\n        },\n        {\n          \"include\": \"#preprocessor-pragma-checksum\"\n        }\n      ]\n    },\n    \"preprocessor-define-or-undef\": {\n      \"match\": \"\\\\b(?:(define)|(undef))\\\\b\\\\s*\\\\b([_[:alpha:]][_[:alnum:]]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.define.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.undef.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.variable.preprocessor.symbol.cs\"\n        }\n      }\n    },\n    \"preprocessor-if-or-elif\": {\n      \"begin\": \"\\\\b(?:(if)|(elif))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.if.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.elif.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#preprocessor-expression\"\n        }\n      ]\n    },\n    \"preprocessor-else-or-endif\": {\n      \"match\": \"\\\\b(?:(else)|(endif))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.else.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.endif.cs\"\n        }\n      }\n    },\n    \"preprocessor-warning-or-error\": {\n      \"match\": \"\\\\b(?:(warning)|(error))\\\\b\\\\s*(.*)(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.warning.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.error.cs\"\n        },\n        \"3\": {\n          \"name\": \"string.unquoted.preprocessor.message.cs\"\n        }\n      }\n    },\n    \"preprocessor-load\": {\n      \"begin\": \"\\\\b(load)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.load.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-r\": {\n      \"begin\": \"\\\\b(r)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.r.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-region\": {\n      \"match\": \"\\\\b(region)\\\\b\\\\s*(.*)(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.region.cs\"\n        },\n        \"2\": {\n          \"name\": \"string.unquoted.preprocessor.message.cs\"\n        }\n      }\n    },\n    \"preprocessor-endregion\": {\n      \"match\": \"\\\\b(endregion)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.endregion.cs\"\n        }\n      }\n    },\n    \"preprocessor-line\": {\n      \"begin\": \"\\\\b(line)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.line.cs\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:(default|hidden))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.preprocessor.default.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.preprocessor.hidden.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"[0-9]+\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"preprocessor-pragma-warning\": {\n      \"match\": \"\\\\b(pragma)\\\\b\\\\s*\\\\b(warning)\\\\b\\\\s*\\\\b(?:(disable)|(restore))\\\\b(\\\\s*[0-9]+(?:\\\\s*,\\\\s*[0-9]+)?)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.pragma.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.warning.cs\"\n        },\n        \"3\": {\n          \"name\": \"keyword.preprocessor.disable.cs\"\n        },\n        \"4\": {\n          \"name\": \"keyword.preprocessor.restore.cs\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"[0-9]+\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"constant.numeric.decimal.cs\"\n                }\n              }\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      }\n    },\n    \"preprocessor-pragma-checksum\": {\n      \"match\": \"\\\\b(pragma)\\\\b\\\\s*\\\\b(checksum)\\\\b\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\\\\s*(\\\\\\\"[^\\\"]*\\\\\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.preprocessor.pragma.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.preprocessor.checksum.cs\"\n        },\n        \"3\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.double.cs\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.cs\"\n        }\n      }\n    },\n    \"preprocessor-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.open.cs\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.parenthesis.close.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.boolean.true.cs\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.false.cs\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.variable.preprocessor.symbol.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(==|!=)|(\\\\!|&&|\\\\|\\\\|)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.comparison.cs\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.logical.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.cs\",\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.cs\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.cs\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.cs\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"patterns\": [\n            {\n              \"name\": \"comment.block.documentation.cs\",\n              \"begin\": \"(?<!/)///(?!/)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cs\"\n                }\n              },\n              \"end\": \"(?=$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#xml-doc-comment\"\n                }\n              ]\n            },\n            {\n              \"name\": \"comment.line.double-slash.cs\",\n              \"begin\": \"(?<!/)//(?:(?!/)|(?=//))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.cs\"\n                }\n              },\n              \"end\": \"(?=$)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-doc-comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xml-comment\"\n        },\n        {\n          \"include\": \"#xml-character-entity\"\n        },\n        {\n          \"include\": \"#xml-cdata\"\n        },\n        {\n          \"include\": \"#xml-tag\"\n        }\n      ]\n    },\n    \"xml-tag\": {\n      \"name\": \"meta.tag.cs\",\n      \"begin\": \"(?x)\\n(</?)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.cs\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.cs\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.cs\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.colon.cs\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.cs\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-attribute\"\n        }\n      ]\n    },\n    \"xml-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:^|\\\\s+)\\n(\\n  (?:\\n    ([-_[:alnum:]]+)\\n    (:)\\n  )?\\n  ([-_[:alnum:]]+)\\n)\\n(=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.cs\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.namespace.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.colon.cs\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.cs\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.equals.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-string\"\n        }\n      ]\n    },\n    \"xml-cdata\": {\n      \"name\": \"string.unquoted.cdata.cs\",\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.cs\"\n        }\n      },\n      \"end\": \"\\\\]\\\\]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.cs\"\n        }\n      }\n    },\n    \"xml-string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.single.cs\",\n          \"begin\": \"\\\\'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cs\"\n            }\n          },\n          \"end\": \"\\\\'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.cs\",\n          \"begin\": \"\\\\\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.cs\"\n            }\n          },\n          \"end\": \"\\\\\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.cs\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-character-entity\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-character-entity\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.cs\",\n          \"match\": \"(?x)\\n(&)\\n(\\n  (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\\n  (?:\\\\#[[:digit:]]+)|\\n  (?:\\\\#x[[:xdigit:]]+)\\n)\\n(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.cs\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.constant.cs\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.cs\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"xml-comment\": {\n      \"name\": \"comment.block.cs\",\n      \"begin\": \"<!--\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.cs\"\n        }\n      },\n      \"end\": \"-->\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.cs\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/css.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-css/commit/4a6dc90f332bfa72c88192513435a64013d9aad4\",\n  \"name\": \"css\",\n  \"scopeName\": \"source.css\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment-block\"\n    },\n    {\n      \"include\": \"#escapes\"\n    },\n    {\n      \"include\": \"#combinators\"\n    },\n    {\n      \"include\": \"#selector\"\n    },\n    {\n      \"include\": \"#at-rules\"\n    },\n    {\n      \"include\": \"#rule-list\"\n    }\n  ],\n  \"repository\": {\n    \"at-rules\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\A(?:\\\\xEF\\\\xBB\\\\xBF)?(?i:(?=\\\\s*@charset\\\\b))\",\n          \"end\": \";|(?=$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.charset.css\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.not-lowercase.charset.css\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.leading-whitespace.charset.css\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.no-whitespace.charset.css\"\n                },\n                \"4\": {\n                  \"name\": \"invalid.illegal.whitespace.charset.css\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.not-double-quoted.charset.css\"\n                },\n                \"6\": {\n                  \"name\": \"invalid.illegal.unclosed-string.charset.css\"\n                },\n                \"7\": {\n                  \"name\": \"invalid.illegal.unexpected-characters.charset.css\"\n                }\n              },\n              \"match\": \"(?x)        # Possible errors:\\n\\\\G\\n((?!@charset)@\\\\w+)   # Not lowercase (@charset is case-sensitive)\\n|\\n\\\\G(\\\\s+)             # Preceding whitespace\\n|\\n(@charset\\\\S[^;]*)    # No whitespace after @charset\\n|\\n(?<=@charset)         # Before quoted charset name\\n(\\\\x20{2,}|\\\\t+)      # More than one space used, or a tab\\n|\\n(?<=@charset\\\\x20)    # Beginning of charset name\\n([^\\\";]+)              # Not double-quoted\\n|\\n(\\\"[^\\\"]+$)             # Unclosed quote\\n|\\n(?<=\\\")                # After charset name\\n([^;]+)               # Unexpected junk instead of semicolon\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.at-rule.charset.css\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"match\": \"((@)charset)(?=\\\\s)\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"\\\"|$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.double.css\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\"])+$)\",\n                  \"end\": \"$\",\n                  \"name\": \"invalid.illegal.unclosed.string.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)import)(?:\\\\s+|$|(?=['\\\"]|/\\\\*))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.import.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.import.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*(?=/\\\\*)\",\n              \"end\": \"(?<=\\\\*/)\\\\s*\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#url\"\n            },\n            {\n              \"include\": \"#media-query-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)font-face)(?=\\\\s*|{|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.font-face.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"meta.at-rule.font-face.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#rule-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(@)page(?=[\\\\s:{]|/\\\\*|$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control.at-rule.page.css\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?=\\\\s*($|[:{;]))\",\n          \"name\": \"meta.at-rule.page.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#rule-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@media(\\\\s|\\\\(|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)media\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.media.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.media.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#media-query-list\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.media.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.media.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.media.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@counter-style([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)counter-style\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.counter-style.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*{)\",\n              \"name\": \"meta.at-rule.counter-style.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#escapes\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n                  \"name\": \"variable.parameter.style-name.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.counter-style.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"include\": \"#rule-list-innards\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@document([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)document\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.document.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.document.header.css\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?<![\\\\w-])(url-prefix|domain|regexp)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.function.document-rule.css\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.bracket.round.css\"\n                    }\n                  },\n                  \"name\": \"meta.function.document-rule.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string\"\n                    },\n                    {\n                      \"include\": \"#comment-block\"\n                    },\n                    {\n                      \"include\": \"#escapes\"\n                    },\n                    {\n                      \"match\": \"[^'\\\")\\\\s]+\",\n                      \"name\": \"variable.parameter.document-rule.css\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#url\"\n                },\n                {\n                  \"include\": \"#commas\"\n                },\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.document.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.document.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.document.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\\\s'\\\"{;]|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.keyframes.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*{)\",\n              \"name\": \"meta.at-rule.keyframes.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#escapes\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n                  \"name\": \"variable.parameter.keyframe-list.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.keyframes.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.keyframes.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.keyframes.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.keyframe-offset.css\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.other.keyframe-offset.percentage.css\"\n                    }\n                  },\n                  \"match\": \"(?xi)\\n(?<![\\\\w-]) (from|to) (?![\\\\w-])         # Keywords for 0% | 100%\\n|\\n([-+]?(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)%)     # Percentile value\"\n                },\n                {\n                  \"include\": \"#rule-list\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@supports(\\\\s|\\\\(|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)|(?=;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)supports\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.supports.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.supports.header.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#feature-query-operators\"\n                },\n                {\n                  \"include\": \"#feature-query\"\n                },\n                {\n                  \"include\": \"#comment-block\"\n                },\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.supports.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.supports.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.supports.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)(-(ms|o)-)?viewport)(?=[\\\\s'\\\"{;]|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.viewport.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \"(?=\\\\s*[@{;])\",\n          \"name\": \"meta.at-rule.viewport.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((@)font-feature-values)(?=[\\\\s'\\\"{;]|/\\\\*|$)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.font-feature-values.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"contentName\": \"variable.parameter.font-name.css\",\n          \"end\": \"(?=\\\\s*[@{;])\",\n          \"name\": \"meta.at-rule.font-features.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#font-features\"\n        },\n        {\n          \"begin\": \"(?i)((@)namespace)(?=[\\\\s'\\\";]|/\\\\*|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.namespace.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.css\"\n            }\n          },\n          \"end\": \";|(?=[@{])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.namespace.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#url\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comment-block\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.namespace-prefix.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?xi)\\n(?:\\\\G|^|(?<=\\\\s))\\n(?=\\n  (?<=\\\\s|^)                             # Starts with whitespace\\n  (?:[-a-zA-Z_]|[^\\\\x00-\\\\x7F])          # Then a valid identifier character\\n  |\\n  \\\\s*                                   # Possible adjoining whitespace\\n  /\\\\*(?:[^*]|\\\\*[^/])*\\\\*/              # Injected comment\\n)\\n(.*?)                                    # Grouped to embed #comment-block\\n(\\n  (?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n  (?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n    |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n  )*\\n)\"\n            },\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@[\\\\w-]+[^;]+;s*$)\",\n          \"end\": \"(?<=;)(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)[\\\\w-]+\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \";\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.terminator.rule.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.header.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?=@[\\\\w-]+(\\\\s|\\\\(|{|/\\\\*|$))\",\n          \"end\": \"(?<=})(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)\\\\G(@)[\\\\w-]+\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.at-rule.css\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.keyword.css\"\n                }\n              },\n              \"end\": \"(?=\\\\s*[{;])\",\n              \"name\": \"meta.at-rule.header.css\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.begin.bracket.curly.css\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.end.bracket.curly.css\"\n                }\n              },\n              \"name\": \"meta.at-rule.body.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"color-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<![\\\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\\\w-])\",\n          \"name\": \"support.constant.color.w3c-standard-color-name.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.color.w3c-extended-color-name.css\"\n        },\n        {\n          \"match\": \"(?i)(?<![\\\\w-])currentColor(?![\\\\w-])\",\n          \"name\": \"support.constant.color.current.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\\n(?![\\\\w-])\",\n          \"name\": \"invalid.deprecated.color.system.css\"\n        }\n      ]\n    },\n    \"combinators\": {\n      \"patterns\": [\n        {\n          \"match\": \"/deep/|>>>\",\n          \"name\": \"invalid.deprecated.combinator.css\"\n        },\n        {\n          \"match\": \">>|>|\\\\+|~\",\n          \"name\": \"keyword.operator.combinator.css\"\n        }\n      ]\n    },\n    \"commas\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.list.comma.css\"\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    \"escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-9a-fA-F]{1,6}\",\n          \"name\": \"constant.character.escape.codepoint.css\"\n        },\n        {\n          \"begin\": \"\\\\\\\\$\\\\s*\",\n          \"end\": \"^(?<!\\\\G)\",\n          \"name\": \"constant.character.escape.newline.css\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.css\"\n        }\n      ]\n    },\n    \"feature-query\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.condition.begin.bracket.round.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.condition.end.bracket.round.css\"\n        }\n      },\n      \"name\": \"meta.feature-query.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#feature-query-operators\"\n        },\n        {\n          \"include\": \"#feature-query\"\n        }\n      ]\n    },\n    \"feature-query-operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=[\\\\s()]|^|\\\\*/)(and|not|or)(?=[\\\\s()]|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.feature.$1.css\"\n        },\n        {\n          \"include\": \"#rule-list-innards\"\n        }\n      ]\n    },\n    \"font-features\": {\n      \"begin\": \"(?xi)\\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\\n(?=[\\\\s@'\\\"{;]|/\\\\*|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.${3:/downcase}.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"end\": \"(?<=})\",\n      \"name\": \"meta.at-rule.${3:/downcase}.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n            }\n          },\n          \"name\": \"meta.property-list.font-feature.css\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n(?: [-a-zA-Z_]    | [^\\\\x00-\\\\x7F] )   # First letter\\n(?: [-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]     # Remainder of identifier\\n  | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n              \"name\": \"variable.font-feature.css\"\n            },\n            {\n              \"include\": \"#rule-list-innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(calc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.calc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.calc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"[*/]|(?<=\\\\s|^)[-+](?=\\\\s|$)\",\n              \"name\": \"keyword.operator.arithmetic.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(rgba?|hsla?|hwb|lab|lch)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.color.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n(\\n  (?:-webkit-|-moz-|-o-)?    # Accept prefixed/historical variants\\n  (?:repeating-)?            # \\\"Repeating\\\"-type gradient\\n  (?:linear|radial|conic)    # Shape\\n  -gradient\\n)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.gradient.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.gradient.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(from|to|at)(?![\\\\w-])\",\n              \"name\": \"keyword.operator.gradient.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(-webkit-gradient)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"invalid.deprecated.gradient.function.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.gradient.invalid.deprecated.gradient.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)(?<![\\\\w-])(from|to|color-stop)(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"invalid.deprecated.function.css\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.function.end.bracket.round.css\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#property-values\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?\\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\\n|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia\\n|styleset|stylistic|swash|symbols)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.misc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<=[,\\\\s\\\"]|\\\\*/|^)\\\\d+x(?=[\\\\s,\\\"')]|/\\\\*|$)\",\n              \"name\": \"constant.numeric.other.density.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            },\n            {\n              \"match\": \"[^'\\\"),\\\\s]+\",\n              \"name\": \"variable.parameter.misc.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(circle|ellipse|inset|polygon|rect)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.shape.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.shape.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<=\\\\s|^|\\\\*/)(at|round)(?=\\\\s|/\\\\*|$)\",\n              \"name\": \"keyword.operator.shape.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(cubic-bezier|steps)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing-function.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.timing-function.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(start|end)(?=\\\\s*\\\\)|$)\",\n              \"name\": \"support.constant.step-direction.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi) (?<![\\\\w-])\\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\\n| matrix(?:3D)?\\n| skew[XY]?\\n| perspective\\n)\\n(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.transform.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#url\"\n        },\n        {\n          \"begin\": \"(?i)(?<![\\\\w-])(var)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"name\": \"meta.function.variable.css\",\n          \"patterns\": [\n            {\n              \"name\": \"variable.argument.css\",\n              \"match\": \"(?x)\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"functional-pseudo-classes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)((:)dir)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"match\": \"(?i)(?<![\\\\w-])(ltr|rtl)(?![\\\\w-])\",\n              \"name\": \"support.constant.text-direction.css\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)lang)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?<=[(,\\\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\\\s])\",\n              \"name\": \"support.constant.language-range.css\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.double.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"match\": \"(?<=[\\\"\\\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\\\"\\\\s])\",\n                  \"name\": \"support.constant.language-range.css\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.css\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.css\"\n                }\n              },\n              \"name\": \"string.quoted.single.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                },\n                {\n                  \"match\": \"(?<=['\\\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\\\s])\",\n                  \"name\": \"support.constant.language-range.css\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#commas\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)(?:not|has|matches))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#selector-innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?i)[+-]?(\\\\d+n?|n)(\\\\s*[+-]\\\\s*\\\\d+)?\",\n              \"name\": \"constant.numeric.css\"\n            },\n            {\n              \"match\": \"(?i)even|odd\",\n              \"name\": \"support.constant.parity.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"media-features\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.property-name.media.css\"\n        },\n        \"2\": {\n          \"name\": \"support.type.property-name.media.css\"\n        },\n        \"3\": {\n          \"name\": \"support.type.vendored.property-name.media.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|\\\\(|\\\\*/)           # Preceded by whitespace, bracket or comment\\n(?:\\n  # Standardised features\\n  (\\n    (?:min-|max-)?            # Range features\\n    (?: height\\n      | width\\n      | aspect-ratio\\n      | color\\n      | color-index\\n      | monochrome\\n      | resolution\\n    )\\n    | grid                    # Discrete features\\n    | scan\\n    | orientation\\n    | display-mode\\n    | hover\\n  )\\n  |\\n  # Deprecated features\\n  (\\n    (?:min-|max-)?            # Deprecated in Media Queries 4\\n    device-\\n    (?: height\\n      | width\\n      | aspect-ratio\\n    )\\n  )\\n  |\\n  # Vendor extensions\\n  (\\n    (?:\\n      # Spec-compliant syntax\\n      [-_]\\n      (?: webkit              # Webkit/Blink\\n        | apple|khtml         # Webkit aliases\\n        | epub                # ePub3\\n        | moz                 # Gecko\\n        | ms                  # Microsoft\\n        | o                   # Presto (pre-Opera 15)\\n        | xv|ah|rim|atsc|     # Less common vendors\\n          hp|tc|wap|ro\\n      )\\n      |\\n      # Non-standard prefixes\\n      (?: mso                 # Microsoft Office\\n        | prince              # YesLogic\\n      )\\n    )\\n    -\\n    [\\\\w-]+                   # Feature name\\n    (?=                       # Terminates correctly\\n      \\\\s*                    # Possible whitespace\\n      (?:                     # Possible injected comment\\n        /\\\\*\\n        (?:[^*]|\\\\*[^/])*\\n        \\\\*/\\n      )?\\n      \\\\s*\\n      [:)]                    # Ends with a colon or closed bracket\\n    )\\n  )\\n)\\n(?=\\\\s|$|[><:=]|\\\\)|/\\\\*)     # Terminates cleanly\"\n    },\n    \"media-feature-keywords\": {\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|:|\\\\*/)\\n(?: portrait                  # Orientation\\n  | landscape\\n  | progressive               # Scan types\\n  | interlace\\n  | fullscreen                # Display modes\\n  | standalone\\n  | minimal-ui\\n  | browser\\n  | hover\\n)\\n(?=\\\\s|\\\\)|$)\",\n      \"name\": \"support.constant.property-value.css\"\n    },\n    \"media-query\": {\n      \"begin\": \"\\\\G\",\n      \"end\": \"(?=\\\\s*[{;])\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#media-types\"\n        },\n        {\n          \"match\": \"(?i)(?<=\\\\s|^|,|\\\\*/)(only|not)(?=\\\\s|{|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.$1.media.css\"\n        },\n        {\n          \"match\": \"(?i)(?<=\\\\s|^|\\\\*/|\\\\))and(?=\\\\s|/\\\\*|$)\",\n          \"name\": \"keyword.operator.logical.and.media.css\"\n        },\n        {\n          \"match\": \",(?:(?:\\\\s*,)+|(?=\\\\s*[;){]))\",\n          \"name\": \"invalid.illegal.comma.css\"\n        },\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#media-features\"\n            },\n            {\n              \"include\": \"#media-feature-keywords\"\n            },\n            {\n              \"match\": \":\",\n              \"name\": \"punctuation.separator.key-value.css\"\n            },\n            {\n              \"match\": \">=|<=|=|<|>\",\n              \"name\": \"keyword.operator.comparison.css\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.numeric.css\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.arithmetic.css\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.css\"\n                }\n              },\n              \"match\": \"(\\\\d+)\\\\s*(/)\\\\s*(\\\\d+)\",\n              \"name\": \"meta.ratio.css\"\n            },\n            {\n              \"include\": \"#numeric-values\"\n            },\n            {\n              \"include\": \"#comment-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"media-query-list\": {\n      \"begin\": \"(?=\\\\s*[^{;])\",\n      \"end\": \"(?=\\\\s*[{;])\",\n      \"patterns\": [\n        {\n          \"include\": \"#media-query\"\n        }\n      ]\n    },\n    \"media-types\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.constant.media.css\"\n        },\n        \"2\": {\n          \"name\": \"invalid.deprecated.constant.media.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?<=^|\\\\s|,|\\\\*/)\\n(?:\\n  # Valid media types\\n  (all|print|screen|speech)\\n  |\\n  # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\\n  (aural|braille|embossed|handheld|projection|tty|tv)\\n)\\n(?=$|[{,\\\\s;]|/\\\\*)\"\n    },\n    \"numeric-values\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.css\"\n            }\n          },\n          \"match\": \"(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\\\b\",\n          \"name\": \"constant.other.color.rgb-value.hex.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.unit.percentage.css\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.unit.${2:/downcase}.css\"\n            }\n          },\n          \"match\": \"(?xi) (?<![\\\\w-])\\n[-+]?                               # Sign indicator\\n\\n(?:                                 # Numerals\\n    [0-9]+ (?:\\\\.[0-9]+)?           # Integer/float with leading digits\\n  | \\\\.[0-9]+                       # Float without leading digits\\n)\\n\\n(?:                                 # Scientific notation\\n  (?<=[0-9])                        # Exponent must follow a digit\\n  E                                 # Exponent indicator\\n  [-+]?                             # Possible sign indicator\\n  [0-9]+                            # Exponent value\\n)?\\n\\n(?:                                 # Possible unit for data-type:\\n  (%)                               # - Percentage\\n  | ( deg|grad|rad|turn             # - Angle\\n    | Hz|kHz                        # - Frequency\\n    | ch|cm|em|ex|fr|in|mm|mozmm|   # - Length\\n      pc|pt|px|q|rem|vh|vmax|vmin|\\n      vw\\n    | dpi|dpcm|dppx                 # - Resolution\\n    | s|ms                          # - Time\\n    )\\n  \\\\b                               # Boundary checking intentionally lax to\\n)?                                  # facilitate embedding in CSS-like grammars\",\n          \"name\": \"constant.numeric.css\"\n        }\n      ]\n    },\n    \"property-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\\n|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB\\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.property-value.css\"\n        },\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\\n|upper-latin|upper-roman|urdu)\\n(?![\\\\w-])\",\n          \"name\": \"support.constant.property-value.list-style-type.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+\",\n          \"name\": \"support.constant.vendored.property-value.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\\\w-])\",\n          \"name\": \"support.constant.font-name.css\"\n        }\n      ]\n    },\n    \"property-names\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi) (?<![\\\\w-])\\n(?:\\n  # Standard CSS\\n  accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\\n  | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\\n  | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\\n  | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\\n  | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\\n  | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\\n  | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\\n  | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\\n  | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\\n  | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\\n  | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\\n  | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\\n  | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\\n  | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap\\n  | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|content|counter-increment\\n  | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\\n  | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\\n  | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\\n  | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\\n  | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\\n  | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\\n  | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\\n  | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\\n  | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\\n  | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\\n  | list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start\\n  | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\\n  | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\\n  | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\\n  | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\\n  | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\\n  | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\\n  | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\\n  | pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left\\n  | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\\n  | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\\n  | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\\n  | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\\n  | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\\n  | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\\n  | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\\n  | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\\n  | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\\n  | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\\n  | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style\\n  | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\\n  | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform\\n  | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\\n  | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\\n  | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\\n\\n  # SVG attributes\\n  | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\\n  | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\\n  | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\\n  | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\\n  | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\\n\\n  # Not listed on MDN; presumably deprecated\\n  | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\\n  | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\\n  | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\\n  | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\\n  | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\\n  | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\\n  | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\\n  | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\\n  | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\\n  | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\\n  | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\\n  | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\\n  | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\\n  | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\\n  | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\\n  | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\\n  | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\\n  | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\\n  | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\\n  | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\\n  | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\\n  | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\\n  | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\\n)\\n(?![\\\\w-])\",\n          \"name\": \"support.type.property-name.css\"\n        },\n        {\n          \"match\": \"(?<![\\\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+\",\n          \"name\": \"support.type.vendored.property-name.css\"\n        }\n      ]\n    },\n    \"property-values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#property-keywords\"\n        },\n        {\n          \"include\": \"#unicode-range\"\n        },\n        {\n          \"include\": \"#numeric-values\"\n        },\n        {\n          \"include\": \"#color-keywords\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"!\\\\s*important(?![\\\\w-])\",\n          \"name\": \"keyword.other.important.css\"\n        }\n      ]\n    },\n    \"pseudo-classes\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.colon.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(:)(:*)\\n(?: active|any-link|checked|default|disabled|empty|enabled|first\\n  | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\\n  | in-range|indeterminate|invalid|left|link|optional|out-of-range\\n  | read-only|read-write|required|right|root|scope|target|unresolved\\n  | valid|visited\\n)(?![\\\\w-]|\\\\s*[;}])\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n    },\n    \"pseudo-elements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        }\n      },\n      \"match\": \"(?xi)\\n(?:\\n  (::?)                       # Elements using both : and :: notation\\n  (?: after\\n    | before\\n    | first-letter\\n    | first-line\\n    | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\\n            |ms|o|rim|ro|tc|wap|webkit|xv)\\n        | (?:mso|prince))\\n      -[a-z-]+\\n  )\\n  |\\n  (::)                        # Double-colon only\\n  (?: backdrop\\n    | content\\n    | grammar-error\\n    | marker\\n    | placeholder\\n    | selection\\n    | shadow\\n    | spelling-error\\n  )\\n)\\n(?![\\\\w-]|\\\\s*[;}])\",\n      \"name\": \"entity.other.attribute-name.pseudo-element.css\"\n    },\n    \"rule-list\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#rule-list-innards\"\n        }\n      ]\n    },\n    \"rule-list-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#font-features\"\n        },\n        {\n          \"match\": \"(?x) (?<![\\\\w-])\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n          \"name\": \"variable.css\"\n        },\n        {\n          \"begin\": \"(?<![-a-zA-Z])(?=[-a-zA-Z])\",\n          \"end\": \"$|(?![-a-zA-Z])\",\n          \"name\": \"meta.property-name.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property-names\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            }\n          },\n          \"end\": \"\\\\s*(;)|\\\\s*(?=}|\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"contentName\": \"meta.property-value.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#property-values\"\n            }\n          ]\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      ]\n    },\n    \"selector\": {\n      \"begin\": \"(?x)\\n(?=\\n  (?:\\\\|)?                    # Possible anonymous namespace prefix\\n  (?:\\n    [-\\\\[:.*\\\\#a-zA-Z_]       # Valid selector character\\n    |\\n    [^\\\\x00-\\\\x7F]            # Which can include non-ASCII symbols\\n    |\\n    \\\\\\\\                      # Or an escape sequence\\n    (?:[0-9a-fA-F]{1,6}|.)\\n  )\\n)\",\n      \"end\": \"(?=\\\\s*[/@{)])\",\n      \"name\": \"meta.selector.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#selector-innards\"\n        }\n      ]\n    },\n    \"selector-innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#commas\"\n        },\n        {\n          \"include\": \"#escapes\"\n        },\n        {\n          \"include\": \"#combinators\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.namespace-prefix.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.css\"\n            }\n          },\n          \"match\": \"(?x)\\n(?:^|(?<=[\\\\s,(};]))         # Follows whitespace, comma, semicolon, or bracket\\n(?!\\n  [-\\\\w*]+\\n  \\\\|\\n  (?!\\n      [-\\\\[:.*\\\\#a-zA-Z_]    # Make sure there's a selector to match\\n    | [^\\\\x00-\\\\x7F]\\n  )\\n)\\n(\\n  (?: [-a-zA-Z_]    | [^\\\\x00-\\\\x7F] )   # First letter\\n  (?: [-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]     # Remainder of identifier\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n  )*\\n  |\\n  \\\\*     # Universal namespace\\n)?\\n(\\\\|)     # Namespace separator\"\n        },\n        {\n          \"include\": \"#tag-names\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"entity.name.tag.wildcard.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x) (?<![@\\\\w-])\\n([.\\\\#])\\n# Invalid identifier\\n(\\n  (?:\\n    # Starts with ASCII digits, with possible hyphen preceding it\\n    -?[0-9]\\n    |\\n    # Consists of a hyphen only\\n    -                                      # Terminated by either:\\n    (?= $                                  # - End-of-line\\n      | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Followed by another selector\\n      | /\\\\*                               # - Followed by a block comment\\n    )\\n    |\\n    # Name contains unescaped ASCII symbol\\n    (?:                                    # Check for acceptable preceding characters\\n        [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # - Valid selector character\\n      | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)         # - Escape sequence\\n    )*\\n    (?:                                    # Invalid punctuation\\n      [!\\\"'%&(*;<?@^`|\\\\]}]                 # - NOTE: We exempt `)` from the list of checked\\n      |                                    #   symbols to avoid matching `:not(.invalid)`\\n      / (?!\\\\*)                            # - Avoid invalidating the start of a comment\\n    )+\\n  )\\n  # Mark remainder of selector invalid\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]         # - Otherwise valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)           # - Escape sequence\\n  )*\\n)\",\n          \"name\": \"invalid.illegal.bad-identifier.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x)\\n(\\\\.)                                  # Valid class-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Another selector\\n  | /\\\\*                               # - A block comment\\n)\",\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?x)\\n(\\\\#)\\n(\\n  -?\\n  (?![0-9])\\n  (?:[-a-zA-Z0-9_]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+\\n)\\n(?=$|[\\\\s,.\\\\#)\\\\[:{>+~|]|/\\\\*)\",\n          \"name\": \"entity.other.attribute-name.id.css\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.entity.begin.bracket.square.css\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.entity.end.bracket.square.css\"\n            }\n          },\n          \"name\": \"meta.attribute-selector.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-block\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.ignore-case.css\"\n                }\n              },\n              \"match\": \"(?<=[\\\"'\\\\s]|^|\\\\*/)\\\\s*([iI])\\\\s*(?=[\\\\s\\\\]]|/\\\\*|$)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"string.unquoted.attribute-value.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)(?<==)\\\\s*((?!/\\\\*)(?:[^\\\\\\\\\\\"'\\\\s\\\\]]|\\\\\\\\.)+)\"\n            },\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"match\": \"[~|^$*]?=\",\n              \"name\": \"keyword.operator.pattern.css\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"punctuation.separator.css\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.other.namespace-prefix.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n# Qualified namespace prefix\\n( -?(?!\\\\d)(?:[\\\\w-]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+\\n| \\\\*\\n)\\n# Lookahead to ensure there's a valid identifier ahead\\n(?=\\n  \\\\| (?!\\\\s|=|$|\\\\])\\n  (?: -?(?!\\\\d)\\n   |   [\\\\\\\\\\\\w-]\\n   |   [^\\\\x00-\\\\x7F]\\n   )\\n)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.other.attribute-name.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escapes\"\n                    }\n                  ]\n                }\n              },\n              \"match\": \"(?x)\\n(-?(?!\\\\d)(?>[\\\\w-]|[^\\\\x00-\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}|.))+)\\n\\\\s*\\n(?=[~|^\\\\]$*=]|/\\\\*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pseudo-classes\"\n        },\n        {\n          \"include\": \"#pseudo-elements\"\n        },\n        {\n          \"include\": \"#functional-pseudo-classes\"\n        },\n        {\n          \"match\": \"(?x) (?<![@\\\\w-])\\n(?=            # Custom element names must:\\n  [a-z]        # - start with a lowercase ASCII letter,\\n  \\\\w* -       # - contain at least one dash\\n)\\n(?:\\n  (?![A-Z])    # No uppercase ASCII letters are allowed\\n  [\\\\w-]       # Allow any other word character or dash\\n)+\\n(?![(\\\\w-])\",\n          \"name\": \"entity.name.tag.custom.css\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"|(?<!\\\\\\\\)(?=$|\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\\\\\\\\\"]|\\\\\\\\.)+$)\",\n              \"end\": \"$\",\n              \"name\": \"invalid.illegal.unclosed.string.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'|(?<!\\\\\\\\)(?=$|\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:\\\\G|^)(?=(?:[^\\\\\\\\']|\\\\\\\\.)+$)\",\n              \"end\": \"$\",\n              \"name\": \"invalid.illegal.unclosed.string.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escapes\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-names\": {\n      \"match\": \"(?xi) (?<![\\\\w:-])\\n(?:\\n    # HTML\\n    a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\\n  | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\\n  | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\\n  | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\\n  | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\\n  | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\\n  | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\\n  | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\\n  | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\\n  | track|tt|u|ul|var|video|wbr|xmp\\n\\n  # SVG\\n  | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\\n  | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\\n  | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\\n  | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\\n  | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\\n  | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\\n  | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\\n  | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\\n  | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\\n  | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\\n\\n  # MathML\\n  | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\\n  | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\\n  | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\\n  | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\\n)\\n(?=[+~>\\\\s,.\\\\#|){:\\\\[]|/\\\\*|$)\",\n      \"name\": \"entity.name.tag.css\"\n    },\n    \"unicode-range\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.other.unicode-range.css\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.separator.dash.unicode-range.css\"\n        }\n      },\n      \"match\": \"(?<![\\\\w-])[Uu]\\\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\\\w-])\"\n    },\n    \"url\": {\n      \"begin\": \"(?i)(?<![\\\\w@-])(url)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.url.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.begin.bracket.round.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.function.end.bracket.round.css\"\n        }\n      },\n      \"name\": \"meta.function.url.css\",\n      \"patterns\": [\n        {\n          \"match\": \"[^'\\\")\\\\s]+\",\n          \"name\": \"variable.parameter.url.css\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"include\": \"#escapes\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/cue.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"cue\",\n  \"fileTypes\": [\"cue\"],\n  \"scopeName\": \"source.cue\",\n  \"patterns\": [\n    {\n      \"include\": \"#whitespace\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(package)[ \\\\t]+([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.package\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.namespace\"\n        }\n      }\n    },\n    {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(import)[ \\\\t]+(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parens.begin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#whitespace\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"(?:([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*)[ \\\\t]+)?(\\\")([^:\\\"]+)(?:(:)([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*))?(\\\")\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.namespace\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.string.begin\"\n                },\n                \"3\": {\n                  \"name\": \"string.quoted.double-import\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.colon\"\n                },\n                \"5\": {\n                  \"name\": \"entity.name\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.string.end\"\n                }\n              },\n              \"name\": \"meta.import-spec\"\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.separator\"\n            },\n            {\n              \"include\": \"#invalid_in_parens\"\n            }\n          ],\n          \"name\": \"meta.imports\"\n        },\n        {\n          \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(import)[ \\\\t]+(?:([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*)[ \\\\t]+)?(\\\")([^:\\\"]+)(?:(:)([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*))?(\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            },\n            \"4\": {\n              \"name\": \"string.quoted.double-import\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.colon\"\n            },\n            \"6\": {\n              \"name\": \"entity.name\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"name\": \"meta.import\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#punctuation_comma\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"include\": \"#invalid_in_braces\"\n    }\n  ],\n  \"repository\": {\n    \"attribute_element\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.bind\"\n            }\n          },\n          \"end\": \"(?=[,\\\\)])\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute_string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.attribute-elements.begin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.attribute-elements.end\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation_comma\"\n            },\n            {\n              \"include\": \"#attribute_element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#attribute_string\"\n        }\n      ]\n    },\n    \"attribute_string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"[^\\\\n,\\\"'#=\\\\(\\\\)]+\",\n          \"name\": \"string.unquoted\"\n        },\n        {\n          \"match\": \"[^,\\\\)]+\",\n          \"name\": \"invalid\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"(//).*$\\\\n?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment\"\n            }\n          },\n          \"name\": \"comment.line\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment\"\n            }\n          },\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@)([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation\"\n            },\n            \"2\": {\n              \"name\": \"variable.annotation\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.attribute-elements.begin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.attribute-elements.end\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#punctuation_comma\"\n            },\n            {\n              \"include\": \"#attribute_element\"\n            }\n          ],\n          \"name\": \"meta.annotation\"\n        },\n        {\n          \"match\": \"(?<!:)::(?!:)\",\n          \"name\": \"punctuation.isa\"\n        },\n        {\n          \"include\": \"#punctuation_colon\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"punctuation.option\"\n        },\n        {\n          \"match\": \"(?<![=!><])=(?![=~])\",\n          \"name\": \"punctuation.bind\"\n        },\n        {\n          \"match\": \"<-\",\n          \"name\": \"punctuation.arrow\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(for)[ \\\\t]+([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(?:[ \\\\t]*(,)[ \\\\t]*([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+))?[ \\\\t]+(in)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.for\"\n                },\n                \"2\": {\n                  \"name\": \"variable.other\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator\"\n                },\n                \"4\": {\n                  \"name\": \"variable.other\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.control.in\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])if(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"keyword.control.conditional\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(let)[ \\\\t]+([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)[ \\\\t]*(=)(?![=])\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.let\"\n                },\n                \"2\": {\n                  \"name\": \"variable.other\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.bind\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"patterns\": [\n            {\n              \"match\": \"[\\\\+\\\\-\\\\*]|/(?![/*])\",\n              \"name\": \"keyword.operator\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(?:div|mod|quo|rem)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"keyword.operator.word\"\n            },\n            {\n              \"match\": \"=[=~]|![=~]|<=|>=|[<](?![-=])|[>](?![=])\",\n              \"name\": \"keyword.operator.comparison\"\n            },\n            {\n              \"match\": \"&{2}|\\\\|{2}|!(?![=~])\",\n              \"name\": \"keyword.operator.logical\"\n            },\n            {\n              \"match\": \"&(?!&)|\\\\|(?!\\\\|)\",\n              \"name\": \"keyword.operator.set\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)(\\\\.)([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.member\"\n            }\n          }\n        },\n        {\n          \"patterns\": [\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])_(?!\\\\|)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"constant.language.top\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])_\\\\|_(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"constant.language.bottom\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])null(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"constant.language.null\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(?:true|false)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"constant.language.bool\"\n            },\n            {\n              \"patterns\": [\n                {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])[0-9](?:_?[0-9])*\\\\.(?:[0-9](?:_?[0-9])*)?(?:[eE][\\\\+\\\\-]?[0-9](?:_?[0-9])*)?(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.float.decimal\"\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])[0-9](?:_?[0-9])*[eE][\\\\+\\\\-]?[0-9](?:_?[0-9])*(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.float.decimal\"\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])\\\\.[0-9](?:_?[0-9])*(?:[eE][\\\\+\\\\-]?[0-9](?:_?[0-9])*)?(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.float.decimal\"\n                    }\n                  ]\n                },\n                {\n                  \"patterns\": [\n                    {\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])(?:0|[1-9](?:_?[0-9])*)(?:\\\\.[0-9](?:_?[0-9])*)?(?:[KMGTPEYZ]i?)(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                          \"name\": \"constant.numeric.integer.other\"\n                        },\n                        {\n                          \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])\\\\.[0-9](?:_?[0-9])*(?:[KMGTPEYZ]i?)(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                          \"name\": \"constant.numeric.integer.other\"\n                        }\n                      ]\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])(?:0|[1-9](?:_?[0-9])*)(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.integer.decimal\"\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])0b[0-1](?:_?[0-1])*(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.integer.binary\"\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.integer.hexadecimal\"\n                    },\n                    {\n                      \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\.])0o?[0-7](?:_?[0-7])*(?![\\\\p{L}\\\\p{Nd}_\\\\.])\",\n                      \"name\": \"constant.numeric.integer.octal\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(?:bool|u?int(?:8|16|32|64|128)?|float(?:32|64)?|string|bytes|number|rune)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"support.type\"\n            },\n            {\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(len|close|and|or)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.function\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.section.parens.begin\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.parens.end\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#whitespace\"\n                    },\n                    {\n                      \"include\": \"#comment\"\n                    },\n                    {\n                      \"include\": \"#punctuation_comma\"\n                    },\n                    {\n                      \"include\": \"#expression\"\n                    },\n                    {\n                      \"include\": \"#invalid_in_parens\"\n                    }\n                  ],\n                  \"name\": \"meta.function-call\"\n                },\n                {\n                  \"begin\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*)(\\\\.)(\\\\p{Lu}[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.module\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation\"\n                    },\n                    \"3\": {\n                      \"name\": \"support.function\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.section.parens.begin\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.parens.end\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#whitespace\"\n                    },\n                    {\n                      \"include\": \"#comment\"\n                    },\n                    {\n                      \"include\": \"#punctuation_comma\"\n                    },\n                    {\n                      \"include\": \"#expression\"\n                    },\n                    {\n                      \"include\": \"#invalid_in_parens\"\n                    }\n                  ],\n                  \"name\": \"meta.function-call\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])(?:[\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)(?![\\\\p{L}\\\\p{Nd}_\\\\$\\\\#])\",\n              \"name\": \"variable.other\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.struct.begin\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.struct.end\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#punctuation_comma\"\n                },\n                {\n                  \"include\": \"#punctuation_ellipsis\"\n                },\n                {\n                  \"include\": \"#declaration\"\n                },\n                {\n                  \"include\": \"#invalid_in_braces\"\n                }\n              ],\n              \"name\": \"meta.struct\"\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.brackets.begin\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.brackets.end\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#punctuation_colon\"\n                },\n                {\n                  \"include\": \"#punctuation_comma\"\n                },\n                {\n                  \"include\": \"#punctuation_ellipsis\"\n                },\n                {\n                  \"match\": \"([\\\\p{L}\\\\$\\\\#][\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]*|_[\\\\p{L}\\\\p{Nd}_\\\\$\\\\#]+)[ \\\\t]*(=)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable.other\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.alias\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"match\": \"[^\\\\]]+\",\n                  \"name\": \"invalid\"\n                }\n              ],\n              \"name\": \"meta.brackets\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#punctuation_comma\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"invalid_in_braces\": {\n      \"match\": \"[^\\\\}]+\",\n      \"name\": \"invalid\"\n    },\n    \"invalid_in_parens\": {\n      \"match\": \"[^\\\\)]+\",\n      \"name\": \"invalid\"\n    },\n    \"punctuation_colon\": {\n      \"match\": \"(?<!:):(?!:)\",\n      \"name\": \"punctuation.colon\"\n    },\n    \"punctuation_comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator\"\n    },\n    \"punctuation_ellipsis\": {\n      \"match\": \"(?<!\\\\.)\\\\.{3}(?!\\\\.)\",\n      \"name\": \"punctuation.ellipsis\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.double-multiline\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\#(?:\\\"\\\"\\\"|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"invalid.illegal\"\n            },\n            {\n              \"begin\": \"\\\\\\\\#\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\#.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"#\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"\\\"#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.double\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\#(?:\\\"|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"invalid.illegal\"\n            },\n            {\n              \"begin\": \"\\\\\\\\#\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\#.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"#'''\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"'''#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.single-multiline\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\#(?:'''|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"begin\": \"\\\\\\\\#\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\#.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"#'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"'#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.single\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\#(?:'|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"begin\": \"\\\\\\\\#\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\#.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.double-multiline\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:\\\"\\\"\\\"|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"invalid.illegal\"\n            },\n            {\n              \"begin\": \"\\\\\\\\\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.double\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:\\\"|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"invalid.illegal\"\n            },\n            {\n              \"begin\": \"\\\\\\\\\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"'''\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"'''\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.single-multiline\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:'''|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"begin\": \"\\\\\\\\\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.single\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:'|/|\\\\\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})\",\n              \"name\": \"constant.character.escape\"\n            },\n            {\n              \"begin\": \"\\\\\\\\\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.begin\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.interpolation.end\"\n                }\n              },\n              \"contentName\": \"source.cue.embedded\",\n              \"patterns\": [\n                {\n                  \"include\": \"#whitespace\"\n                },\n                {\n                  \"include\": \"#expression\"\n                },\n                {\n                  \"include\": \"#invalid_in_parens\"\n                }\n              ],\n              \"name\": \"meta.interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal\"\n            }\n          ],\n          \"name\": \"meta.string\"\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end\"\n            }\n          },\n          \"contentName\": \"string.quoted.backtick\",\n          \"name\": \"meta.string\"\n        }\n      ]\n    },\n    \"whitespace\": {\n      \"match\": \"[ \\\\t\\\\r\\\\n]+\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/d.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"d\", \"di\", \"dpp\"],\n  \"name\": \"d\",\n  \"scopeName\": \"source.d\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#statement\"\n    },\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof\"\n        },\n        {\n          \"include\": \"#base-type\"\n        },\n        {\n          \"include\": \"#type-ctor\"\n        },\n        {\n          \"begin\": \"!\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"base-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(auto|bool|byte|ubyte|short|ushort|int|uint|long|ulong|char|wchar|dchar|float|double|real|ifloat|idouble|ireal|cfloat|cdouble|creal|void)\\\\b\",\n          \"name\": \"storage.type.basic-type.d\"\n        },\n        {\n          \"match\": \"\\\\b(string|wstring|dstring|size_t|ptrdiff_t)\\\\b(?!\\\\s*=)\",\n          \"name\": \"storage.type.basic-type.d\"\n        }\n      ]\n    },\n    \"extended-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\b\",\n          \"name\": \"entity.name.type.d\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.array.expression.begin.d\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.array.expression.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\\\\.|\\\\$\",\n              \"name\": \"keyword.operator.slice.d\"\n            },\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-ctor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(const|immutable|inout|shared)\\\\b\",\n          \"name\": \"storage.type.modifier.d\"\n        }\n      ]\n    },\n    \"typeof\": {\n      \"begin\": \"typeof\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"keyword.token.typeof.d\",\n      \"patterns\": [\n        {\n          \"match\": \"return\",\n          \"name\": \"keyword.control.return.d\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#index-expression\"\n        },\n        {\n          \"include\": \"#expression-no-index\"\n        }\n      ]\n    },\n    \"expression-no-index\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-literal\"\n        },\n        {\n          \"include\": \"#assert-expression\"\n        },\n        {\n          \"include\": \"#assign-expression\"\n        },\n        {\n          \"include\": \"#mixin-expression\"\n        },\n        {\n          \"include\": \"#import-expression\"\n        },\n        {\n          \"include\": \"#traits-expression\"\n        },\n        {\n          \"include\": \"#is-expression\"\n        },\n        {\n          \"include\": \"#typeid-expression\"\n        },\n        {\n          \"include\": \"#shift-expression\"\n        },\n        {\n          \"include\": \"#logical-expression\"\n        },\n        {\n          \"include\": \"#rel-expression\"\n        },\n        {\n          \"include\": \"#bitwise-expression\"\n        },\n        {\n          \"include\": \"#identity-expression\"\n        },\n        {\n          \"include\": \"#in-expression\"\n        },\n        {\n          \"include\": \"#conditional-expression\"\n        },\n        {\n          \"include\": \"#arithmetic-expression\"\n        },\n        {\n          \"include\": \"#new-expression\"\n        },\n        {\n          \"include\": \"#delete-expression\"\n        },\n        {\n          \"include\": \"#cast-expression\"\n        },\n        {\n          \"include\": \"#type-specialization\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#special-keyword\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#parentheses-expression\"\n        },\n        {\n          \"include\": \"#lexical\"\n        }\n      ]\n    },\n    \"assign-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \">>>=|\\\\^\\\\^=|>>=|<<=|~=|\\\\^=|\\\\|=|&=|%=|/=|\\\\*=|-=|\\\\+=|=(?!>)\",\n          \"name\": \"keyword.operator.assign.d\"\n        }\n      ]\n    },\n    \"conditional-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s(\\\\?|:)\\\\s\",\n          \"name\": \"keyword.operator.ternary.d\"\n        }\n      ]\n    },\n    \"logical-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\|\\\\||&&|==|!=|!\",\n          \"name\": \"keyword.operator.logical.d\"\n        }\n      ]\n    },\n    \"bitwise-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\||\\\\^|&\",\n          \"name\": \"keyword.operator.bitwise.d\"\n        }\n      ]\n    },\n    \"identity-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(is|!is)\\\\b\",\n          \"name\": \"keyword.operator.identity.d\"\n        }\n      ]\n    },\n    \"rel-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"!<>=|!<>|<>=|!>=|!<=|<=|>=|<>|!>|!<|<|>\",\n          \"name\": \"keyword.operator.rel.d\"\n        }\n      ]\n    },\n    \"in-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|!in)\\\\b\",\n          \"name\": \"keyword.operator.in.d\"\n        }\n      ]\n    },\n    \"shift-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"<<|>>|>>>\",\n          \"name\": \"keyword.operator.shift.d\"\n        },\n        {\n          \"include\": \"#add-expression\"\n        }\n      ]\n    },\n    \"arithmetic-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^\\\\^|\\\\+\\\\+|--|(?<!/)\\\\+(?!/)|-|~|(?<!/)\\\\*(?!/)|(?<![+*/])/(?![+*/])|%\",\n          \"name\": \"keyword.operator.numeric.d\"\n        }\n      ]\n    },\n    \"new-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bnew\\\\s+\",\n          \"name\": \"keyword.other.new.d\"\n        }\n      ]\n    },\n    \"delete-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdelete\\\\s+\",\n          \"name\": \"keyword.other.delete.d\"\n        }\n      ]\n    },\n    \"cast-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(cast)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.cast.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.cast.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.cast.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#extended-type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"index-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\.\\\\.|\\\\$\",\n              \"name\": \"keyword.operator.slice.d\"\n            },\n            {\n              \"include\": \"#expression-no-index\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.lambda.d\"\n        },\n        {\n          \"match\": \"\\\\b(function|delegate)\\\\b\",\n          \"name\": \"keyword.other.function-literal.d\"\n        },\n        {\n          \"begin\": \"\\\\b([_\\\\w][_\\\\d\\\\w]*)\\\\s*(=>)\",\n          \"end\": \"(?=[\\\\);,\\\\]}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.lexical.token.symbolic.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.d\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\)|\\\\()(\\\\s*)({)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"source.d\"\n            },\n            \"2\": {\n              \"name\": \"source.d\"\n            }\n          },\n          \"end\": \"}\",\n          \"patterns\": [\n            {\n              \"include\": \"source.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assert-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bassert\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.assert.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.assert.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mixin-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.mixin.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(import)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.import.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.import.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeid-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\btypeid\\\\s*(?=\\\\()\",\n          \"name\": \"keyword.other.typeid.d\"\n        }\n      ]\n    },\n    \"type-specialization\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct|union|class|interface|enum|function|delegate|super|const|immutable|inout|shared|return|__parameters)\\\\b\",\n          \"name\": \"keyword.other.storage.type-specialization.d\"\n        }\n      ]\n    },\n    \"traits-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b__traits\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.traits.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.traits.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#traits-keyword\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#traits-argument\"\n            }\n          ]\n        }\n      ]\n    },\n    \"traits-keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"isAbstractClass|isArithmetic|isAssociativeArray|isFinalClass|isPOD|isNested|isFloating|isIntegral|isScalar|isStaticArray|isUnsigned|isVirtualFunction|isVirtualMethod|isAbstractFunction|isFinalFunction|isStaticFunction|isOverrideFunction|isRef|isOut|isLazy|hasMember|identifier|getAliasThis|getAttributes|getMember|getOverloads|getProtection|getVirtualFunctions|getVirtualMethods|getUnitTests|parent|classInstanceSize|getVirtualIndex|allMembers|derivedMembers|isSame|compiles\",\n          \"name\": \"support.constant.traits-keyword.d\"\n        }\n      ]\n    },\n    \"traits-arguments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#traits-argument\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"traits-argument\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"special-keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__FILE__|__FILE_FULL_PATH__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__)\\\\b\",\n          \"name\": \"constant.language.special-keyword.d\"\n        }\n      ]\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#non-block-statement\"\n        },\n        {\n          \"include\": \"#semi-colon\"\n        }\n      ]\n    },\n    \"non-block-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#module-declaration\"\n        },\n        {\n          \"include\": \"#labeled-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#static-foreach\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#foreach-reverse-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#final-switch-statement\"\n        },\n        {\n          \"include\": \"#case-statement\"\n        },\n        {\n          \"include\": \"#default-statement\"\n        },\n        {\n          \"include\": \"#continue-statement\"\n        },\n        {\n          \"include\": \"#break-statement\"\n        },\n        {\n          \"include\": \"#return-statement\"\n        },\n        {\n          \"include\": \"#goto-statement\"\n        },\n        {\n          \"include\": \"#with-statement\"\n        },\n        {\n          \"include\": \"#synchronized-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        },\n        {\n          \"include\": \"#catches\"\n        },\n        {\n          \"include\": \"#scope-guard-statement\"\n        },\n        {\n          \"include\": \"#throw-statement\"\n        },\n        {\n          \"include\": \"#finally-statement\"\n        },\n        {\n          \"include\": \"#asm-statement\"\n        },\n        {\n          \"include\": \"#pragma-statement\"\n        },\n        {\n          \"include\": \"#mixin-statement\"\n        },\n        {\n          \"include\": \"#conditional-statement\"\n        },\n        {\n          \"include\": \"#static-assert\"\n        },\n        {\n          \"include\": \"#deprecated-statement\"\n        },\n        {\n          \"include\": \"#unit-test\"\n        },\n        {\n          \"include\": \"#declaration-statement\"\n        }\n      ]\n    },\n    \"labeled-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?!abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)[a-zA-Z_][a-zA-Z_0-9]*\\\\s*:\",\n          \"name\": \"entity.name.d\"\n        }\n      ]\n    },\n    \"declaration-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(if)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\\\\s*\",\n          \"name\": \"keyword.control.else.d\"\n        }\n      ]\n    },\n    \"while-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(while)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.while.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdo\\\\b\",\n          \"name\": \"keyword.control.do.d\"\n        }\n      ]\n    },\n    \"for-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(for)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"foreach-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(foreach)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.foreach.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"foreach-reverse-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(foreach_reverse)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.foreach_reverse.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(switch)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"case-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(case)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.range.d\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.case.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"default-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(default)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.default.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.default.colon.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"final-switch-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(final\\\\s+switch)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.final.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"continue-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bcontinue\\\\b\",\n          \"name\": \"keyword.control.continue.d\"\n        }\n      ]\n    },\n    \"break-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbreak\\\\b\",\n          \"name\": \"keyword.control.break.d\"\n        }\n      ]\n    },\n    \"return-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\breturn\\\\b\",\n          \"name\": \"keyword.control.return.d\"\n        }\n      ]\n    },\n    \"goto-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bgoto\\\\s+default\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\s+case\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\b\",\n          \"name\": \"keyword.control.goto.d\"\n        }\n      ]\n    },\n    \"with-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(with)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.with.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"synchronized-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(synchronized)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.synchronized.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\btry\\\\b\",\n          \"name\": \"keyword.control.try.d\"\n        }\n      ]\n    },\n    \"catches\": {\n      \"patterns\": [\n        {\n          \"include\": \"#catch\"\n        }\n      ]\n    },\n    \"catch\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(catch)\\\\b\\\\s*(?=\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.catch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"finally-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bfinally\\\\b\",\n          \"name\": \"keyword.control.throw.d\"\n        }\n      ]\n    },\n    \"throw-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.control.throw.d\"\n        }\n      ]\n    },\n    \"scope-guard-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bscope\\\\s*\\\\((exit|success|failure)\\\\)\",\n          \"name\": \"keyword.control.scope.d\"\n        }\n      ]\n    },\n    \"asm-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(asm)\\\\b\\\\s*(?=\\\\{)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\{\",\n              \"end\": \"\\\\}\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.asm.begin.d\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.asm.end.d\"\n                }\n              },\n              \"contentName\": \"gfm.markup.raw.assembly.d\",\n              \"patterns\": [\n                {\n                  \"include\": \"#asm-instruction\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"pragma-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pragma\"\n        }\n      ]\n    },\n    \"mixin-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.mixin.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"is-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bis\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.token.is.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.token.is.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parentheses-expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"deprecated-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bdeprecated\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.deprecated.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.deprecated.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bdeprecated\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"keyword.other.deprecated.plain.d\"\n        }\n      ]\n    },\n    \"asm-instruction\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"\\\\b(align|even|naked|db|ds|di|dl|df|dd|de)\\\\b|:\",\n          \"name\": \"keyword.asm-instruction.d\"\n        },\n        {\n          \"match\": \"\\\\b__LOCAL_SIZE\\\\b\",\n          \"name\": \"constant.language.assembly.d\"\n        },\n        {\n          \"match\": \"\\\\b(offsetof|seg)\\\\b\",\n          \"name\": \"support.type.assembly.d\"\n        },\n        {\n          \"include\": \"#asm-type-prefix\"\n        },\n        {\n          \"include\": \"#asm-primary-expression\"\n        },\n        {\n          \"include\": \"#operands\"\n        },\n        {\n          \"include\": \"#register\"\n        },\n        {\n          \"include\": \"#register-64\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"operands\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\?|:\",\n          \"name\": \"keyword.operator.ternary.assembly.d\"\n        },\n        {\n          \"match\": \"\\\\]|\\\\[\",\n          \"name\": \"keyword.operator.bracket.assembly.d\"\n        },\n        {\n          \"match\": \">>>|\\\\|\\\\||&&|==|!=|<=|>=|<<|>>|\\\\||\\\\^|&|<|>|\\\\+|-|\\\\*|/|%|~|!\",\n          \"name\": \"keyword.operator.assembly.d\"\n        }\n      ]\n    },\n    \"asm-type-prefix\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((near\\\\s+ptr)|(far\\\\s+ptr)|(byte\\\\s+ptr)|(short\\\\s+ptr)|(int\\\\s+ptr)|(word\\\\s+ptr)|(dword\\\\s+ptr)|(qword\\\\s+ptr)|(float\\\\s+ptr)|(double\\\\s+ptr)|(real\\\\s+ptr))\\\\b\",\n          \"name\": \"support.type.asm-type-prefix.d\"\n        }\n      ]\n    },\n    \"register\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(XMM0|XMM1|XMM2|XMM3|XMM4|XMM5|XMM6|XMM7|MM0|MM1|MM2|MM3|MM4|MM5|MM6|MM7|ST\\\\(0\\\\)|ST\\\\(1\\\\)|ST\\\\(2\\\\)|ST\\\\(3\\\\)|ST\\\\(4\\\\)|ST\\\\(5\\\\)|ST\\\\(6\\\\)|ST\\\\(7\\\\)|ST|TR1|TR2|TR3|TR4|TR5|TR6|TR7|DR0|DR1|DR2|DR3|DR4|DR5|DR6|DR7|CR0|CR2|CR3|CR4|EAX|EBX|ECX|EDX|EBP|ESP|EDI|ESI|AL|AH|AX|BL|BH|BX|CL|CH|CX|DL|DH|DX|BP|SP|DI|SI|ES|CS|SS|DS|GS|FS)\\\\b\",\n          \"name\": \"storage.type.assembly.register.d\"\n        }\n      ]\n    },\n    \"register-64\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(RAX|RBX|RCX|RDX|BPL|RBP|SPL|RSP|DIL|RDI|SIL|RSI|R8B|R8W|R8D|R8|R9B|R9W|R9D|R9|R10B|R10W|R10D|R10|R11B|R11W|R11D|R11|R12B|R12W|R12D|R12|R13B|R13W|R13D|R13|R14B|R14W|R14D|R14|R15B|R15W|R15D|R15|XMM8|XMM9|XMM10|XMM11|XMM12|XMM13|XMM14|XMM15|YMM0|YMM1|YMM2|YMM3|YMM4|YMM5|YMM6|YMM7|YMM8|YMM9|YMM10|YMM11|YMM12|YMM13|YMM14|YMM15)\\\\b\",\n          \"name\": \"storage.type.assembly.register-64.d\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#alias-declaration\"\n        },\n        {\n          \"include\": \"#aggregate-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#storage-class\"\n        },\n        {\n          \"include\": \"#void-initializer\"\n        },\n        {\n          \"include\": \"#mixin-declaration\"\n        }\n      ]\n    },\n    \"alias-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(alias)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.alias.d\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.alias.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"match\": \"=(?![=>])\",\n              \"name\": \"keyword.operator.equal.alias.d\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(deprecated|enum|static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\\\b\",\n          \"name\": \"storage.class.d\"\n        },\n        {\n          \"include\": \"#linkage-attribute\"\n        },\n        {\n          \"include\": \"#align-attribute\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"void-initializer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bvoid\\\\b\",\n          \"name\": \"support.type.void.d\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-attribute\"\n        },\n        {\n          \"include\": \"#function-prelude\"\n        }\n      ]\n    },\n    \"function-prelude\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?!typeof|typeid)((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\s*(?=\\\\()\",\n          \"name\": \"entity.name.function.d\"\n        }\n      ]\n    },\n    \"class-members\": {\n      \"patterns\": [\n        {\n          \"include\": \"#shared-static-constructor\"\n        },\n        {\n          \"include\": \"#shared-static-destructor\"\n        },\n        {\n          \"include\": \"#constructor\"\n        },\n        {\n          \"include\": \"#destructor\"\n        },\n        {\n          \"include\": \"#postblit\"\n        },\n        {\n          \"include\": \"#invariant\"\n        },\n        {\n          \"include\": \"#member-function-attribute\"\n        }\n      ]\n    },\n    \"function-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(nothrow|pure)\\\\b\",\n          \"name\": \"storage.type.modifier.function-attribute.d\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"member-function-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|immutable|inout|shared)\\\\b\",\n          \"name\": \"storage.type.modifier.member-function-attribute\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#in-statement\"\n        },\n        {\n          \"include\": \"#out-statement\"\n        },\n        {\n          \"include\": \"#body-statement\"\n        },\n        {\n          \"include\": \"#block-statement\"\n        }\n      ]\n    },\n    \"in-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.control.in.d\"\n        }\n      ]\n    },\n    \"out-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bout\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.out.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.out.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bout\\\\b\",\n          \"name\": \"keyword.control.out.d\"\n        }\n      ]\n    },\n    \"body-statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbody\\\\b\",\n          \"name\": \"keyword.control.body.d\"\n        }\n      ]\n    },\n    \"constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"entity.name.function.constructor.d\"\n        }\n      ]\n    },\n    \"destructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b~this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.destructor.d\"\n        }\n      ]\n    },\n    \"postblit\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthis\\\\s*\\\\(\\\\s*this\\\\s*\\\\)\\\\s\",\n          \"name\": \"entity.name.class.postblit.d\"\n        }\n      ]\n    },\n    \"invariant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\binvariant\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.invariant.d\"\n        }\n      ]\n    },\n    \"shared-static-constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(shared\\\\s+)?static\\\\s+this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.constructor.shared-static.d\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"shared-static-destructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(shared\\\\s+)?static\\\\s+~this\\\\s*\\\\(\\\\s*\\\\)\",\n          \"name\": \"entity.name.class.destructor.static.d\"\n        }\n      ]\n    },\n    \"aggregate-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#struct-declaration\"\n        },\n        {\n          \"include\": \"#union-declaration\"\n        },\n        {\n          \"include\": \"#mixin-template-declaration\"\n        },\n        {\n          \"include\": \"#template-declaration\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(class)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.d\"\n            }\n          }\n        },\n        {\n          \"include\": \"#protection-attribute\"\n        },\n        {\n          \"include\": \"#class-members\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(interface)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"struct-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"union-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(union)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.union.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.union.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"enum-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(enum)\\\\b\\\\s+(?=.*[=;])\",\n          \"end\": \"([A-Za-z_][\\\\w_\\\\d]*)\\\\s*(?=;|=|\\\\()(;)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.enum.d\"\n            },\n            \"2\": {\n              \"name\": \"meta.enum.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            },\n            {\n              \"include\": \"#extended-type\"\n            },\n            {\n              \"match\": \"=(?![=>])\",\n              \"name\": \"keyword.operator.equal.alias.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(template)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.template.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.template.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"mixin-template-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(mixin\\\\s*template)(?:\\\\s+([A-Za-z_][\\\\w_\\\\d]*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.mixintemplate.d\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.mixintemplate.d\"\n            }\n          }\n        }\n      ]\n    },\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#linkage-attribute\"\n        },\n        {\n          \"include\": \"#align-attribute\"\n        },\n        {\n          \"include\": \"#deprecated-attribute\"\n        },\n        {\n          \"include\": \"#protection-attribute\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"match\": \"\\\\b(static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\\\b\",\n          \"name\": \"entity.other.attribute-name.d\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    },\n    \"linkage-attribute\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bextern\\\\s*\\\\(\\\\s*C\\\\+\\\\+\\\\s*,\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.cplusplus.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.cplusplus.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#identifier\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bextern\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.extern.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#linkage-type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"linkage-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"C|C\\\\+\\\\+|D|Windows|Pascal|System\",\n          \"name\": \"storage.modifier.linkage-type.d\"\n        }\n      ]\n    },\n    \"align-attribute\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\balign\\\\s*\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"storage.modifier.align-attribute.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\balign\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"storage.modifier.align-attribute.d\"\n        }\n      ]\n    },\n    \"protection-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private|package|protected|public|export)\\\\b\",\n          \"name\": \"keyword.other.protections.d\"\n        }\n      ]\n    },\n    \"property\": {\n      \"patterns\": [\n        {\n          \"match\": \"@(property|safe|trusted|system|disable|nogc)\\\\b\",\n          \"name\": \"entity.name.tag.property.d\"\n        },\n        {\n          \"include\": \"#user-defined-attribute\"\n        }\n      ]\n    },\n    \"user-defined-attribute\": {\n      \"patterns\": [\n        {\n          \"match\": \"@([_\\\\w][_\\\\d\\\\w]*)\\\\b\",\n          \"name\": \"entity.name.tag.user-defined-property.d\"\n        },\n        {\n          \"begin\": \"@([_\\\\w][_\\\\d\\\\w]*)?\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"entity.name.tag.user-defined-property.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"pragma\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bpragma\\\\s*\\\\(\\\\s*[_\\\\w][_\\\\d\\\\w]*\\\\s*\\\\)\",\n          \"name\": \"keyword.other.pragma.d\"\n        },\n        {\n          \"begin\": \"\\\\bpragma\\\\s*\\\\(\\\\s*[_\\\\w][_\\\\d\\\\w]*\\\\s*,\",\n          \"end\": \"\\\\)\",\n          \"name\": \"keyword.other.pragma.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^#!.+\",\n          \"name\": \"gfm.markup.header.preprocessor.script-tag.d\"\n        }\n      ]\n    },\n    \"conditional-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#condition\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.control.else.d\"\n        },\n        {\n          \"include\": \"#colon\"\n        },\n        {\n          \"include\": \"#decl-defs\"\n        }\n      ]\n    },\n    \"conditional-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#condition\"\n        },\n        {\n          \"include\": \"#no-scope-non-empty-statement\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.control.else.d\"\n        }\n      ]\n    },\n    \"condition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#version-condition\"\n        },\n        {\n          \"include\": \"#debug-condition\"\n        },\n        {\n          \"include\": \"#static-if-condition\"\n        }\n      ]\n    },\n    \"version-condition\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bversion\\\\s*\\\\(\\\\s*unittest\\\\s*\\\\)\",\n          \"name\": \"keyword.other.version.unittest.d\"\n        },\n        {\n          \"match\": \"\\\\bversion\\\\s*\\\\(\\\\s*assert\\\\s*\\\\)\",\n          \"name\": \"keyword.other.version.assert.d\"\n        },\n        {\n          \"begin\": \"\\\\bversion\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.version.identifier.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.version.identifer.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            },\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#version-specification\"\n        }\n      ]\n    },\n    \"debug-condition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bdebug\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.debug.identifier.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.debug.identifier.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#integer-literal\"\n            },\n            {\n              \"include\": \"#identifier\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\bdebug\\\\b\\\\s*(?!\\\\()\",\n          \"name\": \"keyword.other.debug.plain.d\"\n        }\n      ]\n    },\n    \"version-specification\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bversion\\\\b\\\\s*(?==)\",\n          \"name\": \"keyword.other.version-specification.d\"\n        }\n      ]\n    },\n    \"debug-specification\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdebug\\\\b\\\\s*(?==)\",\n          \"name\": \"keyword.other.debug-specification.d\"\n        }\n      ]\n    },\n    \"static-if-condition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bstatic\\\\s+if\\\\b\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.static-if.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.static-if.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-assert\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bstatic\\\\s+assert\\\\b\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.static-assert.begin.d\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.static-assert.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-foreach\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(static\\\\s+foreach)\\\\b\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.static-foreach.d\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.d\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"module\": {\n      \"packages\": [\n        {\n          \"import\": \"#module-declaration\"\n        }\n      ]\n    },\n    \"module-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(module)\\\\s+\",\n          \"end\": \";\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.package.module.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.module.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#module-identifier\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(static\\\\s+)?(import)\\\\s+(?!\\\\()\",\n          \"end\": \";\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.package.import.d\"\n            },\n            \"2\": {\n              \"name\": \"keyword.package.import.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.import.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-identifier\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"mixin-declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bmixin\\\\s*\\\\(\",\n          \"end\": \"\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.mixin.begin.d\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.mixin.end.d\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comma\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"keyword.operator.comma.d\"\n        }\n      ]\n    },\n    \"colon\": {\n      \"patterns\": [\n        {\n          \"match\": \":\",\n          \"name\": \"support.type.colon.d\"\n        }\n      ]\n    },\n    \"equal\": {\n      \"patterns\": [\n        {\n          \"match\": \"=(?![=>])\",\n          \"name\": \"keyword.operator.equal.d\"\n        }\n      ]\n    },\n    \"semi-colon\": {\n      \"patterns\": [\n        {\n          \"match\": \";\\\\s*$\",\n          \"name\": \"meta.statement.end.d\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"keyword.operator.semi-colon.d\"\n        }\n      ]\n    },\n    \"lexical\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#character-literal\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#eof\"\n        },\n        {\n          \"include\": \"#special-tokens\"\n        },\n        {\n          \"include\": \"#special-token-sequence\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"integer-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decimal-integer\"\n        },\n        {\n          \"include\": \"#binary-integer\"\n        },\n        {\n          \"include\": \"#hexadecimal-integer\"\n        }\n      ]\n    },\n    \"decimal-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0(?=[^\\\\dxXbB]))|([1-9][0-9_]*)(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.d\"\n        }\n      ]\n    },\n    \"binary-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0b|0B)[0-1_]+(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.binary.d\"\n        }\n      ]\n    },\n    \"hexadecimal-integer\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0x|0X)([0-9a-fA-F][0-9a-fA-F_]*)(Lu|LU|uL|UL|L|u|U)?\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.d\"\n        }\n      ]\n    },\n    \"float-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decimal-float\"\n        },\n        {\n          \"include\": \"#hexadecimal-float\"\n        }\n      ]\n    },\n    \"decimal-float\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.[0-9])|(0\\\\.)|(([1-9]|(0[1-9_]))[0-9_]*\\\\.))[0-9_]*((e-|E-|e\\\\+|E\\\\+|e|E)[0-9][0-9_]*)?[LfF]?i?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.d\"\n        }\n      ]\n    },\n    \"hexadecimal-float\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b0[xX][0-9a-fA-F_]*(\\\\.[0-9a-fA-F_]*)?(p-|P-|p\\\\+|P\\\\+|p|P)[0-9][0-9_]*[LfF]?i?\\\\b\",\n          \"name\": \"constant.numeric.float.hexadecimal.d\"\n        }\n      ]\n    },\n    \"string-literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#wysiwyg-string\"\n        },\n        {\n          \"include\": \"#alternate-wysiwyg-string\"\n        },\n        {\n          \"include\": \"#hex-string\"\n        },\n        {\n          \"include\": \"#arbitrary-delimited-string\"\n        },\n        {\n          \"include\": \"#delimited-string\"\n        },\n        {\n          \"include\": \"#double-quoted-string\"\n        },\n        {\n          \"include\": \"#token-string\"\n        }\n      ]\n    },\n    \"wysiwyg-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"r\\\\\\\"\",\n          \"end\": \"\\\\\\\"[cwd]?\",\n          \"name\": \"string.wysiwyg-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"alternate-wysiwyg-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"`\",\n          \"end\": \"`[cwd]?\",\n          \"name\": \"string.alternate-wysiwyg-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-quoted-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"[cwd]?\",\n          \"name\": \"string.double-quoted-string.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#double-quoted-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"hex-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"x\\\"\",\n          \"end\": \"\\\"[cwd]?\",\n          \"name\": \"string.hex-string.d\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-fA-F0-9_s]+\",\n              \"name\": \"constant.character.hex-string.d\"\n            }\n          ]\n        }\n      ]\n    },\n    \"arbitrary-delimited-string\": {\n      \"begin\": \"q\\\"(\\\\w+)\",\n      \"end\": \"\\\\1\\\"\",\n      \"name\": \"string.delimited.d\",\n      \"patterns\": [\n        {\n          \"match\": \".\",\n          \"name\": \"string.delimited.d\"\n        }\n      ]\n    },\n    \"delimited-string\": {\n      \"begin\": \"q\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.delimited.d\",\n      \"patterns\": [\n        {\n          \"include\": \"#delimited-string-bracket\"\n        },\n        {\n          \"include\": \"#delimited-string-parens\"\n        },\n        {\n          \"include\": \"#delimited-string-angle-brackets\"\n        },\n        {\n          \"include\": \"#delimited-string-braces\"\n        }\n      ]\n    },\n    \"token-string\": {\n      \"begin\": \"q\\\\{\",\n      \"end\": \"\\\\}[cdw]?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.token.d\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.token.d\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#token-string-content\"\n        }\n      ]\n    },\n    \"delimited-string-bracket\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"name\": \"constant.characters.delimited.brackets.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"constant.character.delimited.parens.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-angle-brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<\",\n          \"end\": \">\",\n          \"name\": \"constant.character.angle-brackets.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"delimited-string-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"name\": \"constant.character.delimited.braces.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#wysiwyg-characters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"wysiwyg-characters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#end-of-line\"\n        }\n      ]\n    },\n    \"double-quoted-characters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#end-of-line\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        }\n      ]\n    },\n    \"escape-sequence\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|Aelig|Ccedil|egrave|eacute|ecirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|nabla|isin|notin|ni|prod|sum|minux|lowast|radic|prop|infin|ang|and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|loz|spades|clubs|hearts|diams|lang|rang))\",\n          \"name\": \"constant.character.escape-sequence.entity.d\"\n        },\n        {\n          \"match\": \"(\\\\\\\\x[0-9a-fA-F_]{2}|\\\\\\\\u[0-9a-fA-F_]{4}|\\\\\\\\U[0-9a-fA-F_]{8}|\\\\\\\\[0-7]{1,3})\",\n          \"name\": \"constant.character.escape-sequence.number.d\"\n        },\n        {\n          \"match\": \"(\\\\\\\\t|\\\\\\\\'|\\\\\\\\\\\"|\\\\\\\\\\\\?|\\\\\\\\0|\\\\\\\\a|\\\\\\\\b|\\\\\\\\f|\\\\\\\\n|\\\\\\\\r|\\\\\\\\v|\\\\\\\\\\\\\\\\)\",\n          \"name\": \"constant.character.escape-sequence.d\"\n        }\n      ]\n    },\n    \"character-literal\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.character-literal.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#character\"\n            },\n            {\n              \"include\": \"#escape-sequence\"\n            }\n          ]\n        }\n      ]\n    },\n    \"character\": {\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\w\\\\s]+\",\n          \"name\": \"string.character.d\"\n        }\n      ]\n    },\n    \"end-of-line\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\n+\",\n          \"name\": \"string.character.end-of-line.d\"\n        }\n      ]\n    },\n    \"identifier-list\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"keyword.other.comma.d\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b((\\\\.\\\\s*)?[_\\\\w][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_\\\\w][_\\\\d\\\\w]*)*\\\\b\",\n          \"name\": \"variable.d\"\n        }\n      ]\n    },\n    \"module-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_a-zA-Z][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_a-zA-Z][_\\\\d\\\\w]*)*\",\n          \"name\": \"variable.parameter.module.d\"\n        }\n      ]\n    },\n    \"import-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_a-zA-Z][_\\\\d\\\\w]*)(\\\\s*\\\\.\\\\s*[_a-zA-Z][_\\\\d\\\\w]*)*\",\n          \"name\": \"variable.parameter.import.d\"\n        }\n      ]\n    },\n    \"eof\": {\n      \"patterns\": [\n        {\n          \"begin\": \"__EOF__\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.eof.start.d\"\n            }\n          },\n          \"end\": \"(?!__NEVER_MATCH__)__NEVER_MATCH__\",\n          \"name\": \"text.eof.d\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-comment\"\n        },\n        {\n          \"include\": \"#line-comment\"\n        },\n        {\n          \"include\": \"#nesting-block-comment\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/((?!\\\\*/)\\\\*)+\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.begin.d\"\n            }\n          },\n          \"end\": \"\\\\*+/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.end.d\"\n            }\n          },\n          \"name\": \"comment.block.content.d\"\n        }\n      ]\n    },\n    \"line-comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"//+.*$\",\n          \"name\": \"comment.line.d\"\n        }\n      ]\n    },\n    \"nesting-block-comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/((?!\\\\+/)\\\\+)+\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.begin.d\"\n            }\n          },\n          \"end\": \"\\\\++/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.end.d\"\n            }\n          },\n          \"name\": \"comment.block.documentation.content.d\",\n          \"patterns\": [\n            {\n              \"include\": \"#nesting-block-comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"token-string-content\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"patterns\": [\n            {\n              \"include\": \"#token-string-content\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tokens\"\n        }\n      ]\n    },\n    \"tokens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-literal\"\n        },\n        {\n          \"include\": \"#character-literal\"\n        },\n        {\n          \"include\": \"#integer-literal\"\n        },\n        {\n          \"include\": \"#float-literal\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"match\": \"~=|~|>>>|>>=|>>|>=|>|=>|==|=|<>|<=|<<|<|%=|%|#|&=|&&|&|\\\\$|\\\\|=|\\\\|\\\\||\\\\||\\\\+=|\\\\+\\\\+|\\\\+|\\\\^=|\\\\^\\\\^=|\\\\^\\\\^|\\\\^|\\\\*=|\\\\*|\\\\}|\\\\{|\\\\]|\\\\[|\\\\)|\\\\(|\\\\.\\\\.\\\\.|\\\\.\\\\.|\\\\.|\\\\?|\\\\!>=|\\\\!>|\\\\!=|\\\\!<>=|\\\\!<>|\\\\!<=|\\\\!<|\\\\!|/=|/|@|:|;|,|-=|--|-\",\n          \"name\": \"meta.lexical.token.symbolic.d\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\babstract\\\\b\",\n          \"name\": \"keyword.token.abstract.d\"\n        },\n        {\n          \"match\": \"\\\\balias\\\\b\",\n          \"name\": \"keyword.token.alias.d\"\n        },\n        {\n          \"match\": \"\\\\balign\\\\b\",\n          \"name\": \"keyword.token.align.d\"\n        },\n        {\n          \"match\": \"\\\\basm\\\\b\",\n          \"name\": \"keyword.token.asm.d\"\n        },\n        {\n          \"match\": \"\\\\bassert\\\\b\",\n          \"name\": \"keyword.token.assert.d\"\n        },\n        {\n          \"match\": \"\\\\bauto\\\\b\",\n          \"name\": \"keyword.token.auto.d\"\n        },\n        {\n          \"match\": \"\\\\bbody\\\\b\",\n          \"name\": \"keyword.token.body.d\"\n        },\n        {\n          \"match\": \"\\\\bbool\\\\b\",\n          \"name\": \"keyword.token.bool.d\"\n        },\n        {\n          \"match\": \"\\\\bbreak\\\\b\",\n          \"name\": \"keyword.token.break.d\"\n        },\n        {\n          \"match\": \"\\\\bbyte\\\\b\",\n          \"name\": \"keyword.token.byte.d\"\n        },\n        {\n          \"match\": \"\\\\bcase\\\\b\",\n          \"name\": \"keyword.token.case.d\"\n        },\n        {\n          \"match\": \"\\\\bcast\\\\b\",\n          \"name\": \"keyword.token.cast.d\"\n        },\n        {\n          \"match\": \"\\\\bcatch\\\\b\",\n          \"name\": \"keyword.token.catch.d\"\n        },\n        {\n          \"match\": \"\\\\bcdouble\\\\b\",\n          \"name\": \"keyword.token.cdouble.d\"\n        },\n        {\n          \"match\": \"\\\\bcent\\\\b\",\n          \"name\": \"keyword.token.cent.d\"\n        },\n        {\n          \"match\": \"\\\\bcfloat\\\\b\",\n          \"name\": \"keyword.token.cfloat.d\"\n        },\n        {\n          \"match\": \"\\\\bchar\\\\b\",\n          \"name\": \"keyword.token.char.d\"\n        },\n        {\n          \"match\": \"\\\\bclass\\\\b\",\n          \"name\": \"keyword.token.class.d\"\n        },\n        {\n          \"match\": \"\\\\bconst\\\\b\",\n          \"name\": \"keyword.token.const.d\"\n        },\n        {\n          \"match\": \"\\\\bcontinue\\\\b\",\n          \"name\": \"keyword.token.continue.d\"\n        },\n        {\n          \"match\": \"\\\\bcreal\\\\b\",\n          \"name\": \"keyword.token.creal.d\"\n        },\n        {\n          \"match\": \"\\\\bdchar\\\\b\",\n          \"name\": \"keyword.token.dchar.d\"\n        },\n        {\n          \"match\": \"\\\\bdebug\\\\b\",\n          \"name\": \"keyword.token.debug.d\"\n        },\n        {\n          \"match\": \"\\\\bdefault\\\\b\",\n          \"name\": \"keyword.token.default.d\"\n        },\n        {\n          \"match\": \"\\\\bdelegate\\\\b\",\n          \"name\": \"keyword.token.delegate.d\"\n        },\n        {\n          \"match\": \"\\\\bdelete\\\\b\",\n          \"name\": \"keyword.token.delete.d\"\n        },\n        {\n          \"match\": \"\\\\bdeprecated\\\\b\",\n          \"name\": \"keyword.token.deprecated.d\"\n        },\n        {\n          \"match\": \"\\\\bdo\\\\b\",\n          \"name\": \"keyword.token.do.d\"\n        },\n        {\n          \"match\": \"\\\\bdouble\\\\b\",\n          \"name\": \"keyword.token.double.d\"\n        },\n        {\n          \"match\": \"\\\\belse\\\\b\",\n          \"name\": \"keyword.token.else.d\"\n        },\n        {\n          \"match\": \"\\\\benum\\\\b\",\n          \"name\": \"keyword.token.enum.d\"\n        },\n        {\n          \"match\": \"\\\\bexport\\\\b\",\n          \"name\": \"keyword.token.export.d\"\n        },\n        {\n          \"match\": \"\\\\bextern\\\\b\",\n          \"name\": \"keyword.token.extern.d\"\n        },\n        {\n          \"match\": \"\\\\bfalse\\\\b\",\n          \"name\": \"constant.language.boolean.false.d\"\n        },\n        {\n          \"match\": \"\\\\bfinal\\\\b\",\n          \"name\": \"keyword.token.final.d\"\n        },\n        {\n          \"match\": \"\\\\bfinally\\\\b\",\n          \"name\": \"keyword.token.finally.d\"\n        },\n        {\n          \"match\": \"\\\\bfloat\\\\b\",\n          \"name\": \"keyword.token.float.d\"\n        },\n        {\n          \"match\": \"\\\\bfor\\\\b\",\n          \"name\": \"keyword.token.for.d\"\n        },\n        {\n          \"match\": \"\\\\bforeach\\\\b\",\n          \"name\": \"keyword.token.foreach.d\"\n        },\n        {\n          \"match\": \"\\\\bforeach_reverse\\\\b\",\n          \"name\": \"keyword.token.foreach_reverse.d\"\n        },\n        {\n          \"match\": \"\\\\bfunction\\\\b\",\n          \"name\": \"keyword.token.function.d\"\n        },\n        {\n          \"match\": \"\\\\bgoto\\\\b\",\n          \"name\": \"keyword.token.goto.d\"\n        },\n        {\n          \"match\": \"\\\\bidouble\\\\b\",\n          \"name\": \"keyword.token.idouble.d\"\n        },\n        {\n          \"match\": \"\\\\bif\\\\b\",\n          \"name\": \"keyword.token.if.d\"\n        },\n        {\n          \"match\": \"\\\\bifloat\\\\b\",\n          \"name\": \"keyword.token.ifloat.d\"\n        },\n        {\n          \"match\": \"\\\\bimmutable\\\\b\",\n          \"name\": \"keyword.token.immutable.d\"\n        },\n        {\n          \"match\": \"\\\\bimport\\\\b\",\n          \"name\": \"keyword.token.import.d\"\n        },\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.token.in.d\"\n        },\n        {\n          \"match\": \"\\\\binout\\\\b\",\n          \"name\": \"keyword.token.inout.d\"\n        },\n        {\n          \"match\": \"\\\\bint\\\\b\",\n          \"name\": \"keyword.token.int.d\"\n        },\n        {\n          \"match\": \"\\\\binterface\\\\b\",\n          \"name\": \"keyword.token.interface.d\"\n        },\n        {\n          \"match\": \"\\\\binvariant\\\\b\",\n          \"name\": \"keyword.token.invariant.d\"\n        },\n        {\n          \"match\": \"\\\\bireal\\\\b\",\n          \"name\": \"keyword.token.ireal.d\"\n        },\n        {\n          \"match\": \"\\\\bis\\\\b\",\n          \"name\": \"keyword.token.is.d\"\n        },\n        {\n          \"match\": \"\\\\blazy\\\\b\",\n          \"name\": \"keyword.token.lazy.d\"\n        },\n        {\n          \"match\": \"\\\\blong\\\\b\",\n          \"name\": \"keyword.token.long.d\"\n        },\n        {\n          \"match\": \"\\\\bmacro\\\\b\",\n          \"name\": \"keyword.token.macro.d\"\n        },\n        {\n          \"match\": \"\\\\bmixin\\\\b\",\n          \"name\": \"keyword.token.mixin.d\"\n        },\n        {\n          \"match\": \"\\\\bmodule\\\\b\",\n          \"name\": \"keyword.token.module.d\"\n        },\n        {\n          \"match\": \"\\\\bnew\\\\b\",\n          \"name\": \"keyword.token.new.d\"\n        },\n        {\n          \"match\": \"\\\\bnothrow\\\\b\",\n          \"name\": \"keyword.token.nothrow.d\"\n        },\n        {\n          \"match\": \"\\\\bnull\\\\b\",\n          \"name\": \"constant.language.null.d\"\n        },\n        {\n          \"match\": \"\\\\bout\\\\b\",\n          \"name\": \"keyword.token.out.d\"\n        },\n        {\n          \"match\": \"\\\\boverride\\\\b\",\n          \"name\": \"keyword.token.override.d\"\n        },\n        {\n          \"match\": \"\\\\bpackage\\\\b\",\n          \"name\": \"keyword.token.package.d\"\n        },\n        {\n          \"match\": \"\\\\bpragma\\\\b\",\n          \"name\": \"keyword.token.pragma.d\"\n        },\n        {\n          \"match\": \"\\\\bprivate\\\\b\",\n          \"name\": \"keyword.token.private.d\"\n        },\n        {\n          \"match\": \"\\\\bprotected\\\\b\",\n          \"name\": \"keyword.token.protected.d\"\n        },\n        {\n          \"match\": \"\\\\bpublic\\\\b\",\n          \"name\": \"keyword.token.public.d\"\n        },\n        {\n          \"match\": \"\\\\bpure\\\\b\",\n          \"name\": \"keyword.token.pure.d\"\n        },\n        {\n          \"match\": \"\\\\breal\\\\b\",\n          \"name\": \"keyword.token.real.d\"\n        },\n        {\n          \"match\": \"\\\\bref\\\\b\",\n          \"name\": \"keyword.token.ref.d\"\n        },\n        {\n          \"match\": \"\\\\breturn\\\\b\",\n          \"name\": \"keyword.token.return.d\"\n        },\n        {\n          \"match\": \"\\\\bscope\\\\b\",\n          \"name\": \"keyword.token.scope.d\"\n        },\n        {\n          \"match\": \"\\\\bshared\\\\b\",\n          \"name\": \"keyword.token.shared.d\"\n        },\n        {\n          \"match\": \"\\\\bshort\\\\b\",\n          \"name\": \"keyword.token.short.d\"\n        },\n        {\n          \"match\": \"\\\\bstatic\\\\b\",\n          \"name\": \"keyword.token.static.d\"\n        },\n        {\n          \"match\": \"\\\\bstruct\\\\b\",\n          \"name\": \"keyword.token.struct.d\"\n        },\n        {\n          \"match\": \"\\\\bsuper\\\\b\",\n          \"name\": \"keyword.token.super.d\"\n        },\n        {\n          \"match\": \"\\\\bswitch\\\\b\",\n          \"name\": \"keyword.token.switch.d\"\n        },\n        {\n          \"match\": \"\\\\bsynchronized\\\\b\",\n          \"name\": \"keyword.token.synchronized.d\"\n        },\n        {\n          \"match\": \"\\\\btemplate\\\\b\",\n          \"name\": \"keyword.token.template.d\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"keyword.token.this.d\"\n        },\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.token.throw.d\"\n        },\n        {\n          \"match\": \"\\\\btrue\\\\b\",\n          \"name\": \"constant.language.boolean.true.d\"\n        },\n        {\n          \"match\": \"\\\\btry\\\\b\",\n          \"name\": \"keyword.token.try.d\"\n        },\n        {\n          \"match\": \"\\\\btypedef\\\\b\",\n          \"name\": \"keyword.token.typedef.d\"\n        },\n        {\n          \"match\": \"\\\\btypeid\\\\b\",\n          \"name\": \"keyword.token.typeid.d\"\n        },\n        {\n          \"match\": \"\\\\btypeof\\\\b\",\n          \"name\": \"keyword.token.typeof.d\"\n        },\n        {\n          \"match\": \"\\\\bubyte\\\\b\",\n          \"name\": \"keyword.token.ubyte.d\"\n        },\n        {\n          \"match\": \"\\\\bucent\\\\b\",\n          \"name\": \"keyword.token.ucent.d\"\n        },\n        {\n          \"match\": \"\\\\buint\\\\b\",\n          \"name\": \"keyword.token.uint.d\"\n        },\n        {\n          \"match\": \"\\\\bulong\\\\b\",\n          \"name\": \"keyword.token.ulong.d\"\n        },\n        {\n          \"match\": \"\\\\bunion\\\\b\",\n          \"name\": \"keyword.token.union.d\"\n        },\n        {\n          \"match\": \"\\\\bunittest\\\\b\",\n          \"name\": \"keyword.token.unittest.d\"\n        },\n        {\n          \"match\": \"\\\\bushort\\\\b\",\n          \"name\": \"keyword.token.ushort.d\"\n        },\n        {\n          \"match\": \"\\\\bversion\\\\b\",\n          \"name\": \"keyword.token.version.d\"\n        },\n        {\n          \"match\": \"\\\\bvoid\\\\b\",\n          \"name\": \"keyword.token.void.d\"\n        },\n        {\n          \"match\": \"\\\\bvolatile\\\\b\",\n          \"name\": \"keyword.token.volatile.d\"\n        },\n        {\n          \"match\": \"\\\\bwchar\\\\b\",\n          \"name\": \"keyword.token.wchar.d\"\n        },\n        {\n          \"match\": \"\\\\bwhile\\\\b\",\n          \"name\": \"keyword.token.while.d\"\n        },\n        {\n          \"match\": \"\\\\bwith\\\\b\",\n          \"name\": \"keyword.token.with.d\"\n        },\n        {\n          \"match\": \"\\\\b__FILE__\\\\b\",\n          \"name\": \"keyword.token.__FILE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__MODULE__\\\\b\",\n          \"name\": \"keyword.token.__MODULE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__LINE__\\\\b\",\n          \"name\": \"keyword.token.__LINE__.d\"\n        },\n        {\n          \"match\": \"\\\\b__FUNCTION__\\\\b\",\n          \"name\": \"keyword.token.__FUNCTION__.d\"\n        },\n        {\n          \"match\": \"\\\\b__PRETTY_FUNCTION__\\\\b\",\n          \"name\": \"keyword.token.__PRETTY_FUNCTION__.d\"\n        },\n        {\n          \"match\": \"\\\\b__gshared\\\\b\",\n          \"name\": \"keyword.token.__gshared.d\"\n        },\n        {\n          \"match\": \"\\\\b__traits\\\\b\",\n          \"name\": \"keyword.token.__traits.d\"\n        },\n        {\n          \"match\": \"\\\\b__vector\\\\b\",\n          \"name\": \"keyword.token.__vector.d\"\n        },\n        {\n          \"match\": \"\\\\b__parameters\\\\b\",\n          \"name\": \"keyword.token.__parameters.d\"\n        }\n      ]\n    },\n    \"special-token-sequence\": {\n      \"patterns\": [\n        {\n          \"match\": \"#\\\\s*line.*\",\n          \"name\": \"gfm.markup.italic.special-token-sequence.d\"\n        }\n      ]\n    },\n    \"special-tokens\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(__DATE__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\\\b\",\n          \"name\": \"gfm.markup.raw.special-tokens.d\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/dart.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dart-lang/dart-syntax-highlight/commit/45065882c9f699149cb181a5960c05295b4bfbc6\",\n  \"name\": \"dart\",\n  \"scopeName\": \"source.dart\",\n  \"patterns\": [\n    {\n      \"name\": \"meta.preprocessor.script.dart\",\n      \"match\": \"^(#!.*)$\"\n    },\n    {\n      \"name\": \"meta.declaration.dart\",\n      \"begin\": \"^\\\\w*\\\\b(library|import|part of|part|export)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.import.dart\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.dart\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"name\": \"keyword.other.import.dart\",\n          \"match\": \"\\\\b(as|show|hide)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"\\\\b(if)\\\\b\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#annotations\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#constants-and-special-vars\"\n    },\n    {\n      \"include\": \"#strings\"\n    }\n  ],\n  \"repository\": {\n    \"dartdoc\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\[.*?\\\\])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.name.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"^ {4,}(?![ \\\\*]).*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.name.source.dart\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.source.dart\",\n          \"begin\": \"```.*?$\",\n          \"end\": \"```\"\n        },\n        {\n          \"match\": \"(`.*?`)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"(`.*?`)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\* ((    ).*))$\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"variable.other.source.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.empty.dart\",\n          \"match\": \"/\\\\*\\\\*/\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.dart\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comments-doc-oldschool\"\n        },\n        {\n          \"include\": \"#comments-doc\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-doc-oldschool\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.dart\",\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments-doc-oldschool\"\n            },\n            {\n              \"include\": \"#comments-block\"\n            },\n            {\n              \"include\": \"#dartdoc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-doc\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.dart\",\n          \"begin\": \"///\",\n          \"while\": \"^\\\\s*///\",\n          \"patterns\": [\n            {\n              \"include\": \"#dartdoc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments-block\"\n        },\n        {\n          \"match\": \"((//).*)$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.double-slash.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments-block\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.dart\",\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments-block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.annotation.dart\",\n          \"match\": \"@[a-zA-Z]+\"\n        }\n      ]\n    },\n    \"constants-and-special-vars\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(true|false|null)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"variable.language.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(this|super)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"constant.numeric.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"include\": \"#class-identifier\"\n        },\n        {\n          \"include\": \"#function-identifier\"\n        }\n      ]\n    },\n    \"class-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*(<(?:[a-zA-Z0-9_$<>?]|,\\\\s*|\\\\s+extends\\\\s+)+>)?|bool\\\\b|num\\\\b|int\\\\b|double\\\\b|dynamic\\\\b|(void)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.class.dart\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-args\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"storage.type.primitive.dart\"\n            }\n          }\n        }\n      ]\n    },\n    \"function-identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\\\s*|\\\\s+extends\\\\s+)+>)?[!?]?(\\\\(|\\\\s+=>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.dart\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type-args\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"type-args\": {\n      \"begin\": \"(<)\",\n      \"end\": \"(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"other.source.dart\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"other.source.dart\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#class-identifier\"\n        },\n        {\n          \"match\": \"[\\\\s,]+\"\n        },\n        {\n          \"name\": \"keyword.declaration.dart\",\n          \"match\": \"extends\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.cast.dart\",\n          \"match\": \"(?<!\\\\$)\\\\bas\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.catch-exception.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(try|on|catch|finally|throw|rethrow)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(sync(\\\\*)?|async(\\\\*)?|await|yield(\\\\*)?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.dart\",\n          \"match\": \"(?<!\\\\$)\\\\bassert\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.control.new.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(new)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.declaration.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.operator.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(is\\\\!?)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.dart\",\n          \"match\": \"\\\\?|:\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.dart\",\n          \"match\": \"(<<|>>>?|~|\\\\^|\\\\||&)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.bitwise.dart\",\n          \"match\": \"((&|\\\\^|\\\\||<<|>>>?)=)\"\n        },\n        {\n          \"name\": \"keyword.operator.closure.dart\",\n          \"match\": \"(=>)\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.dart\",\n          \"match\": \"(==|!=|<=?|>=?)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.arithmetic.dart\",\n          \"match\": \"(([+*/%-]|\\\\~)=)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.dart\",\n          \"match\": \"(=)\"\n        },\n        {\n          \"name\": \"keyword.operator.increment-decrement.dart\",\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.dart\",\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|\\\\~\\\\/|%)\"\n        },\n        {\n          \"name\": \"keyword.operator.logical.dart\",\n          \"match\": \"(!|&&|\\\\|\\\\|)\"\n        },\n        {\n          \"name\": \"storage.modifier.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(static|final|const|required|late)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"storage.type.primitive.dart\",\n          \"match\": \"(?<!\\\\$)\\\\b(?:void|var)\\\\b(?!\\\\$)\"\n        }\n      ]\n    },\n    \"string-interp\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$([a-zA-Z0-9_]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.dart\"\n            }\n          }\n        },\n        {\n          \"name\": \"string.interpolated.expression.dart\",\n          \"begin\": \"\\\\$\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#constants-and-special-vars\",\n              \"name\": \"variable.parameter.dart\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"name\": \"variable.parameter.dart\",\n              \"match\": \"[a-zA-Z0-9_]+\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.character.escape.dart\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.interpolated.triple.double.dart\",\n          \"begin\": \"(?<!r)\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.interpolated.triple.single.dart\",\n          \"begin\": \"(?<!r)'''\",\n          \"end\": \"'''(?!')\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.triple.double.dart\",\n          \"begin\": \"r\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\"\n        },\n        {\n          \"name\": \"string.quoted.triple.single.dart\",\n          \"begin\": \"r'''\",\n          \"end\": \"'''(?!')\"\n        },\n        {\n          \"name\": \"string.interpolated.double.dart\",\n          \"begin\": \"(?<!\\\\|r)\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            },\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.dart\",\n          \"begin\": \"r\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.interpolated.single.dart\",\n          \"begin\": \"(?<!\\\\|r)'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            },\n            {\n              \"include\": \"#string-interp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.dart\",\n          \"begin\": \"r'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.string.newline\",\n              \"match\": \"\\\\n\"\n            }\n          ]\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.comma.dart\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"punctuation.terminator.dart\",\n          \"match\": \";\"\n        },\n        {\n          \"name\": \"punctuation.dot.dart\",\n          \"match\": \"\\\\.\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/diff.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/diff.tmbundle/blob/master/Syntaxes/Diff.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/diff.tmbundle/commit/0593bb775eab1824af97ef2172fd38822abd97d7\",\n  \"name\": \"diff\",\n  \"scopeName\": \"source.diff\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.separator.diff\"\n        }\n      },\n      \"match\": \"^((\\\\*{15})|(={67})|(-{3}))$\\\\n?\",\n      \"name\": \"meta.separator.diff\"\n    },\n    {\n      \"match\": \"^\\\\d+(,\\\\d+)*(a|d|c)\\\\d+(,\\\\d+)*$\\\\n?\",\n      \"name\": \"meta.diff.range.normal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"2\": {\n          \"name\": \"meta.toc-list.line-number.diff\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        }\n      },\n      \"match\": \"^(@@)\\\\s*(.+?)\\\\s*(@@)($\\\\n?)?\",\n      \"name\": \"meta.diff.range.unified\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.range.diff\"\n        }\n      },\n      \"match\": \"^(((\\\\-{3}) .+ (\\\\-{4}))|((\\\\*{3}) .+ (\\\\*{4})))$\\\\n?\",\n      \"name\": \"meta.diff.range.context\"\n    },\n    {\n      \"match\": \"^diff --git a/.*$\\\\n?\",\n      \"name\": \"meta.diff.header.git\"\n    },\n    {\n      \"match\": \"^diff (-|\\\\S+\\\\s+\\\\S+).*$\\\\n?\",\n      \"name\": \"meta.diff.header.command\"\n    },\n    {\n      \"captures\": {\n        \"4\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.from-file.diff\"\n        }\n      },\n      \"match\": \"(^(((-{3}) .+)|((\\\\*{3}) .+))$\\\\n?|^(={4}) .+(?= - ))\",\n      \"name\": \"meta.diff.header.from-file\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.to-file.diff\"\n        }\n      },\n      \"match\": \"(^(\\\\+{3}) .+$\\\\n?| (-) .* (={4})$\\\\n?)\",\n      \"name\": \"meta.diff.header.to-file\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.inserted.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.inserted.diff\"\n        }\n      },\n      \"match\": \"^(((>)( .*)?)|((\\\\+).*))$\\\\n?\",\n      \"name\": \"markup.inserted.diff\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.changed.diff\"\n        }\n      },\n      \"match\": \"^(!).*$\\\\n?\",\n      \"name\": \"markup.changed.diff\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.deleted.diff\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.deleted.diff\"\n        }\n      },\n      \"match\": \"^(((<)( .*)?)|((-).*))$\\\\n?\",\n      \"name\": \"markup.deleted.diff\"\n    },\n    {\n      \"begin\": \"^(#)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.diff\"\n        }\n      },\n      \"comment\": \"Git produces unified diffs with embedded comments\\\"\",\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.number-sign.diff\"\n    },\n    {\n      \"match\": \"^index [0-9a-f]{7,40}\\\\.\\\\.[0-9a-f]{7,40}.*$\\\\n?\",\n      \"name\": \"meta.diff.index.git\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.diff\"\n        },\n        \"2\": {\n          \"name\": \"meta.toc-list.file-name.diff\"\n        }\n      },\n      \"match\": \"^Index(:) (.+)$\\\\n?\",\n      \"name\": \"meta.diff.index\"\n    },\n    {\n      \"match\": \"^Only in .*: .*$\\\\n?\",\n      \"name\": \"meta.diff.only-in\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/docker.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/moby/moby/blob/master/contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/moby/moby/commit/abd39744c6f3ed854500e423f5fabf952165161f\",\n  \"name\": \"docker\",\n  \"scopeName\": \"source.dockerfile\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*\\\\b(?i:(FROM))\\\\b.*?\\\\b(?i:(AS))\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*(?i:(ONBUILD)\\\\s+)?(?i:(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR))\\\\s\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.special-method.dockerfile\"\n        }\n      },\n      \"match\": \"^\\\\s*(?i:(ONBUILD)\\\\s+)?(?i:(CMD|ENTRYPOINT))\\\\s\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.dockerfile\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.dockerfile\"\n        }\n      },\n      \"name\": \"string.quoted.double.dockerfile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escaped.dockerfile\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.dockerfile\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.dockerfile\"\n        }\n      },\n      \"name\": \"string.quoted.single.dockerfile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escaped.dockerfile\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.dockerfile\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.number-sign.dockerfile\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.dockerfile\"\n        }\n      },\n      \"comment\": \"comment.line\",\n      \"match\": \"^(\\\\s*)((#).*$\\\\n?)\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/dream-maker.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"dm\", \"dme\"],\n  \"foldingStartMarker\": \"(?x)\\n/\\\\*\\\\*(?!\\\\*)\\n|^(?![^{]*?//|[^{]*?/\\\\*(?!.*?\\\\*/.*?\\\\{)).*?\\\\{\\\\s*($|//|/\\\\*(?!.*?\\\\*/.*\\\\S))\",\n  \"foldingStopMarker\": \"(?<!\\\\*)\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"name\": \"dream-maker\",\n  \"patterns\": [\n    {\n      \"include\": \"#preprocessor-rule-enabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-disabled\"\n    },\n    {\n      \"include\": \"#preprocessor-rule-other\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"match\": \"(?x)\\n(var)[\\\\/ ]\\n(?:(static|global|tmp|const)\\\\/)?\\n(?:(datum|atom(?:\\\\/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\\\/)?\\n(?:\\n\\t([a-zA-Z0-9_\\\\-$]*)\\\\/\\n)*\\n\\n([A-Za-z0-9_$]*)\\\\b\",\n      \"name\": \"meta.initialization.dm\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.dm\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.dm\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.dm\"\n        },\n        \"5\": {\n          \"name\": \"variable.other.dm\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b\",\n      \"name\": \"constant.numeric.dm\"\n    },\n    {\n      \"match\": \"\\\\b(sleep|spawn|break|continue|do|else|for|goto|if|return|switch|while)\\\\b\",\n      \"name\": \"keyword.control.dm\"\n    },\n    {\n      \"match\": \"\\\\b(del|new)\\\\b\",\n      \"name\": \"keyword.other.dm\"\n    },\n    {\n      \"match\": \"\\\\b(proc|verb|datum|atom(/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\\\b\",\n      \"name\": \"storage.type.dm\"\n    },\n    {\n      \"match\": \"\\\\b(as|const|global|set|static|tmp)\\\\b\",\n      \"name\": \"storage.modifier.dm\"\n    },\n    {\n      \"match\": \"\\\\b(usr|world|src|args)\\\\b\",\n      \"name\": \"variable.language.dm\"\n    },\n    {\n      \"match\": \"(\\\\?|(>|<)(=)?|\\\\.|:|/(=)?|~|\\\\+(\\\\+|=)?|-(-|=)?|\\\\*(\\\\*|=)?|%|>>|<<|=(=)?|!(=)?|<>|&|&&|\\\\^|\\\\||\\\\|\\\\||\\\\bto\\\\b|\\\\bin\\\\b|\\\\bstep\\\\b)\",\n      \"name\": \"keyword.operator.dm\"\n    },\n    {\n      \"match\": \"\\\\b([A-Z_][A-Z_0-9]*)\\\\b\",\n      \"name\": \"constant.language.dm\"\n    },\n    {\n      \"match\": \"\\\\bnull\\\\b\",\n      \"name\": \"constant.language.dm\"\n    },\n    {\n      \"begin\": \"{\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.dm\"\n        }\n      },\n      \"end\": \"\\\"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.dm\"\n        }\n      },\n      \"name\": \"string.quoted.triple.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_embedded_expression\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.dm\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.dm\"\n        }\n      },\n      \"name\": \"string.quoted.double.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_embedded_expression\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.dm\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.dm\"\n        }\n      },\n      \"name\": \"string.quoted.single.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+     # define\\n((?<id>[a-zA-Z_][a-zA-Z0-9_]*))  # macro name\\n(?:\\n\\t(\\\\()\\n\\t\\t(\\n\\t\\t\\t\\\\s* \\\\g<id> \\\\s*         # first argument\\n\\t\\t\\t((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t\\t\\t(?:\\\\.\\\\.\\\\.)?            # varargs ellipsis?\\n\\t\\t)\\n\\t(\\\\))\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.dm\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.dm\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.preprocessor.dm\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.begin.dm\"\n        },\n        \"6\": {\n          \"name\": \"variable.parameter.preprocessor.dm\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.parameters.dm\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.parameters.end.dm\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.macro.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+     # define\\n((?<id>[a-zA-Z_][a-zA-Z0-9_]*))  # macro name\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.define.dm\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.dm\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.preprocessor.dm\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.macro.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(#\\\\s*(error|warn))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.error.dm\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.preprocessor.diagnostic.dm\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.dm\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(?:((#)\\\\s*(?:elif|else|if|ifdef|ifndef))|((#)\\\\s*(undef|include)))\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.directive.conditional.dm\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.directive.dm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.directive.$5.dm\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.directive.dm\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n      \"name\": \"meta.preprocessor.dm\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.dm\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#block\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t\\t(?:  ^                                 # begin-of-line\\n\\t\\t\\t\\t\\t|\\n\\t\\t\\t\\t\\t\\t (?: (?= \\\\s )           (?<!else|new|return) (?<=\\\\w)      #  or word + space before name\\n\\t\\t\\t\\t\\t\\t\\t | (?= \\\\s*[A-Za-z_] ) (?<!&&)       (?<=[*&>])   #  or type modifier before name\\n\\t\\t\\t\\t\\t\\t )\\n\\t\\t\\t\\t)\\n\\t\\t\\t\\t(\\\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\\\s*\\\\()\\n\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ |                  # actual name\\n\\t\\t\\t\\t\\t(?: (?<=operator) (?: [-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\] ) )  # if it is a C++ operator\\n\\t\\t\\t\\t)\\n\\t\\t\\t\\t \\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.function.leading.dm\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.dm\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.dm\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=#)|(;)?\",\n      \"name\": \"meta.function.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"match\": \"\\\\bconst\\\\b\",\n          \"name\": \"storage.modifier.dm\"\n        },\n        {\n          \"include\": \"#block\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"access\": {\n      \"match\": \"\\\\.[a-zA-Z_][a-zA-Z_0-9]*\\\\b(?!\\\\s*\\\\()\",\n      \"name\": \"variable.other.dot-access.dm\"\n    },\n    \"block\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"name\": \"meta.block.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"block_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-block\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-block\"\n        },\n        {\n          \"include\": \"#access\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.function-call.leading.dm\"\n            },\n            \"2\": {\n              \"name\": \"support.function.any-method.dm\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.dm\"\n            }\n          },\n          \"match\": \"(?x) (?: (?= \\\\s )  (?:(?<=else|new|return) | (?<!\\\\w)) (\\\\s+))?\\n\\t\\t\\t(\\\\b\\n\\t\\t\\t\\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\\\s*\\\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\\\b | :: )++                  # actual name\\n\\t\\t\\t)\\n\\t\\t\\t \\\\s*(\\\\()\",\n          \"name\": \"meta.function-call.dm\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.toc-list.banner.block.dm\"\n            }\n          },\n          \"match\": \"^/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*/$\\\\n?\",\n          \"name\": \"comment.block.dm\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.dm\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.dm\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\*/.*\\\\n\",\n          \"name\": \"invalid.illegal.stray-comment-end.dm\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.toc-list.banner.line.dm\"\n            }\n          },\n          \"match\": \"^// =(\\\\s*.*?)\\\\s*=\\\\s*$\\\\n?\",\n          \"name\": \"comment.line.banner.dm\"\n        },\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.dm\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.double-slash.dm\",\n          \"patterns\": [\n            {\n              \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n              \"name\": \"punctuation.separator.continuation.dm\"\n            }\n          ]\n        }\n      ]\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"comment\": \"eat nested preprocessor if(def)s\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b.*$\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.parens.dm\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.dm\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.dm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.dm\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"name\": \"comment.block.preprocessor.if-branch\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-block\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.dm\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.dm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.dm\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"name\": \"comment.block.preprocessor.if-branch.in-block\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.dm\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.dm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.dm\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-block\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.dm\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.dm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.dm\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.in-block\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-other\": {\n      \"begin\": \"^\\\\s*((#\\\\s*(if(n?def)?))\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*((#\\\\s*(endif))\\\\b).*$\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"preprocessor-rule-other-block\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.dm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.dm\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*$\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_innards\"\n        }\n      ]\n    },\n    \"string_embedded_expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\\\\\)\\\\[\",\n          \"end\": \"\\\\]\",\n          \"name\": \"string.interpolated.dm\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\\\\\\\n(\\n\\th(?:(?:er|im)self|ers|im)\\n\\t|([tTsS]?he) # Weird regex to match The, the, She, she and he at once.\\n\\t|He\\n\\t|[Hh]is\\n\\t|[aA]n?\\n\\t|(?:im)?proper\\n\\t|\\\\.\\\\.\\\\.\\n\\t|(?:icon|ref|[Rr]oman)(?=\\\\[) # Macros which need a [] after them.\\n\\t|[s<>\\\"n\\\\n \\\\[]\\n)\",\n          \"name\": \"constant.character.escape.dm\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.dm\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.dm\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/elixir.tmLanguage.json",
    "content": "{\n  \"comment\": \"Textmate bundle for Elixir Programming Language.\",\n  \"fileTypes\": [\"ex\", \"exs\"],\n  \"firstLineMatch\": \"^#!/.*\\\\belixir\",\n  \"foldingStartMarker\": \"(after|else|catch|rescue|\\\\-\\\\>|\\\\{|\\\\[|do)\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*((\\\\}|\\\\]|after|else|catch|rescue)\\\\s*$|end\\\\b)\",\n  \"keyEquivalent\": \"^~E\",\n  \"name\": \"elixir\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(fn)\\\\b(?!.*->)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.class.elixir\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"([A-Z]\\\\w+)\\\\s*(\\\\.)\\\\s*([a-z_]\\\\w*[!?]?)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.symbol.elixir\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"(\\\\:\\\\w+)\\\\s*(\\\\.)\\\\s*([_]?\\\\w*[!?]?)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.elixir\"\n        }\n      },\n      \"match\": \"(\\\\|\\\\>)\\\\s*([a-z_]\\\\w*[!?]?)\"\n    },\n    {\n      \"match\": \"\\\\b[a-z_]\\\\w*[!?]?(?=\\\\s*\\\\.?\\\\s*\\\\()\",\n      \"name\": \"entity.name.function.elixir\"\n    },\n    {\n      \"begin\": \"\\\\b(fn)\\\\b(?=.*->)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"(?>(->)|(when)|(\\\\)))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.elixir\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#core_syntax\"\n    },\n    {\n      \"begin\": \"^(?=.*->)((?![^\\\"']*(\\\"|')[^\\\"']*->)|(?=.*->[^\\\"']*(\\\"|')[^\\\"']*->))((?!.*\\\\([^\\\\)]*->)|(?=[^\\\\(\\\\)]*->)|(?=\\\\s*\\\\(.*\\\\).*->))((?!.*\\\\b(fn)\\\\b)|(?=.*->.*\\\\bfn\\\\b))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.elixir\"\n        }\n      },\n      \"end\": \"(?>(->)|(when)|(\\\\)))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.elixir\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#core_syntax\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"core_syntax\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(defmodule)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.module.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*(?=\\\\.)\",\n              \"name\": \"entity.other.inherited-class.elixir\"\n            },\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.class.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defprotocol)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"name\": \"meta.protocol_declaration.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.protocol.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defimpl)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"end\": \"\\\\b(do)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.protocol.elixir\"\n            }\n          },\n          \"name\": \"meta.protocol_implementation.elixir\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n              \"name\": \"entity.name.type.protocol.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(def|defmacro|defdelegate|defguard)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?))((\\\\()|\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.public.elixir\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.function.elixir\"\n            }\n          },\n          \"end\": \"(\\\\bdo:)|(\\\\bdo\\\\b)|(?=\\\\s+(def|defn|defmacro|defdelegate|defguard)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.keywords.elixir\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.function.public.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"begin\": \"\\\\s(\\\\\\\\\\\\\\\\)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.other.elixir\"\n                }\n              },\n              \"end\": \",|\\\\)|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\\\b\",\n              \"name\": \"keyword.control.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(defp|defnp|defmacrop|defguardp)\\\\s+((?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?))((\\\\()|\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.module.elixir\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.private.elixir\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.function.elixir\"\n            }\n          },\n          \"end\": \"(\\\\bdo:)|(\\\\bdo\\\\b)|(?=\\\\s+(defp|defmacrop|defguardp)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.keywords.elixir\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.module.elixir\"\n            }\n          },\n          \"name\": \"meta.function.private.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"begin\": \"\\\\s(\\\\\\\\\\\\\\\\)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.other.elixir\"\n                }\n              },\n              \"end\": \",|\\\\)|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\\\b\",\n              \"name\": \"keyword.control.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*~L\\\"\\\"\\\"\",\n          \"comment\": \"Leex Sigil\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"sigil.leex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.elixir\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*~H\\\"\\\"\\\"\",\n          \"comment\": \"HEEx Sigil\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"sigil.heex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.elixir\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc (~[a-z])?\\\"\\\"\\\"\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"comment.block.documentation.heredoc\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc ~[A-Z]\\\"\\\"\\\"\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*\\\"\\\"\\\"\",\n          \"name\": \"comment.block.documentation.heredoc\"\n        },\n        {\n          \"begin\": \"@(module|type)?doc (~[a-z])?'''\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*'''\",\n          \"name\": \"comment.block.documentation.heredoc\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@(module|type)?doc ~[A-Z]'''\",\n          \"comment\": \"@doc with heredocs is treated as documentation\",\n          \"end\": \"\\\\s*'''\",\n          \"name\": \"comment.block.documentation.heredoc\"\n        },\n        {\n          \"comment\": \"@doc false is treated as documentation\",\n          \"match\": \"@(module|type)?doc false\",\n          \"name\": \"comment.block.documentation.false\"\n        },\n        {\n          \"begin\": \"@(module|type)?doc \\\"\",\n          \"comment\": \"@doc with string is treated as documentation\",\n          \"end\": \"\\\"\",\n          \"name\": \"comment.block.documentation.string\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defnp?|defmacrop?|defguardp?|defdelegate|defexception|defoverridable|exit|after|rescue|catch|else|raise|reraise|throw|import|require|alias|use|quote|unquote|super|with)\\\\b(?![?!:])\",\n          \"name\": \"keyword.control.elixir\"\n        },\n        {\n          \"comment\": \" as above, just doesn't need a 'end' and does a logic operation\",\n          \"match\": \"(?<!\\\\.)\\\\b(and|not|or|when|xor|in)\\\\b\",\n          \"name\": \"keyword.operator.elixir\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n          \"name\": \"entity.name.type.class.elixir\"\n        },\n        {\n          \"match\": \"\\\\b(nil|true|false)\\\\b(?![?!])\",\n          \"name\": \"constant.language.elixir\"\n        },\n        {\n          \"match\": \"\\\\b(__(CALLER|ENV|MODULE|DIR|STACKTRACE)__)\\\\b(?![?!])\",\n          \"name\": \"variable.language.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"(@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.module.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"(&)\\\\d+\",\n          \"name\": \"variable.other.anonymous.elixir\"\n        },\n        {\n          \"match\": \"&(?![&])\",\n          \"name\": \"variable.other.anonymous.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.elixir\"\n            }\n          },\n          \"match\": \"\\\\^[a-z_]\\\\w*\",\n          \"name\": \"variable.other.capture.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*\\\\b\",\n          \"name\": \"constant.numeric.hex.elixir\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d(?>_?\\\\d)*(\\\\.(?![^[:space:][:digit:]])(?>_?\\\\d)+)([eE][-+]?\\\\d(?>_?\\\\d)*)?\\\\b\",\n          \"name\": \"constant.numeric.float.elixir\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d(?>_?\\\\d)*\\\\b\",\n          \"name\": \"constant.numeric.integer.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0b[01](?>_?[01])*\\\\b\",\n          \"name\": \"constant.numeric.binary.elixir\"\n        },\n        {\n          \"match\": \"\\\\b0o[0-7](?>_?[0-7])*\\\\b\",\n          \"name\": \"constant.numeric.octal.elixir\"\n        },\n        {\n          \"begin\": \":'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"constant.other.symbol.single-quoted.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \":\\\"\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"constant.other.symbol.double-quoted.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?>''')\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Single-quoted heredocs\",\n          \"end\": \"^\\\\s*'''\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.single.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"single quoted string (allows for interpolation)\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.single.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.double.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"double quoted string (allows for interpolation)\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.double.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z](?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs sigils\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.heredoc.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\}[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\][a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\>[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\)[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[a-z]([^\\\\w])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (allow for interpolation)\",\n          \"end\": \"\\\\1[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_elixir\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~[A-Z](?>\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"Double-quoted heredocs sigils\",\n          \"end\": \"^\\\\s*\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.heredoc.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\}[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\][a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\>[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\)[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"begin\": \"~[A-Z]([^\\\\w])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.elixir\"\n            }\n          },\n          \"comment\": \"sigil (without interpolation)\",\n          \"end\": \"\\\\1[a-z]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.elixir\"\n            }\n          },\n          \"name\": \"string.quoted.other.sigil.literal.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"comment\": \"symbols\",\n          \"match\": \"(?<!:)(:)(?>[a-zA-Z_][\\\\w@]*(?>[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|=~|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|\\\\.\\\\.//|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(\\\\^\\\\^)?)\",\n          \"name\": \"constant.other.symbol.elixir\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.elixir\"\n            }\n          },\n          \"comment\": \"symbols\",\n          \"match\": \"(?>[a-zA-Z_][\\\\w@]*(?>[?!])?)(:)(?!:)\",\n          \"name\": \"constant.other.keywords.elixir\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=##)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.elixir\"\n            }\n          },\n          \"end\": \"(?!#)\",\n          \"patterns\": [\n            {\n              \"begin\": \"##\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.elixir\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.section.elixir\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.elixir\"\n            }\n          },\n          \"end\": \"(?!#)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.elixir\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.elixir\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b_([^_][\\\\w]+[?!]?)\",\n          \"name\": \"comment.unused.elixir\"\n        },\n        {\n          \"match\": \"\\\\b_\\\\b\",\n          \"name\": \"comment.wildcard.elixir\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\tmatches questionmark-letters.\\n\\n\\t\\t\\texamples (1st alternation = hex):\\n\\t\\t\\t?\\\\x1     ?\\\\x61\\n\\n\\t\\t\\texamples (2rd alternation = escaped):\\n\\t\\t\\t?\\\\n      ?\\\\b\\n\\n\\t\\t\\texamples (3rd alternation = normal):\\n\\t\\t\\t?a       ?A       ?0\\n\\t\\t\\t?*       ?\\\"       ?(\\n\\t\\t\\t?.       ?#\\n\\n\\t\\t\\tthe negative lookbehind prevents against matching\\n\\t\\t\\tp(42.tainted?)\\n\\t\\t\\t\",\n          \"match\": \"(?<!\\\\w)\\\\?(\\\\\\\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\\\\b|[^xMC])|[^\\\\s\\\\\\\\])\",\n          \"name\": \"constant.numeric.elixir\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+|\\\\-\\\\-|<\\\\|>\",\n          \"name\": \"keyword.operator.concatenation.elixir\"\n        },\n        {\n          \"match\": \"\\\\|\\\\>|<~>|<>|<<<|>>>|~>>|<<~|~>|<~|<\\\\|>\",\n          \"name\": \"keyword.operator.sigils_1.elixir\"\n        },\n        {\n          \"match\": \"&&&|&&\",\n          \"name\": \"keyword.operator.sigils_2.elixir\"\n        },\n        {\n          \"match\": \"<\\\\-|\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.operator.sigils_3.elixir\"\n        },\n        {\n          \"match\": \"===?|!==?|<=?|>=?\",\n          \"name\": \"keyword.operator.comparison.elixir\"\n        },\n        {\n          \"match\": \"(\\\\|\\\\|\\\\||&&&|\\\\^\\\\^\\\\^|<<<|>>>|~~~)\",\n          \"name\": \"keyword.operator.bitwise.elixir\"\n        },\n        {\n          \"match\": \"(?<=[ \\\\t])!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b\",\n          \"name\": \"keyword.operator.logical.elixir\"\n        },\n        {\n          \"match\": \"(\\\\*|\\\\+|\\\\-|/)\",\n          \"name\": \"keyword.operator.arithmetic.elixir\"\n        },\n        {\n          \"match\": \"\\\\||\\\\+\\\\+|\\\\-\\\\-|\\\\*\\\\*|\\\\\\\\\\\\\\\\|\\\\<\\\\-|\\\\<\\\\>|\\\\<\\\\<|\\\\>\\\\>|\\\\:\\\\:|\\\\.\\\\.|//|\\\\|>|~|=>|&\",\n          \"name\": \"keyword.operator.other.elixir\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.elixir\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.other.elixir\"\n        },\n        {\n          \"match\": \"\\\\;\",\n          \"name\": \"punctuation.separator.statement.elixir\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.elixir\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.method.elixir\"\n        },\n        {\n          \"match\": \"\\\\{|\\\\}\",\n          \"name\": \"punctuation.section.scope.elixir\"\n        },\n        {\n          \"match\": \"\\\\[|\\\\]\",\n          \"name\": \"punctuation.section.array.elixir\"\n        },\n        {\n          \"match\": \"\\\\(|\\\\)\",\n          \"name\": \"punctuation.section.function.elixir\"\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\(x[\\\\da-fA-F]{1,2}|.)\",\n      \"name\": \"constant.character.escaped.elixir\"\n    },\n    \"interpolated_elixir\": {\n      \"begin\": \"#\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.elixir\"\n        }\n      },\n      \"contentName\": \"source.elixir\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.elixir\"\n        }\n      },\n      \"name\": \"meta.embedded.line.elixir\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_curly_and_self\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.elixir\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.elixir\",\n  \"uuid\": \"D00C06B9-71B2-4FEB-A0E3-37237F579456\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/elm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"elm\"],\n  \"name\": \"elm\",\n  \"scopeName\": \"source.elm\",\n  \"patterns\": [\n    {\n      \"include\": \"#import\"\n    },\n    {\n      \"include\": \"#module\"\n    },\n    {\n      \"include\": \"#debug\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"match\": \"\\\\b(_)\\\\b\",\n      \"name\": \"keyword.unused.elm\"\n    },\n    {\n      \"include\": \"#type-signature\"\n    },\n    {\n      \"include\": \"#type-declaration\"\n    },\n    {\n      \"include\": \"#type-alias-declaration\"\n    },\n    {\n      \"include\": \"#string-triple\"\n    },\n    {\n      \"include\": \"#string-quote\"\n    },\n    {\n      \"include\": \"#char\"\n    },\n    {\n      \"comment\": \"Floats are always decimal\",\n      \"match\": \"\\\\b([0-9]+\\\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.float.elm\"\n    },\n    {\n      \"match\": \"\\\\b([0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.elm\"\n    },\n    {\n      \"match\": \"\\\\b(0x[0-9a-fA-F]+)\\\\b\",\n      \"name\": \"constant.numeric.elm\"\n    },\n    {\n      \"include\": \"#glsl\"\n    },\n    {\n      \"include\": \"#record-prefix\"\n    },\n    {\n      \"include\": \"#module-prefix\"\n    },\n    {\n      \"include\": \"#constructor\"\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\|)\\\\s+([a-z][a-zA-Z0-9_]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"record.name.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.pipe.elm\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.record.field.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\|)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.pipe.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.update.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"record.name.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.elm\",\n      \"match\": \"(\\\\{)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.record.field.elm\",\n      \"match\": \"(,)\\\\s+([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.assignment.elm\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\}|\\\\{)\",\n      \"name\": \"punctuation.bracket.elm\"\n    },\n    {\n      \"include\": \"#unit\"\n    },\n    {\n      \"include\": \"#comma\"\n    },\n    {\n      \"include\": \"#parens\"\n    },\n    {\n      \"match\": \"(->)\",\n      \"name\": \"keyword.operator.arrow.elm\"\n    },\n    {\n      \"include\": \"#infix_op\"\n    },\n    {\n      \"match\": \"(\\\\=|\\\\:|\\\\||\\\\\\\\)\",\n      \"name\": \"keyword.other.elm\"\n    },\n    {\n      \"match\": \"\\\\b(type|as|port|exposing|alias|infixl|infixr|infix)\\\\s+\",\n      \"name\": \"keyword.other.elm\"\n    },\n    {\n      \"match\": \"\\\\b(if|then|else|case|of|let|in)\\\\s+\",\n      \"name\": \"keyword.control.elm\"\n    },\n    {\n      \"include\": \"#record-accessor\"\n    },\n    {\n      \"include\": \"#top_level_value\"\n    },\n    {\n      \"include\": \"#value\"\n    },\n    {\n      \"include\": \"#period\"\n    },\n    {\n      \"include\": \"#square_brackets\"\n    }\n  ],\n  \"repository\": {\n    \"comma\": {\n      \"match\": \"(,)\",\n      \"name\": \"punctuation.separator.comma.elm\"\n    },\n    \"parens\": {\n      \"match\": \"(\\\\(|\\\\))\",\n      \"name\": \"punctuation.parens.elm\"\n    },\n    \"block_comment\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\{-(?!#)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.elm\"\n        }\n      },\n      \"end\": \"-\\\\}\",\n      \"name\": \"comment.block.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.elm\"\n            }\n          },\n          \"begin\": \"--\",\n          \"end\": \"$\",\n          \"name\": \"comment.line.double-dash.elm\"\n        },\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"import\": {\n      \"name\": \"meta.import.elm\",\n      \"begin\": \"^\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.elm\"\n        }\n      },\n      \"end\": \"\\\\n(?!\\\\s)\",\n      \"patterns\": [\n        {\n          \"match\": \"(as|exposing)\",\n          \"name\": \"keyword.control.elm\"\n        },\n        {\n          \"include\": \"#module_chunk\"\n        },\n        {\n          \"include\": \"#period\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-exports\"\n        }\n      ]\n    },\n    \"module\": {\n      \"begin\": \"^\\\\b((port |effect )?module)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.elm\"\n        }\n      },\n      \"end\": \"\\\\n(?!\\\\s)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.elm\"\n        }\n      },\n      \"name\": \"meta.declaration.module.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#module_chunk\"\n        },\n        {\n          \"include\": \"#period\"\n        },\n        {\n          \"match\": \"(exposing)\",\n          \"name\": \"keyword.other.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-exports\"\n        }\n      ]\n    },\n    \"string-triple\": {\n      \"name\": \"string.quoted.triple.elm\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.elm\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"string-quote\": {\n      \"name\": \"string.quoted.double.elm\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.elm\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"char\": {\n      \"name\": \"string.quoted.single.elm\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.begin.elm\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.char.end.elm\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]|x[0-9a-fA-F]{1,5})\",\n          \"name\": \"constant.character.escape.elm\"\n        },\n        {\n          \"match\": \"\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.elm\"\n        }\n      ]\n    },\n    \"debug\": {\n      \"match\": \"\\\\b(Debug)\\\\b\",\n      \"name\": \"invalid.illegal.debug.elm\"\n    },\n    \"module-exports\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parens.module-export.elm\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parens.module-export.elm\"\n        }\n      },\n      \"name\": \"meta.declaration.exports.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z_'0-9]*\",\n          \"name\": \"entity.name.function.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][A-Za-z_'0-9]*\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"match\": \"\\\\(\\\\.\\\\.\\\\)\",\n          \"name\": \"punctuation.parens.ellipses.elm\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"punctuation.parens.ellipses.elm\"\n        },\n        {\n          \"include\": \"#infix_op\"\n        },\n        {\n          \"comment\": \"So named because I don't know what to call this.\",\n          \"match\": \"\\\\(.*?\\\\)\",\n          \"name\": \"meta.other.unknown.elm\"\n        }\n      ]\n    },\n    \"module_chunk\": {\n      \"match\": \"[A-Z][a-zA-Z0-9_]*\",\n      \"name\": \"support.module.elm\"\n    },\n    \"period\": {\n      \"match\": \"[.]\",\n      \"name\": \"keyword.other.period.elm\"\n    },\n    \"square_brackets\": {\n      \"match\": \"[\\\\[\\\\]]\",\n      \"name\": \"punctuation.definition.list.elm\"\n    },\n    \"record-prefix\": {\n      \"match\": \"([a-z][a-zA-Z0-9_]*)(\\\\.)([a-z][a-zA-Z0-9_]*)\",\n      \"name\": \"record.accessor.elm\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"record.name.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.period.elm\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.record.field.accessor.elm\"\n        }\n      }\n    },\n    \"module-prefix\": {\n      \"match\": \"([A-Z][a-zA-Z0-9_]*)(\\\\.)\",\n      \"name\": \"meta.module.name.elm\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.module.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.period.elm\"\n        }\n      }\n    },\n    \"constructor\": {\n      \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"constant.type-constructor.elm\"\n    },\n    \"value\": {\n      \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"meta.value.elm\"\n    },\n    \"unit\": {\n      \"match\": \"\\\\(\\\\)\",\n      \"name\": \"constant.unit.elm\"\n    },\n    \"top_level_value\": {\n      \"match\": \"^[a-z][a-zA-Z0-9_]*\\\\b\",\n      \"name\": \"entity.name.function.top_level.elm\"\n    },\n    \"record-accessor\": {\n      \"match\": \"(\\\\.)([a-z][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.record.accessor\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.period.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.record.field.accessor.elm\"\n        }\n      }\n    },\n    \"infix_op\": {\n      \"match\": \"(</>|<\\\\?>|<\\\\||<=|\\\\|\\\\||&&|>=|\\\\|>|\\\\|=|\\\\|\\\\.|\\\\+\\\\+|::|/=|==|//|>>|<<|<|>|\\\\^|\\\\+|-|/|\\\\*)\",\n      \"name\": \"keyword.operator.elm\"\n    },\n    \"type-declaration\": {\n      \"begin\": \"^(type\\\\s+)([A-Z][a-zA-Z0-9_']*)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.elm\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.elm\"\n        }\n      },\n      \"end\": \"^(?=\\\\S)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"^\\\\s*([A-Z][a-zA-Z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.type-constructor.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"(\\\\=|\\\\|)\\\\s+([A-Z][a-zA-Z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.elm\"\n            },\n            \"2\": {\n              \"name\": \"constant.type-constructor.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.elm\"\n        },\n        {\n          \"match\": \"\\\\-\\\\>\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"begin\": \"^(type\\\\s+)(alias\\\\s+)([A-Z][a-zA-Z0-9_']*)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.elm\"\n        },\n        \"2\": {\n          \"name\": \"keyword.type-alias.elm\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.elm\"\n        }\n      },\n      \"end\": \"^(?=\\\\S)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\n\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"match\": \"\\\\=\",\n          \"name\": \"keyword.operator.assignment.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-record\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.begin\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.end\"\n        }\n      },\n      \"name\": \"meta.function.type-record.elm\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"name\": \"meta.record.field.elm\",\n          \"match\": \"([a-z][a-zA-Z0-9_]*)\\\\s+(\\\\:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.record.field.elm\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.elm\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\,\",\n          \"name\": \"punctuation.separator.comma.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"type-signature\": {\n      \"begin\": \"^(port\\\\s+)?([a-z_][a-zA-Z0-9_']*)\\\\s+(\\\\:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.port.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.elm\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.colon.elm\"\n        }\n      },\n      \"end\": \"((^(?=[a-z]))|^$)\",\n      \"name\": \"meta.function.type-declaration.elm\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-signature-chunk\"\n        }\n      ]\n    },\n    \"type-signature-chunk\": {\n      \"patterns\": [\n        {\n          \"match\": \"->\",\n          \"name\": \"keyword.operator.arrow.elm\"\n        },\n        {\n          \"match\": \"\\\\s+\",\n          \"name\": \"punctuation.spaces.elm\"\n        },\n        {\n          \"include\": \"#module-prefix\"\n        },\n        {\n          \"match\": \"\\\\b[a-z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"variable.type.elm\"\n        },\n        {\n          \"match\": \"\\\\b[A-Z][a-zA-Z0-9_]*\\\\b\",\n          \"name\": \"storage.type.elm\"\n        },\n        {\n          \"match\": \"\\\\(\\\\)\",\n          \"name\": \"constant.unit.elm\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#type-record\"\n        }\n      ]\n    },\n    \"glsl\": {\n      \"begin\": \"(\\\\[)(glsl)(\\\\|)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        },\n        \"2\": {\n          \"name\": \"entity.glsl.name.elm\"\n        },\n        \"3\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        }\n      },\n      \"end\": \"(\\\\|\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"entity.glsl.bracket.elm\"\n        }\n      },\n      \"name\": \"meta.embedded.block.glsl\",\n      \"patterns\": [\n        {\n          \"include\": \"source.glsl\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/erb.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"erb\", \"rhtml\", \"html.erb\"],\n  \"injections\": {\n    \"text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | comment)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^\\\\s*)(?=<%+#(?![^%]*%>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.comment.leading.erb\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.comment.trailing.erb\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s*)(?=<%(?![^%]*%>))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.erb\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(\\\\s*$\\\\n)?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.erb\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tags\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#tags\"\n        }\n      ]\n    }\n  },\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"erb\",\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.erb\"\n            }\n          },\n          \"end\": \"%>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.erb\"\n            }\n          },\n          \"name\": \"comment.block.erb\"\n        }\n      ]\n    },\n    \"tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+(?!>)[-=]?(?![^%]*%>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.erb\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"(-?%)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.erb\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.block.erb\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.erb\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.erb\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<%+(?!>)[-=]?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.erb\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"(-?%)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.erb\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.line.erb\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.erb\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.erb\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.html.erb\",\n  \"uuid\": \"13FF9439-15D0-4E74-9A8E-83ABF0BAA5E7\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/erlang.tmLanguage.json",
    "content": "{\n  \"comment\": \"The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace).  Also, the function/module/record/macro names must be given unquoted.  -- desp\",\n  \"fileTypes\": [\"erl\", \"escript\", \"hrl\", \"xrl\", \"yrl\"],\n  \"keyEquivalent\": \"^~E\",\n  \"name\": \"erlang\",\n  \"patterns\": [\n    {\n      \"include\": \"#module-directive\"\n    },\n    {\n      \"include\": \"#import-export-directive\"\n    },\n    {\n      \"include\": \"#behaviour-directive\"\n    },\n    {\n      \"include\": \"#record-directive\"\n    },\n    {\n      \"include\": \"#define-directive\"\n    },\n    {\n      \"include\": \"#macro-directive\"\n    },\n    {\n      \"include\": \"#directive\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#everything-else\"\n    }\n  ],\n  \"repository\": {\n    \"atom\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.symbol.begin.erlang\"\n            }\n          },\n          \"end\": \"(')\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.symbol.end.erlang\"\n            }\n          },\n          \"name\": \"constant.other.symbol.quoted.single.erlang\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.escape.erlang\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.escape.erlang\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2})\",\n              \"name\": \"constant.other.symbol.escape.erlang\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\^?.?\",\n              \"name\": \"invalid.illegal.atom.erlang\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[a-z][a-zA-Z\\\\d@_]*+\",\n          \"name\": \"constant.other.symbol.unquoted.erlang\"\n        }\n      ]\n    },\n    \"behaviour-directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.behaviour.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.behaviour.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"match\": \"^\\\\s*+(-)\\\\s*+(behaviour)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n      \"name\": \"meta.directive.behaviour.erlang\"\n    },\n    \"binary\": {\n      \"begin\": \"(<<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.binary.begin.erlang\"\n        }\n      },\n      \"end\": \"(>>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.binary.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.binary.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.binary.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.value-size.erlang\"\n            }\n          },\n          \"match\": \"(,)|(:)\"\n        },\n        {\n          \"include\": \"#internal-type-specifiers\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"character\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character.erlang\"\n            },\n            \"2\": {\n              \"name\": \"constant.character.escape.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            }\n          },\n          \"match\": \"(\\\\$)((\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2}))\",\n          \"name\": \"constant.character.erlang\"\n        },\n        {\n          \"match\": \"\\\\$\\\\\\\\\\\\^?.?\",\n          \"name\": \"invalid.illegal.character.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character.erlang\"\n            }\n          },\n          \"match\": \"(\\\\$)[ \\\\S]\",\n          \"name\": \"constant.character.erlang\"\n        },\n        {\n          \"match\": \"\\\\$.?\",\n          \"name\": \"invalid.illegal.character.erlang\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.erlang\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.erlang\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.percentage.erlang\"\n        }\n      ]\n    },\n    \"define-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(define)\\\\s*+(\\\\()\\\\s*+([a-zA-Z\\\\d@_]++)\\\\s*+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.define.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.definition.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.define.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=^\\\\s*+-\\\\s*+define\\\\s*+\\\\(\\\\s*+[a-zA-Z\\\\d@_]++\\\\s*+\\\\()\",\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.define.erlang\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*+(-)\\\\s*+(define)\\\\s*+(\\\\()\\\\s*+([a-zA-Z\\\\d@_]++)\\\\s*+(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.directive.begin.erlang\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.directive.define.erlang\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.macro.definition.erlang\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                }\n              },\n              \"end\": \"(\\\\))\\\\s*(,)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.erlang\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                },\n                {\n                  \"include\": \"#everything-else\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\|\\\\||\\\\||:|;|,|\\\\.|->\",\n              \"name\": \"punctuation.separator.define.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\(?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(\\\\)?)\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.erlang\"\n        }\n      ]\n    },\n    \"everything-else\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#record-usage\"\n        },\n        {\n          \"include\": \"#macro-usage\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#keyword\"\n        },\n        {\n          \"include\": \"#textual-operator\"\n        },\n        {\n          \"include\": \"#language-constant\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#tuple\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#binary\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#character\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#symbolic-operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.if.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(case)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.case.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(receive)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.receive.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.receive.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"9\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression with optional module qualifier when both module and function can be atom or variable\",\n          \"match\": \"\\\\b(fun)\\\\s+((([a-z][a-zA-Z\\\\d@_]*+)|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\\\\s*+)?(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*(/)\",\n          \"name\": \"meta.expression.fun.implicit.erlang\"\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s+(([a-z][a-zA-Z\\\\d@_]*+)|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression with module qualifier when module can be atom or variable and function can by anything\",\n          \"end\": \"(/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.implicit.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s+(?!\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            }\n          },\n          \"comment\": \"Implicit function expression when both module and function can by anything\",\n          \"end\": \"(/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.implicit.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\s*+(\\\\()(?=(\\\\s*+\\\\())\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"comment\": \"Function type in type specification\",\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.fun.erlang\"\n            }\n          },\n          \"comment\": \"Explicit function expression\",\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.fun.erlang\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\()\",\n              \"end\": \"(;)|(?=\\\\bend\\\\b)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.clauses.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#internal-function-parts\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.try.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(begin)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.begin.erlang\"\n            }\n          },\n          \"end\": \"\\\\b(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.erlang\"\n            }\n          },\n          \"name\": \"meta.expression.begin.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-expression-punctuation\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"^\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.definition.erlang\"\n        }\n      },\n      \"end\": \"(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.function.erlang\"\n        }\n      },\n      \"name\": \"meta.function.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(?=\\\\()\"\n        },\n        {\n          \"begin\": \"(?=\\\\()\",\n          \"end\": \"(;)|(?=\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.clauses.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthesized-expression\"\n            },\n            {\n              \"include\": \"#internal-function-parts\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"(?=([a-z][a-zA-Z\\\\d@_]*+|'[^']*+'|_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\(|:\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+'|_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)\\\\s*+\\\\())\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        }\n      },\n      \"name\": \"meta.function-call.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"((erlang)\\\\s*+(:)\\\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.guard.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(:)\\\\s*+)?(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+))\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.module-function.erlang\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.erlang\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-directive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(import)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(,)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.import.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.module.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.parameters.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.import.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-function-list\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*+(-)\\\\s*+(export)\\\\s*+(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.export.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"name\": \"meta.directive.export.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-function-list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"internal-expression-punctuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.clause-head-body.erlang\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.clauses.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.expressions.erlang\"\n        }\n      },\n      \"match\": \"(->)|(;)|(,)\"\n    },\n    \"internal-function-list\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.list.function.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.function-arity.erlang\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.list.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-function-parts\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\()\",\n          \"end\": \"(->)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.clause-head-body.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.begin.erlang\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.erlang\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.erlang\"\n                },\n                {\n                  \"include\": \"#everything-else\"\n                }\n              ]\n            },\n            {\n              \"match\": \",|;\",\n              \"name\": \"punctuation.separator.guards.erlang\"\n            },\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.expressions.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-record-body\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.class.record.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.class.record.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.record.erlang\",\n      \"patterns\": [\n        {\n          \"begin\": \"(([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')|(_))\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"variable.other.field.erlang\"\n            },\n            \"3\": {\n              \"name\": \"variable.language.omitted.field.erlang\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.class.record.erlang\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#everything-else\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"internal-type-specifiers\": {\n      \"begin\": \"(/)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.value-type.erlang\"\n        }\n      },\n      \"end\": \"(?=,|:|>>)\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.erlang\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.signedness.erlang\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.endianness.erlang\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.unit.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.unit-specifiers.erlang\"\n            },\n            \"6\": {\n              \"name\": \"constant.numeric.integer.decimal.erlang\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.separator.type-specifiers.erlang\"\n            }\n          },\n          \"match\": \"(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\\\d++)|(-)\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"\\\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when)\\\\b\",\n      \"name\": \"keyword.control.erlang\"\n    },\n    \"language-constant\": {\n      \"match\": \"\\\\b(false|true|undefined)\\\\b\",\n      \"name\": \"constant.language\"\n    },\n    \"list\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.list.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.list.erlang\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\||\\\\|\\\\||,\",\n          \"name\": \"punctuation.separator.list.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"macro-directive\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.ifdef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(ifdef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.ifdef.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.ifndef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(ifndef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.ifndef.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.directive.begin.erlang\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.undef.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.erlang\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.macro.erlang\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.end.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.directive.end.erlang\"\n            }\n          },\n          \"match\": \"^\\\\s*+(-)\\\\s*+(undef)\\\\s*+(\\\\()\\\\s*+([a-zA-z\\\\d@_]++)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n          \"name\": \"meta.directive.undef.erlang\"\n        }\n      ]\n    },\n    \"macro-usage\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.erlang\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.macro.erlang\"\n        }\n      },\n      \"match\": \"(\\\\?\\\\??)\\\\s*+([a-zA-Z\\\\d@_]++)\",\n      \"name\": \"meta.macro-usage.erlang\"\n    },\n    \"module-directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.module.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.module.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"match\": \"^\\\\s*+(-)\\\\s*+(module)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+)\\\\s*+(\\\\))\\\\s*+(\\\\.)\",\n      \"name\": \"meta.directive.module.erlang\"\n    },\n    \"number\": {\n      \"begin\": \"(?=\\\\d)\",\n      \"end\": \"(?!\\\\d)\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.integer-float.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.float-exponent.erlang\"\n            }\n          },\n          \"match\": \"\\\\d++(\\\\.)\\\\d++([eE][\\\\+\\\\-]?\\\\d++)?\",\n          \"name\": \"constant.numeric.float.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"2(#)([0-1]++_)*[0-1]++\",\n          \"name\": \"constant.numeric.integer.binary.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"3(#)([0-2]++_)*[0-2]++\",\n          \"name\": \"constant.numeric.integer.base-3.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"4(#)([0-3]++_)*[0-3]++\",\n          \"name\": \"constant.numeric.integer.base-4.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"5(#)([0-4]++_)*[0-4]++\",\n          \"name\": \"constant.numeric.integer.base-5.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"6(#)([0-5]++_)*[0-5]++\",\n          \"name\": \"constant.numeric.integer.base-6.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"7(#)([0-6]++_)*[0-6]++\",\n          \"name\": \"constant.numeric.integer.base-7.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"8(#)([0-7]++_)*[0-7]++\",\n          \"name\": \"constant.numeric.integer.octal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"9(#)([0-8]++_)*[0-8]++\",\n          \"name\": \"constant.numeric.integer.base-9.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"10(#)(\\\\d++_)*\\\\d++\",\n          \"name\": \"constant.numeric.integer.decimal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"11(#)([\\\\daA]++_)*[\\\\daA]++\",\n          \"name\": \"constant.numeric.integer.base-11.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"12(#)([\\\\da-bA-B]++_)*[\\\\da-bA-B]++\",\n          \"name\": \"constant.numeric.integer.base-12.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"13(#)([\\\\da-cA-C]++_)*[\\\\da-cA-C]++\",\n          \"name\": \"constant.numeric.integer.base-13.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"14(#)([\\\\da-dA-D]++_)*[\\\\da-dA-D]++\",\n          \"name\": \"constant.numeric.integer.base-14.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"15(#)([\\\\da-eA-E]++_)*[\\\\da-eA-E]++\",\n          \"name\": \"constant.numeric.integer.base-15.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"16(#)([\\\\da-fA-F]++_)*[\\\\da-fA-F]++\",\n          \"name\": \"constant.numeric.integer.hexadecimal.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"17(#)([\\\\da-gA-G]++_)*[\\\\da-gA-G]++\",\n          \"name\": \"constant.numeric.integer.base-17.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"18(#)([\\\\da-hA-H]++_)*[\\\\da-hA-H]++\",\n          \"name\": \"constant.numeric.integer.base-18.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"19(#)([\\\\da-iA-I]++_)*[\\\\da-iA-I]++\",\n          \"name\": \"constant.numeric.integer.base-19.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"20(#)([\\\\da-jA-J]++_)*[\\\\da-jA-J]++\",\n          \"name\": \"constant.numeric.integer.base-20.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"21(#)([\\\\da-kA-K]++_)*[\\\\da-kA-K]++\",\n          \"name\": \"constant.numeric.integer.base-21.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"22(#)([\\\\da-lA-L]++_)*[\\\\da-lA-L]++\",\n          \"name\": \"constant.numeric.integer.base-22.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"23(#)([\\\\da-mA-M]++_)*[\\\\da-mA-M]++\",\n          \"name\": \"constant.numeric.integer.base-23.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"24(#)([\\\\da-nA-N]++_)*[\\\\da-nA-N]++\",\n          \"name\": \"constant.numeric.integer.base-24.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"25(#)([\\\\da-oA-O]++_)*[\\\\da-oA-O]++\",\n          \"name\": \"constant.numeric.integer.base-25.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"26(#)([\\\\da-pA-P]++_)*[\\\\da-pA-P]++\",\n          \"name\": \"constant.numeric.integer.base-26.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"27(#)([\\\\da-qA-Q]++_)*[\\\\da-qA-Q]++\",\n          \"name\": \"constant.numeric.integer.base-27.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"28(#)([\\\\da-rA-R]++_)*[\\\\da-rA-R]++\",\n          \"name\": \"constant.numeric.integer.base-28.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"29(#)([\\\\da-sA-S]++_)*[\\\\da-sA-S]++\",\n          \"name\": \"constant.numeric.integer.base-29.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"30(#)([\\\\da-tA-T]++_)*[\\\\da-tA-T]++\",\n          \"name\": \"constant.numeric.integer.base-30.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"31(#)([\\\\da-uA-U]++_)*[\\\\da-uA-U]++\",\n          \"name\": \"constant.numeric.integer.base-31.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"32(#)([\\\\da-vA-V]++_)*[\\\\da-vA-V]++\",\n          \"name\": \"constant.numeric.integer.base-32.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"33(#)([\\\\da-wA-W]++_)*[\\\\da-wA-W]++\",\n          \"name\": \"constant.numeric.integer.base-33.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"34(#)([\\\\da-xA-X]++_)*[\\\\da-xA-X]++\",\n          \"name\": \"constant.numeric.integer.base-34.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"35(#)([\\\\da-yA-Y]++_)*[\\\\da-yA-Y]++\",\n          \"name\": \"constant.numeric.integer.base-35.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.base-integer.erlang\"\n            }\n          },\n          \"match\": \"36(#)([\\\\da-zA-Z]++_)*[\\\\da-zA-Z]++\",\n          \"name\": \"constant.numeric.integer.base-36.erlang\"\n        },\n        {\n          \"match\": \"\\\\d++#([\\\\da-zA-Z]++_)*[\\\\da-zA-Z]++\",\n          \"name\": \"invalid.illegal.integer.erlang\"\n        },\n        {\n          \"match\": \"(\\\\d++_)*\\\\d++\",\n          \"name\": \"constant.numeric.integer.decimal.erlang\"\n        }\n      ]\n    },\n    \"parenthesized-expression\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.erlang\"\n        }\n      },\n      \"name\": \"meta.expression.parenthesized\",\n      \"patterns\": [\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"record-directive\": {\n      \"begin\": \"^\\\\s*+(-)\\\\s*+(record)\\\\s*+(\\\\()\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.directive.begin.erlang\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.directive.import.erlang\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.erlang\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.record.definition.erlang\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.parameters.erlang\"\n        }\n      },\n      \"end\": \"(\\\\))\\\\s*+(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.erlang\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.directive.end.erlang\"\n        }\n      },\n      \"name\": \"meta.directive.record.erlang\",\n      \"patterns\": [\n        {\n          \"include\": \"#internal-record-body\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"record-usage\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.record.erlang\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.record.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.record-field.erlang\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.field.erlang\"\n            }\n          },\n          \"match\": \"(#)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\\\\s*+(\\\\.)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\",\n          \"name\": \"meta.record-usage.erlang\"\n        },\n        {\n          \"begin\": \"(#)\\\\s*+([a-z][a-zA-Z\\\\d@_]*+|'[^']*+')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.record.erlang\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.record.erlang\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.record-usage.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"#internal-record-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.erlang\"\n        }\n      },\n      \"name\": \"string.quoted.double.erlang\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.escape.erlang\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)([bdefnrstv\\\\\\\\'\\\"]|(\\\\^)[@-_a-z]|[0-7]{1,3}|x[\\\\da-fA-F]{2})\",\n          \"name\": \"constant.character.escape.erlang\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\^?.?\",\n          \"name\": \"invalid.illegal.string.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.placeholder.erlang\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            },\n            \"12\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            }\n          },\n          \"match\": \"(~)((\\\\-)?\\\\d++|(\\\\*))?((\\\\.)(\\\\d++|(\\\\*)))?((\\\\.)((\\\\*)|.))?[~cfegswpWPBX#bx\\\\+ni]\",\n          \"name\": \"constant.other.placeholder.erlang\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.placeholder.erlang\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.placeholder-parts.erlang\"\n            }\n          },\n          \"match\": \"(~)(\\\\*)?(\\\\d++)?[~du\\\\-#fsacl]\",\n          \"name\": \"constant.other.placeholder.erlang\"\n        },\n        {\n          \"match\": \"~[^\\\"]?\",\n          \"name\": \"invalid.illegal.string.erlang\"\n        }\n      ]\n    },\n    \"symbolic-operator\": {\n      \"match\": \"\\\\+\\\\+|\\\\+|--|-|\\\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::\",\n      \"name\": \"keyword.operator.symbolic.erlang\"\n    },\n    \"textual-operator\": {\n      \"match\": \"\\\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\\\b\",\n      \"name\": \"keyword.operator.textual.erlang\"\n    },\n    \"tuple\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tuple.begin.erlang\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tuple.end.erlang\"\n        }\n      },\n      \"name\": \"meta.structure.tuple.erlang\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.tuple.erlang\"\n        },\n        {\n          \"include\": \"#everything-else\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.erlang\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.omitted.erlang\"\n        }\n      },\n      \"match\": \"(_[a-zA-Z\\\\d@_]++|[A-Z][a-zA-Z\\\\d@_]*+)|(_)\"\n    }\n  },\n  \"scopeName\": \"source.erlang\",\n  \"uuid\": \"58EA597D-5158-4BF7-9FB2-B05135D1E166\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/fish.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"fileTypes\": [\"fish\"],\n  \"firstLineMatch\": \"^#!.*\\\\bfish\\\\b\",\n  \"foldingStartMarker\": \"^\\\\s*(function|while|if|switch|for|begin)\\\\s.*$\",\n  \"foldingStopMarker\": \"^\\\\s*end\\\\s*$\",\n  \"keyEquivalent\": \"^~F\",\n  \"name\": \"fish\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.fish\"\n        }\n      },\n      \"comment\": \"Double quoted string\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.fish\"\n        }\n      },\n      \"name\": \"string.quoted.double.fish\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"comment\": \"https://fishshell.com/docs/current/#quotes\",\n          \"match\": \"\\\\\\\\(\\\\\\\"|\\\\$|$|\\\\\\\\)\",\n          \"name\": \"constant.character.escape.fish\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.fish\"\n        }\n      },\n      \"comment\": \"Single quoted string\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.fish\"\n        }\n      },\n      \"name\": \"string.quoted.single.fish\",\n      \"patterns\": [\n        {\n          \"comment\": \"https://fishshell.com/docs/current/#quotes\",\n          \"match\": \"\\\\\\\\('|`|\\\\\\\\)\",\n          \"name\": \"constant.character.escape.fish\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.fish\"\n        }\n      },\n      \"comment\": \"line comment\",\n      \"match\": \"(?<!\\\\$)(#)(?!\\\\{).*$\\\\n?\",\n      \"name\": \"comment.line.number-sign.fish\"\n    },\n    {\n      \"comment\": \"name of command, either a function or a binary\",\n      \"match\": \"(^\\\\s*|&&\\\\s*|\\\\|\\\\s*|\\\\(\\\\s*|[;]\\\\s*|\\\\b(if|while)\\\\b\\\\s+)(?!(?<!\\\\.)\\\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\\\b(?![?!]))([a-zA-Z_\\\\-0-9\\\\[\\\\].]+)\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"keyword.control.fish\"\n        },\n        \"4\": {\n          \"name\": \"support.function.command.fish\"\n        }\n      }\n    },\n    {\n      \"comment\": \"keywords that affect control flow\",\n      \"match\": \"(?<!\\\\.)\\\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.fish\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\bfunction\\\\b(?![?!])\",\n      \"name\": \"storage.type.fish\"\n    },\n    {\n      \"match\": \"\\\\|\",\n      \"name\": \"keyword.operator.pipe.fish\"\n    },\n    {\n      \"comment\": \"IO Redirection\",\n      \"match\": \"(?x:\\n<|# Standard Input\\n(>|\\\\^|>>|\\\\^\\\\^)(&[012\\\\-])?| # Redirection of stderr\\n[012](<|>|>>)(&[012\\\\-])? # Redirect input/output of file descriptors\\n)\",\n      \"name\": \"keyword.operator.redirect.fish\"\n    },\n    {\n      \"match\": \"&\",\n      \"name\": \"keyword.operator.background.fish\"\n    },\n    {\n      \"match\": \"\\\\*\\\\*|\\\\*|\\\\?\",\n      \"name\": \"keyword.operator.glob.fish\"\n    },\n    {\n      \"comment\": \"command short/long options\",\n      \"match\": \"\\\\s(-{1,2}[a-zA-Z_\\\\-0-9]+|-\\\\w)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"source.option.fish\"\n        }\n      }\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#escape\"\n    }\n  ],\n  \"repository\": {\n    \"escape\": {\n      \"patterns\": [\n        {\n          \"comment\": \"single character character escape sequences\",\n          \"match\": \"\\\\\\\\[abefnrtv $*?~#(){}\\\\[\\\\]<>^&|;\\\"']\",\n          \"name\": \"constant.character.escape.single.fish\"\n        },\n        {\n          \"comment\": \"escapes the ascii character with the specified value (hexadecimal)\",\n          \"match\": \"\\\\\\\\x[0-9a-fA-F]{1,2}\",\n          \"name\": \"constant.character.escape.hex-ascii.fish\"\n        },\n        {\n          \"comment\": \"escapes a byte of data with the specified value (hexadecimal). If you are using mutibyte encoding, this can be used to enter invalid strings. Only use this if you know what are doing.\",\n          \"match\": \"\\\\\\\\X[0-9a-fA-F]{1,2}\",\n          \"name\": \"constant.character.escape.hex-byte.fish\"\n        },\n        {\n          \"comment\": \"escapes the ascii character with the specified value (octal)\",\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.character.escape.octal.fish\"\n        },\n        {\n          \"comment\": \"escapes the 16-bit unicode character with the specified value (hexadecimal)\",\n          \"match\": \"\\\\\\\\u[0-9a-fA-F]{1,4}\",\n          \"name\": \"constant.character.escape.unicode-16-bit.fish\"\n        },\n        {\n          \"comment\": \"escapes the 32-bit unicode character with the specified value (hexadecimal)\",\n          \"match\": \"\\\\\\\\U[0-9a-fA-F]{1,8}\",\n          \"name\": \"constant.character.escape.unicode-32-bit.fish\"\n        },\n        {\n          \"comment\": \"escapes the control sequence generated by pressing the control key and the specified letter\",\n          \"match\": \"\\\\\\\\c[a-zA-Z]\",\n          \"name\": \"constant.character.escape.control.fish\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Built-in variables visible by pressing $ TAB TAB in a new shell\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.fish\"\n            }\n          },\n          \"match\": \"(\\\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\\\b\",\n          \"name\": \"variable.language.fish\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.fish\"\n            }\n          },\n          \"match\": \"(\\\\$)[a-zA-Z_][a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.normal.fish\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.fish\",\n  \"uuid\": \"9CA6DB6F-A16F-4836-A058-617C7378775D\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/fsharp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/ionide/ionide-fsgrammar/blob/master/grammars/fsharp.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/ionide/ionide-fsgrammar/commit/f74f4485011a9b463f1c1367195a4309a13403d6\",\n  \"name\": \"fsharp\",\n  \"scopeName\": \"source.fsharp\",\n  \"patterns\": [\n    {\n      \"include\": \"#compiler_directives\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#chars\"\n    },\n    {\n      \"include\": \"#double_tick\"\n    },\n    {\n      \"include\": \"#definition\"\n    },\n    {\n      \"include\": \"#abstract_definition\"\n    },\n    {\n      \"include\": \"#attributes\"\n    },\n    {\n      \"include\": \"#modules\"\n    },\n    {\n      \"include\": \"#anonymous_functions\"\n    },\n    {\n      \"include\": \"#du_declaration\"\n    },\n    {\n      \"include\": \"#record_declaration\"\n    },\n    {\n      \"include\": \"#records\"\n    },\n    {\n      \"include\": \"#strp_inlined\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#cexprs\"\n    },\n    {\n      \"include\": \"#text\"\n    }\n  ],\n  \"repository\": {\n    \"strp_inlined_body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#anonymous_functions\"\n        },\n        {\n          \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(and|when|or)\\\\b\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#strp_inlined_body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(static member|member)\\\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#compiler_directives\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#chars\"\n        },\n        {\n          \"include\": \"#double_tick\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#text\"\n        },\n        {\n          \"include\": \"#definition\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#cexprs\"\n        },\n        {\n          \"include\": \"#text\"\n        }\n      ]\n    },\n    \"strp_inlined\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#strp_inlined_body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"generic_declaration\": {\n      \"patterns\": [\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\\\!|return\\\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(<)\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(('|\\\\^)[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            },\n            {\n              \"include\": \"#generic_declaration\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?!when|and|or\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\|)\",\n          \"comments\": \"Prevent captures of `|>` as a keyword when defining custom operator like `<|>`\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"anonymous_record_declaration\": {\n      \"begin\": \"(\\\\{\\\\|)\",\n      \"end\": \"(\\\\|\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.symbol.fsharp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.symbol.fsharp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"[[:alpha:]0-9'`^_ ]+(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"([[:alpha:]0-9'`^_ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"record_signature\": {\n      \"patterns\": [\n        {\n          \"match\": \"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"({)\",\n          \"end\": \"(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#record_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"tuple_signature\": {\n      \"patterns\": [\n        {\n          \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(([?[:alpha:]0-9'`^._ ]+))+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"anonymous_functions\": {\n      \"patterns\": [\n        {\n          \"name\": \"function.anonymous\",\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"end\": \"(->)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.arrow.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"end\": \"\\\\s*(?=(->))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.arrow.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.arrow.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.function.attribute.fsharp\",\n          \"begin\": \"\\\\[\\\\<\",\n          \"end\": \"\\\\>\\\\]|\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.literate.command.fsharp\",\n          \"match\": \"(\\\\(\\\\*{3}.*\\\\*{3}\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.block.markdown.fsharp\",\n          \"begin\": \"^\\\\s*(\\\\(\\\\*\\\\*(?!\\\\)))((?!\\\\*\\\\)).)*$\",\n          \"while\": \"^(?!\\\\s*(\\\\*)+\\\\)\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.fsharp\",\n          \"begin\": \"(\\\\(\\\\*(?!\\\\)))\",\n          \"end\": \"(\\\\*+\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"comments\": \"Capture // when inside of (* *) like that the rule which capture comments starting by // is not trigger. See https://github.com/ionide/ionide-fsgrammar/issues/155\",\n              \"name\": \"fast-capture.comment.line.double-slash.fsharp\",\n              \"match\": \"//\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.markdown.fsharp.end\",\n          \"match\": \"((?<!\\\\()(\\\\*)+\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.block.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.markdown.fsharp\",\n          \"begin\": \"///\",\n          \"while\": \"///\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.line.double-slash.fsharp\",\n          \"match\": \"//.*$\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.unit.fsharp\",\n          \"match\": \"\\\\(\\\\)\"\n        },\n        {\n          \"name\": \"constant.numeric.float.fsharp\",\n          \"match\": \"\\\\b-?[0-9][0-9_]*((\\\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))\"\n        },\n        {\n          \"name\": \"constant.numeric.integer.nativeint.fsharp\",\n          \"match\": \"\\\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.fsharp\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        },\n        {\n          \"name\": \"constant.other.fsharp\",\n          \"match\": \"\\\\b(null|unit|void)\\\\b\"\n        }\n      ]\n    },\n    \"abstract_definition\": {\n      \"name\": \"abstract.definition.fsharp\",\n      \"begin\": \"\\\\b(abstract)\\\\s+(member)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*([_[:alpha:]0-9,\\\\._`\\\\s]+)(:)\",\n      \"end\": \"\\\\s*(with)\\\\b|=|$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.fsharp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.fsharp\"\n        },\n        \"3\": {\n          \"name\": \"support.function.attribute.fsharp\"\n        },\n        \"5\": {\n          \"name\": \"keyword.fsharp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.fsharp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#common_declaration\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\\\s*(:)((?!with\\\\b)\\\\b([\\\\w0-9'`^._ ]+)){0,1}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?!with|get|set\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"common_binding_definition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*((?=,)|(?=\\\\=))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\)\\\\s*(([?[:alpha:]0-9'`^._ ]*)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\^[[:alpha:]0-9'._]+)\\\\s*(when)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(?=:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"keyword.fsharp\",\n              \"match\": \"\\\\b(and|when|or)\\\\b\"\n            },\n            {\n              \"comment\": \"Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition\",\n              \"match\": \"([[:alpha:]0-9'^._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"name\": \"keyword.symbol.fsharp\",\n              \"match\": \"(\\\\(|\\\\))\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(:)\\\\s*([?[:alpha:]0-9'`^._ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"match\": \"(->)\\\\s*(\\\\()?\\\\s*([?[:alpha:]0-9'`^._ ]+)*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\)\\\\s*(([?[:alpha:]0-9'`^._ ]+))+)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\*)(\\\\s*([?[:alpha:]0-9'`^._ ]+))*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"end\": \"(?==)|(?=\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#tuple_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<+(?![[:space:]]*\\\\)))\",\n          \"beginComment\": \"The group (?![[:space:]]*\\\\) is for protection against overload operator. static member (<)\",\n          \"end\": \"((?<!:)>|\\\\))\",\n          \"endComment\": \"The group (?<!:) prevent us from stopping on :> when using SRTP synthax\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#generic_declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"begin\": \"({)\",\n          \"end\": \"(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#record_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#definition\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"definition\": {\n      \"patterns\": [\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(let mutable|static let mutable|static let|let inline|let|member val|static member inline|static member|default|member|override|let!)(\\\\s+rec|mutable)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*(private|internal|public)?\\\\s+(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(with\\\\b|=|\\\\n+=|(?<=\\\\=))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"support.function.attribute.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(use|use!|and|and!)\\\\s+(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"(?<=with|and)\\\\s*\\\\b((get|set)\\\\s*(?=\\\\())(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\s*(=|\\\\n+=|(?<=\\\\=))\",\n          \"beginCaptures\": {\n            \"4\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(static val mutable|val mutable|val)(\\\\s+rec|mutable)?(\\\\s+\\\\[\\\\<.*\\\\>\\\\])?\\\\s*(private|internal|public)?\\\\s+(\\\\[[^-=]*\\\\]|[_[:alpha:]]([_[:alpha:]0-9,\\\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\\\._`\\\\s]+|(?<=,)\\\\s)*)?\",\n          \"end\": \"\\\\n$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"support.function.attribute.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        },\n        {\n          \"name\": \"binding.fsharp\",\n          \"begin\": \"\\\\b(new)\\\\b\\\\s+(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#common_binding_definition\"\n            }\n          ]\n        }\n      ]\n    },\n    \"du_declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"du_declaration.fsharp\",\n          \"begin\": \"\\\\b(of)\\\\b\",\n          \"end\": \"$|(\\\\|)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\\\s*(:)\\\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#anonymous_record_declaration\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.modifier\",\n          \"match\": \"\\\\b(private|public|internal)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(private|to|public|internal|function|class|exception|delegate|of|as|begin|end|inherit|let!|interface|abstract|enum|member|and|when|or|use|use\\\\!|struct|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"\\\\b(match|yield|yield!|with|if|then|else|elif|for|in|return!|return|try|finally|while|do)(?!')\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.new\",\n          \"match\": \"\\\\b(new)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.fsharp\",\n          \"match\": \"(&&&|\\\\|\\\\|\\\\||\\\\^\\\\^\\\\^|~~~|<<<|>>>|\\\\|>|\\\\->|\\\\<\\\\-|:>|:\\\\?>|:|\\\\[|\\\\]|\\\\;|<>|=|@|\\\\|\\\\||&&|{|}|\\\\||_|\\\\.\\\\.|\\\\,|\\\\+|\\\\-|\\\\*|\\\\/|\\\\^|\\\\!|\\\\>|\\\\>\\\\=|\\\\>\\\\>|\\\\<|\\\\<\\\\=|\\\\(|\\\\)|\\\\<\\\\<)\"\n        }\n      ]\n    },\n    \"modules\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.section.fsharp\",\n          \"begin\": \"\\\\b(namespace global)|\\\\b(namespace|module)\\\\s*(public|internal|private|rec)?\\\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)\",\n          \"end\": \"(\\\\s?=|\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([A-Z][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"name\": \"namespace.open.fsharp\",\n          \"begin\": \"\\\\b(open type|open)\\\\s+([[:alpha:]][[:alpha:]0-9'_]*)(?=(\\\\.[A-Z][[:alpha:]0-9_]*)*)\",\n          \"end\": \"(\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([[:alpha:]][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"namespace.alias.fsharp\",\n          \"begin\": \"^\\\\s*(module)\\\\s+([A-Z][[:alpha:]0-9'_]*)\\\\s*(=)\\\\s*([A-Z][[:alpha:]0-9'_]*)\",\n          \"end\": \"(\\\\s|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.namespace.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace-definition.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.name.section.fsharp\",\n              \"match\": \"(\\\\.)([A-Z][[:alpha:]0-9'_]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.namespace-reference.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.fsharp\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.literal.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(@\\\")\",\n          \"end\": \"(\\\")(?!\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.string.escape.fsharp\",\n              \"match\": \"\\\"(\\\")\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.triple.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string_formatter\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.fsharp\",\n          \"begin\": \"(?=[^\\\\\\\\])(\\\")\",\n          \"end\": \"(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.string.ignore-eol.fsharp\",\n              \"match\": \"\\\\\\\\$[ \\\\t]*\"\n            },\n            {\n              \"name\": \"constant.character.string.escape.fsharp\",\n              \"match\": \"\\\\\\\\(['\\\"\\\\\\\\abfnrtv]|([01][0-9][0-9]|2[0-4][0-9]|25[0-5])|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U00(0[0-9a-fA-F]|10)[0-9a-fA-F]{4}))\"\n            },\n            {\n              \"name\": \"invalid.illegal.character.string.fsharp\",\n              \"match\": \"\\\\\\\\(([0-9]{1,3})|(x[^\\\\s]{0,2})|(u[^\\\\s]{0,4})|(U[^\\\\s]{0,8})|[^\\\\s])\"\n            },\n            {\n              \"include\": \"#string_formatter\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_formatter\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.format.specifier.fsharp\",\n          \"match\": \"(%0?-?(\\\\d+)?((a|t)|(\\\\.\\\\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\\\\+?A)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.format.specifier.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.unit.fsharp\",\n          \"match\": \"\\\\(\\\\)\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private\\\\b)\\\\b[\\\\w[:alpha:]0-9'`<>^._ ]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"common_declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(->)\\\\s*([[:alpha:]0-9'`^._ ]+)(<)\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([[:alpha:]0-9'`^._ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s*(->)\\\\s*(?!with|get|set\\\\b)\\\\b([\\\\w0-9'`^._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#anonymous_record_declaration\"\n        },\n        {\n          \"begin\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\\\s*(:)(\\\\s*([?[:alpha:]0-9'`^._ ]+)(<))\",\n          \"end\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"([[:alpha:]0-9'`^._ ]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"member_declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#common_declaration\"\n        },\n        {\n          \"comments\": \"SRTP syntax support\",\n          \"begin\": \"(:)\\\\s*(\\\\()\\\\s*(static member|member)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*((?=,)|(?=\\\\=))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\^[[:alpha:]0-9'._]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.fsharp\",\n          \"match\": \"\\\\b(and|when|or)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.symbol.fsharp\",\n          \"match\": \"(\\\\(|\\\\))\"\n        },\n        {\n          \"match\": \"(\\\\?{0,1})([[:alpha:]0-9'`^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\\\\s*(:{0,1})(\\\\s*([?[:alpha:]0-9'`<>._ ]+)){0,1}\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.fsharp\"\n            }\n          }\n        },\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    \"double_tick\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.binding.fsharp\",\n          \"match\": \"(``)([^`]*)(``)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.binding.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"records\": {\n      \"patterns\": [\n        {\n          \"name\": \"record.fsharp\",\n          \"begin\": \"\\\\b(type)[\\\\s]+(private|internal|public)?\\\\s*\",\n          \"end\": \"\\\\s*((with)|((as)\\\\s+([[:alpha:]0-9']+))|(=)|[\\\\n=]|(\\\\(\\\\)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.fsharp\"\n            }\n          },\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"4\": {\n              \"name\": \"keyword.fsharp\"\n            },\n            \"5\": {\n              \"name\": \"variable.parameter.fsharp\"\n            },\n            \"6\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.unit.fsharp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"match\": \"([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.fsharp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(<)\",\n              \"end\": \"((?<!:)>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(('|\\\\^)``[[:alpha:]0-9`^:,._ ]+``|('|\\\\^)[[:alpha:]0-9`^:._]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"name\": \"keyword.fsharp\",\n                  \"match\": \"\\\\b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\\\\b\"\n                },\n                {\n                  \"begin\": \"(\\\\()\",\n                  \"end\": \"(\\\\))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.symbol.fsharp\"\n                    }\n                  },\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.symbol.fsharp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"match\": \"(static member|member|new)\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"keyword.fsharp\"\n                        }\n                      }\n                    },\n                    {\n                      \"include\": \"#common_binding_definition\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"([\\\\w0-9'`^._]+)\",\n                  \"comments\": \"Here we need the \\\\w modifier in order to check that the words isn't blacklisted\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#keywords\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\s*(private|internal|public)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.fsharp\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"end\": \"\\\\s*(?=(=)|[\\\\n=]|(\\\\(\\\\))|(as))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#member_declaration\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#keywords\"\n            }\n          ]\n        }\n      ]\n    },\n    \"record_declaration\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.symbol.fsharp\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(((mutable)\\\\s[[:alpha:]]+)|[[:alpha:]0-9'`<>^._]*)\\\\s*((?<!:):(?!:))\\\\s*\",\n              \"beginCaptures\": {\n                \"3\": {\n                  \"name\": \"keyword.fsharp\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"end\": \"$|(;|\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.symbol.fsharp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"match\": \"([[:alpha:]0-9'`^_ ]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.type.fsharp\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#keywords\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#compiler_directives\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#chars\"\n            },\n            {\n              \"include\": \"#double_tick\"\n            },\n            {\n              \"include\": \"#definition\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"include\": \"#anonymous_functions\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#cexprs\"\n            },\n            {\n              \"include\": \"#text\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cexprs\": {\n      \"patterns\": [\n        {\n          \"name\": \"cexpr.fsharp\",\n          \"match\": \"\\\\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"chars\": {\n      \"patterns\": [\n        {\n          \"name\": \"char.fsharp\",\n          \"match\": \"('\\\\\\\\?.')\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.quoted.single.fsharp\"\n            }\n          }\n        }\n      ]\n    },\n    \"text\": {\n      \"patterns\": [\n        {\n          \"name\": \"text.fsharp\",\n          \"match\": \"\\\\\\\\\"\n        }\n      ]\n    },\n    \"compiler_directives\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.directive.fsharp\",\n          \"match\": \"\\\\s?(#if|#elif|#elseif|#else|#endif|#light|#nowarn)\",\n          \"captures\": {}\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/gherkin.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"feature\"],\n  \"firstLineMatch\": \"기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd(.*)\",\n  \"foldingStartMarker\": \"^\\\\s*\\\\b(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra)\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"keyEquivalent\": \"^~C\",\n  \"name\": \"gherkin\",\n  \"patterns\": [\n    {\n      \"include\": \"#feature_element_keyword\"\n    },\n    {\n      \"include\": \"#feature_keyword\"\n    },\n    {\n      \"include\": \"#step_keyword\"\n    },\n    {\n      \"include\": \"#strings_triple_quote\"\n    },\n    {\n      \"include\": \"#strings_single_quote\"\n    },\n    {\n      \"include\": \"#strings_double_quote\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#tags\"\n    },\n    {\n      \"include\": \"#scenario_outline_variable\"\n    },\n    {\n      \"include\": \"#table\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"comment.line.number-sign\"\n        }\n      },\n      \"match\": \"^\\\\s*(#.*)\"\n    },\n    \"table\": {\n      \"begin\": \"^\\\\s*\\\\|\",\n      \"end\": \"\\\\|\\\\s*$\",\n      \"name\": \"keyword.control.cucumber.table\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\w\",\n          \"name\": \"source\"\n        }\n      ]\n    },\n    \"feature_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature\"\n        },\n        \"2\": {\n          \"name\": \"string.language.gherkin.feature.title\"\n        }\n      },\n      \"match\": \"^\\\\s*(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Ability|Egenskap|Egenskab|Crikey|Característica|Arwedd):(.*)\\\\b\"\n    },\n    \"step_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature.step\"\n        }\n      },\n      \"match\": \"^\\\\s*(En |و |Y |E |Եվ |Ya |Too right |Və |Həm |A |И |而且 |并且 |同时 |並且 |同時 |Ak |Epi |A také |Og |😂 |And |Kaj |Ja |Et que |Et qu' |Et |და |Und |Και |અને |וגם |और |तथा |És |Dan |Agus |かつ |Lan |ಮತ್ತು |'ej |latlh |그리고 |AN |Un |Ir |an |a |Мөн |Тэгээд |Ond |7 |ਅਤੇ |Aye |Oraz |Si |Și |Şi |К тому же |Также |An |A tiež |A taktiež |A zároveň |In |Ter |Och |மேலும் |மற்றும் |Һәм |Вә |మరియు |และ |Ve |І |А також |Та |اور |Ва |Và |Maar |لكن |Pero |Բայց |Peru |Yeah nah |Amma |Ancaq |Ali |Но |Però |但是 |Men |Ale |😔 |But |Sed |Kuid |Mutta |Mais que |Mais qu' |Mais |მაგ­რამ |Aber |Αλλά |પણ |אבל |पर |परन्तु |किन्तु |De |En |Tapi |Ach |Ma |しかし |但し |ただし |Nanging |Ananging |ಆದರೆ |'ach |'a |하지만 |단 |BUT |Bet |awer |mä |No |Tetapi |Гэхдээ |Харин |Ac |ਪਰ |اما |Avast! |Mas |Dar |А |Иначе |Buh |Али |Toda |Ampak |Vendar |ஆனால் |Ләкин |Әмма |కాని |แต่ |Fakat |Ama |Але |لیکن |Лекин |Бирок |Аммо |Nhưng |Ond |Dan |اذاً |ثم |Alavez |Allora |Antonces |Ապա |Entós |But at the end of the day I reckon |O halda |Zatim |То |Aleshores |Cal |那么 |那麼 |Lè sa a |Le sa a |Onda |Pak |Så |🙏 |Then |Do |Siis |Niin |Alors |Entón |Logo |მაშინ |Dann |Τότε |પછી |אז |אזי |तब |तदा |Akkor |Þá |Maka |Ansin |ならば |Njuk |Banjur |ನಂತರ |vaj |그러면 |DEN |Tad |Tada |dann |Тогаш |Togash |Kemudian |Тэгэхэд |Үүний дараа |Tha |Þa |Ða |Tha the |Þa þe |Ða ðe |ਤਦ |آنگاه |Let go and haul |Wtedy |Então |Entao |Atunci |Затем |Тогда |Dun |Den youse gotta |Онда |Tak |Potom |Nato |Potem |Takrat |Entonces |அப்பொழுது |Нәтиҗәдә |అప్పుడు |ดังนั้น |O zaman |Тоді |پھر |تب |Унда |Thì |Yna |Wanneer |متى |عندما |Cuan |Եթե |Երբ |Cuando |It's just unbelievable |Əgər |Nə vaxt ki |Kada |Когато |Quan |当 |當 |Lè |Le |Kad |Když |Når |Als |🎬 |When |Se |Kui |Kun |Quand |Lorsque |Lorsqu' |Cando |როდესაც |Wenn |Όταν |ક્યારે |כאשר |जब |कदा |Majd |Ha |Amikor |Þegar |Ketika |Nuair a |Nuair nach |Nuair ba |Nuair nár |Quando |もし |Manawa |Menawa |ಸ್ಥಿತಿಯನ್ನು |qaSDI' |만일 |만약 |WEN |Ja |Kai |wann |Кога |Koga |Apabila |Хэрэв |Tha |Þa |Ða |ਜਦੋਂ |هنگامی |Blimey! |Jeżeli |Jeśli |Gdy |Kiedy |Cand |Când |Когда |Если |Wun |Youse know like when |Када |Кад |Keď |Ak |Ko |Ce |Če |Kadar |När |எப்போது |Әгәр |ఈ పరిస్థితిలో |เมื่อ |Eğer ki |Якщо |Коли |جب |Агар |Khi |Pryd |Gegewe |بفرض |Dau |Dada |Daus |Dadas |Դիցուք |Dáu |Daos |Daes |Y'know |Tutaq ki |Verilir |Dato |Дадено |Donat |Donada |Atès |Atesa |假如 |假设 |假定 |假設 |Sipoze |Sipoze ke |Sipoze Ke |Zadan |Zadani |Zadano |Pokud |Za předpokladu |Givet |Gegeven |Stel |😐 |Given |Donitaĵo |Komence |Eeldades |Oletetaan |Soit |Etant donné que |Etant donné qu' |Etant donné |Etant donnée |Etant donnés |Etant données |Étant donné que |Étant donné qu' |Étant donné |Étant donnée |Étant donnés |Étant données |Dado |Dados |მოცემული |Angenommen |Gegeben sei |Gegeben seien |Δεδομένου |આપેલ છે |בהינתן |अगर |यदि |चूंकि |Amennyiben |Adott |Ef |Dengan |Cuir i gcás go |Cuir i gcás nach |Cuir i gcás gur |Cuir i gcás nár |Data |Dati |Date |前提 |Nalika |Nalikaning |ನೀಡಿದ |ghu' noblu' |DaH ghu' bejlu' |조건 |먼저 |I CAN HAZ |Kad |Duota |ugeholl |Дадена |Dadeno |Dadena |Diberi |Bagi |Өгөгдсөн нь |Анх |Gitt |Thurh |Þurh |Ðurh |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |با فرض |Gangway! |Zakładając |Mając |Zakładając, że |Date fiind |Dat fiind |Dată fiind |Dati fiind |Dați fiind |Daţi fiind |Допустим |Дано |Пусть |Givun |Youse know when youse got |За дато |За дате |За дати |Za dato |Za date |Za dati |Pokiaľ |Za predpokladu |Dano |Podano |Zaradi |Privzeto |கொடுக்கப்பட்ட |Әйтик |చెప్పబడినది |กำหนดให้ |Diyelim ki |Припустимо |Припустимо, що |Нехай |اگر |بالفرض |فرض کیا |Агар |Biết |Cho |Anrhegedig a |\\\\* )\"\n    },\n    \"feature_element_keyword\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.language.gherkin.feature.scenario\"\n        },\n        \"2\": {\n          \"name\": \"string.language.gherkin.scenario.title.title\"\n        }\n      },\n      \"match\": \"^\\\\s*(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra):(.*)\"\n    },\n    \"scenario_outline_variable\": {\n      \"match\": \"<[a-zA-Z0-9 _-]*>\",\n      \"name\": \"variable.other\"\n    },\n    \"strings_double_quote\": {\n      \"begin\": \"(?<![a-zA-Z0-9'])\\\"\",\n      \"end\": \"\\\"(?![a-zA-Z0-9'])\",\n      \"name\": \"string.quoted.double\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.untitled\"\n        }\n      ]\n    },\n    \"strings_single_quote\": {\n      \"begin\": \"(?<![a-zA-Z0-9\\\"])'\",\n      \"end\": \"'(?![a-zA-Z0-9\\\"])\",\n      \"name\": \"string.quoted.single\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape\"\n        }\n      ]\n    },\n    \"strings_triple_quote\": {\n      \"begin\": \"\\\"\\\"\\\".*\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"name\": \"string.quoted.single\"\n    },\n    \"tags\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"entity.name.type.class.tsx\"\n        }\n      },\n      \"match\": \"(@[^@\\\\r\\\\n\\\\t ]+)\"\n    }\n  },\n  \"scopeName\": \"text.gherkin.feature\",\n  \"uuid\": \"85E2C52C-9B16-4A54-81E7-6D8D3ADAEFA8\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/git-commit.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/git.tmbundle/blob/master/Syntaxes/Git%20Commit%20Message.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/git.tmbundle/commit/93897a78c6e52bef13dadc0d4091d203c5facb40\",\n  \"name\": \"git-commit\",\n  \"scopeName\": \"text.git-commit\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\A(?!# Please enter the commit message)\",\n      \"end\": \"^(?=# Please enter the commit message)\",\n      \"name\": \"meta.scope.message.git-commit\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\A(?=#)\",\n          \"end\": \"^(?!#)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^(?!# Please enter the commit message)\",\n          \"end\": \"^(?=# Please enter the commit message)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"^(?!\\\\G)\",\n              \"name\": \"meta.scope.subject.git-commit\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.other.$2.git-commit\"\n                    }\n                  },\n                  \"match\": \"\\\\G((fixup|squash)!)\\\\s*\"\n                },\n                {\n                  \"match\": \".{73,}$\",\n                  \"name\": \"invalid.illegal.line-too-long.git-commit\"\n                },\n                {\n                  \"match\": \".{51,}$\",\n                  \"name\": \"invalid.deprecated.line-too-long.git-commit\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^(?!# Please enter the commit message)\",\n              \"end\": \"^(?=# Please enter the commit message)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(?=# Please enter the commit message)\",\n      \"end\": \"\\\\z\",\n      \"name\": \"meta.scope.metadata.git-commit\",\n      \"patterns\": [\n        {\n          \"include\": \"#metadata\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"^(#)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.git-commit\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.number-sign.git-commit\"\n    },\n    \"metadata\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=^# Changes to be committed:)\",\n          \"end\": \"(?!\\\\G)((?=^# \\\\w)|(?!^#))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.git-commit\"\n                }\n              },\n              \"contentName\": \"comment.line.number-sign.git-commit\",\n              \"end\": \"(?!\\\\G)^\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G#\",\n                  \"name\": \"punctuation.definition.comment.git-commit\"\n                },\n                {\n                  \"match\": \"((modified|renamed):.*)$\\\\n?\",\n                  \"name\": \"markup.changed.git-commit\"\n                },\n                {\n                  \"match\": \"(new file:.*)$\\\\n?\",\n                  \"name\": \"markup.inserted.git-commit\"\n                },\n                {\n                  \"match\": \"(deleted:.*)$\\\\n?\",\n                  \"name\": \"markup.deleted.git-commit\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?=diff\\\\ \\\\-\\\\-git)\",\n          \"comment\": \"diff presented at the end of the commit message when using commit -v.\",\n          \"contentName\": \"source.diff\",\n          \"end\": \"\\\\z\",\n          \"name\": \"meta.embedded.diff.git-commit\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/git-rebase.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/git.tmbundle/blob/master/Syntaxes/Git%20Rebase%20Message.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/git.tmbundle/commit/5870cf3f8abad3a6637bdf69250b5d2ded427dc4\",\n  \"name\": \"git-rebase\",\n  \"scopeName\": \"text.git-rebase\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(#).*$\\\\n?\",\n      \"name\": \"comment.line.number-sign.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        },\n        \"2\": {\n          \"name\": \"constant.sha.git-rebase\"\n        },\n        \"3\": {\n          \"name\": \"meta.commit-message.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(pick|p|reword|r|edit|e|squash|s|fixup|f|drop|d)\\\\s+([0-9a-f]+)\\\\s+(.*)$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        }\n      },\n      \"match\": \"^\\\\s*(exec|x)\\\\s+(.*)$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.git-rebase\"\n        }\n      },\n      \"match\": \"^\\\\s*(break|b)\\\\s*$\",\n      \"name\": \"meta.commit-command.git-rebase\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/glsl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"vs\",\n    \"fs\",\n    \"gs\",\n    \"vsh\",\n    \"fsh\",\n    \"gsh\",\n    \"vshader\",\n    \"fshader\",\n    \"gshader\",\n    \"vert\",\n    \"frag\",\n    \"geom\",\n    \"f.glsl\",\n    \"v.glsl\",\n    \"g.glsl\"\n  ],\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~G\",\n  \"name\": \"glsl\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(break|case|continue|default|discard|do|else|for|if|return|switch|while)\\\\b\",\n      \"name\": \"keyword.control.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(void|bool|int|uint|float|vec2|vec3|vec4|bvec2|bvec3|bvec4|ivec2|ivec2|ivec3|uvec2|uvec2|uvec3|mat2|mat3|mat4|mat2x2|mat2x3|mat2x4|mat3x2|mat3x3|mat3x4|mat4x2|mat4x3|mat4x4|sampler[1|2|3]D|samplerCube|sampler2DRect|sampler[1|2]DShadow|sampler2DRectShadow|sampler[1|2]DArray|sampler[1|2]DArrayShadow|samplerBuffer|sampler2DMS|sampler2DMSArray|struct|isampler[1|2|3]D|isamplerCube|isampler2DRect|isampler[1|2]DArray|isamplerBuffer|isampler2DMS|isampler2DMSArray|usampler[1|2|3]D|usamplerCube|usampler2DRect|usampler[1|2]DArray|usamplerBuffer|usampler2DMS|usampler2DMSArray)\\\\b\",\n      \"name\": \"storage.type.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(attribute|centroid|const|flat|in|inout|invariant|noperspective|out|smooth|uniform|varying)\\\\b\",\n      \"name\": \"storage.modifier.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(gl_BackColor|gl_BackLightModelProduct|gl_BackLightProduct|gl_BackMaterial|gl_BackSecondaryColor|gl_ClipDistance|gl_ClipPlane|gl_ClipVertex|gl_Color|gl_DepthRange|gl_DepthRangeParameters|gl_EyePlaneQ|gl_EyePlaneR|gl_EyePlaneS|gl_EyePlaneT|gl_Fog|gl_FogCoord|gl_FogFragCoord|gl_FogParameters|gl_FragColor|gl_FragCoord|gl_FragDat|gl_FragDept|gl_FrontColor|gl_FrontFacing|gl_FrontLightModelProduct|gl_FrontLightProduct|gl_FrontMaterial|gl_FrontSecondaryColor|gl_InstanceID|gl_Layer|gl_LightModel|gl_LightModelParameters|gl_LightModelProducts|gl_LightProducts|gl_LightSource|gl_LightSourceParameters|gl_MaterialParameters|gl_ModelViewMatrix|gl_ModelViewMatrixInverse|gl_ModelViewMatrixInverseTranspose|gl_ModelViewMatrixTranspose|gl_ModelViewProjectionMatrix|gl_ModelViewProjectionMatrixInverse|gl_ModelViewProjectionMatrixInverseTranspose|gl_ModelViewProjectionMatrixTranspose|gl_MultiTexCoord[0-7]|gl_Normal|gl_NormalMatrix|gl_NormalScale|gl_ObjectPlaneQ|gl_ObjectPlaneR|gl_ObjectPlaneS|gl_ObjectPlaneT|gl_Point|gl_PointCoord|gl_PointParameters|gl_PointSize|gl_Position|gl_PrimitiveIDIn|gl_ProjectionMatrix|gl_ProjectionMatrixInverse|gl_ProjectionMatrixInverseTranspose|gl_ProjectionMatrixTranspose|gl_SecondaryColor|gl_TexCoord|gl_TextureEnvColor|gl_TextureMatrix|gl_TextureMatrixInverse|gl_TextureMatrixInverseTranspose|gl_TextureMatrixTranspose|gl_Vertex|gl_VertexIDh)\\\\b\",\n      \"name\": \"support.variable.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(gl_MaxClipPlanes|gl_MaxCombinedTextureImageUnits|gl_MaxDrawBuffers|gl_MaxFragmentUniformComponents|gl_MaxLights|gl_MaxTextureCoords|gl_MaxTextureImageUnits|gl_MaxTextureUnits|gl_MaxVaryingFloats|gl_MaxVertexAttribs|gl_MaxVertexTextureImageUnits|gl_MaxVertexUniformComponents)\\\\b\",\n      \"name\": \"support.constant.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(abs|acos|all|any|asin|atan|ceil|clamp|cos|cross|degrees|dFdx|dFdy|distance|dot|equal|exp|exp2|faceforward|floor|fract|ftransform|fwidth|greaterThan|greaterThanEqual|inversesqrt|length|lessThan|lessThanEqual|log|log2|matrixCompMult|max|min|mix|mod|noise[1-4]|normalize|not|notEqual|outerProduct|pow|radians|reflect|refract|shadow1D|shadow1DLod|shadow1DProj|shadow1DProjLod|shadow2D|shadow2DLod|shadow2DProj|shadow2DProjLod|sign|sin|smoothstep|sqrt|step|tan|texture1D|texture1DLod|texture1DProj|texture1DProjLod|texture2D|texture2DLod|texture2DProj|texture2DProjLod|texture3D|texture3DLod|texture3DProj|texture3DProjLod|textureCube|textureCubeLod|transpose)\\\\b\",\n      \"name\": \"support.function.glsl\"\n    },\n    {\n      \"match\": \"\\\\b(asm|double|enum|extern|goto|inline|long|short|sizeof|static|typedef|union|unsigned|volatile)\\\\b\",\n      \"name\": \"invalid.illegal.glsl\"\n    },\n    {\n      \"include\": \"source.c\"\n    }\n  ],\n  \"scopeName\": \"source.glsl\",\n  \"uuid\": \"D0FD1B52-F137-4FBA-A148-B8A893CD948C\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/gnuplot.tmLanguage.json",
    "content": "{\n  \"name\": \"gnuplot\",\n  \"scopeName\": \"source.gnuplot\",\n  \"uuid\": \"A75AB1C2-611C-4500-9EE4-20668B5BB465\",\n  \"fileTypes\": [\"gp\", \"plt\", \"plot\", \"gnuplot\"],\n  \"patterns\": [\n    {\n      \"name\": \"invalid.illegal.backslash.gnuplot\",\n      \"match\": \"(\\\\\\\\(?!\\\\n).*)\"\n    },\n    {\n      \"name\": \"punctuation.separator.statement.gnuplot\",\n      \"match\": \"(;)\"\n    },\n    {\n      \"include\": \"#LineComment\"\n    },\n    {\n      \"include\": \"#DataBlock\"\n    },\n    {\n      \"include\": \"#MacroExpansion\"\n    },\n    {\n      \"include\": \"#VariableDecl\"\n    },\n    {\n      \"include\": \"#ArrayDecl\"\n    },\n    {\n      \"include\": \"#FunctionDecl\"\n    },\n    {\n      \"include\": \"#ShellCommand\"\n    },\n    {\n      \"include\": \"#Command\"\n    }\n  ],\n  \"repository\": {\n    \"DataBlock\": {\n      \"name\": \"meta.datablock.gnuplot\",\n      \"begin\": \"(?x:\\n\\t\\t\\t\\t([$][A-Za-z_]\\\\w*)\\\\s*             # 1: var name\\n\\t\\t\\t\\t(<<)\\\\s*                    # 2: shift operator\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 3: end tag\\n\\t\\t\\t\\t(?=(\\\\#|$))                       # 4: comment or end of line\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#SpecialVariable\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"constant.language.datablock.gnuplot\"\n        }\n      },\n      \"end\": \"^(\\\\3)\\\\b(.*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.datablock.gnuplot\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.datablock.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#LineComment\"\n        },\n        {\n          \"include\": \"#NumberLiteral\"\n        },\n        {\n          \"include\": \"#DoubleQuotedStringLiteral\"\n        }\n      ]\n    },\n    \"MacroExpansion\": {\n      \"begin\": \"([@][A-Za-z_]\\\\w*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#SpecialVariable\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"VariableDecl\": {\n      \"name\": \"meta.variable.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 1: var name\\n\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t(\\\\[)\\\\s*                      # 2: opening bracket\\n\\t\\t\\t\\t\\t(.*)\\\\s*                      # 3: expression\\n\\t\\t\\t\\t\\t(\\\\])\\\\s*                      # 4: closing bracket\\n\\t\\t\\t\\t)?\\n\\t\\t\\t\\t(?=(=)(?!\\\\s*=))                  # 5: assignment\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidVariableDecl\"\n            },\n            {\n              \"include\": \"#BuiltinVariable\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"ArrayDecl\": {\n      \"name\": \"meta.variable.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t(array)\\\\s+                       # 1: array keyword\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)?                  # 2: var name\\n\\t\\t\\t\\t# Note: Handle size decl and init expression inside.\\n\\t\\t\\t\\t# TODO: Properly annotate brackets.\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.array.gnuplot\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidVariableDecl\"\n            },\n            {\n              \"include\": \"#BuiltinVariable\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"FunctionDecl\": {\n      \"name\": \"meta.function.gnuplot\",\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*                # 1: func name\\n\\t\\t\\t\\t(                                # 2: parameter list\\n\\t\\t\\t\\t\\t(\\\\()\\\\s*                      # 3: opening parens\\n\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*            # 4: arg name\\n\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t(,)\\\\s*                   # 5: comma\\n\\t\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s*        # 6: other args\\n\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t(\\\\))                         # 7: closing parens\\n\\t\\t\\t\\t)\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinFunction\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"meta.function.parameters.gnuplot\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.gnuplot\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.language.gnuplot\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.parameters.gnuplot\"\n        },\n        \"6\": {\n          \"name\": \"variable.parameter.function.language.gnuplot\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.parameters.end.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"InvalidVariableDecl\": {\n      \"name\": \"invalid.illegal.variable.gnuplot\",\n      \"match\": \"\\\\b(GPVAL_\\\\w*|MOUSE_\\\\w*)\\\\b\"\n    },\n    \"ShellCommand\": {\n      \"begin\": \"(!)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.shell.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n      \"patterns\": [\n        {\n          \"name\": \"string.unquoted\",\n          \"match\": \"([^#]|\\\\\\\\(?=\\\\n))\"\n        }\n      ]\n    },\n    \"Command\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.command.gnuplot\",\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tupdate\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\"\n        },\n        {\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tbreak        |\\n\\t\\t\\t\\t\\t\\tclear        |\\n\\t\\t\\t\\t\\t\\tcontinue     |\\n\\t\\t\\t\\t\\t\\tpwd          |\\n\\t\\t\\t\\t\\t\\trefresh      |\\n\\t\\t\\t\\t\\t\\treplot       |\\n\\t\\t\\t\\t\\t\\treread       |\\n\\t\\t\\t\\t\\t\\tshell\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tcd           |\\n\\t\\t\\t\\t\\t\\tcall         |\\n\\t\\t\\t\\t\\t\\teval         |\\n\\t\\t\\t\\t\\t\\texit         |\\n\\t\\t\\t\\t\\t\\thelp         |\\n\\t\\t\\t\\t\\t\\thistory      |\\n\\t\\t\\t\\t\\t\\tload         |\\n\\t\\t\\t\\t\\t\\tlower        |\\n\\t\\t\\t\\t\\t\\tpause        |\\n\\t\\t\\t\\t\\t\\tprint        |\\n\\t\\t\\t\\t\\t\\tprinterr     |\\n\\t\\t\\t\\t\\t\\tquit         |\\n\\t\\t\\t\\t\\t\\traise        |\\n\\t\\t\\t\\t\\t\\tsave         |\\n\\t\\t\\t\\t\\t\\tstats        |\\n\\t\\t\\t\\t\\t\\tsystem       |\\n\\t\\t\\t\\t\\t\\ttest         |\\n\\t\\t\\t\\t\\t\\ttoggle\\n\\t\\t\\t\\t\\t)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(import)\\\\s(.+)\\\\s(from)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.gnuplot\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#FunctionDecl\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#SingleQuotedStringLiteral\"\n            },\n            {\n              \"include\": \"#DoubleQuotedStringLiteral\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(reset)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"name\": \"support.class.reset.gnuplot\",\n              \"match\": \"\\\\b(bind|error(state)?|session)\\\\b\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(undefine)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinVariable\"\n            },\n            {\n              \"include\": \"#BuiltinFunction\"\n            },\n            {\n              \"name\": \"source.gnuplot\",\n              \"match\": \"(?<=\\\\s)([$]?[A-Za-z_]\\\\w*\\\\*?)(?=\\\\s)\"\n            },\n            {\n              \"include\": \"#InvalidWord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(if|while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(else)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\"\n        },\n        {\n          \"begin\": \"\\\\b(do)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(\\\\{|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ForIterationExpr\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(set)(?=\\\\s+pm3d)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.deprecated.options.gnuplot\",\n              \"match\": \"\\\\b(hidden3d|map|transparent|solid)\\\\b\"\n            },\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b((un)?set)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(show)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ExtraShowOptions\"\n            },\n            {\n              \"include\": \"#SetUnsetOptions\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(fit|(s)?plot)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.command.gnuplot\"\n            }\n          },\n          \"end\": \"(?=(;|#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#ColumnIndexLiteral\"\n            },\n            {\n              \"include\": \"#PlotModifiers\"\n            },\n            {\n              \"include\": \"#ForIterationExpr\"\n            },\n            {\n              \"include\": \"#Expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"SetUnsetOptions\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.options.gnuplot\",\n          \"match\": \"\\\\G\\\\s*\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tclabel              |\\n\\t\\t\\t\\t\\t\\tdata                |\\n\\t\\t\\t\\t\\t\\tfunction            |\\n\\t\\t\\t\\t\\t\\thistorysize         |\\n\\t\\t\\t\\t\\t\\tmacros              |\\n\\t\\t\\t\\t\\t\\tticslevel           |\\n\\t\\t\\t\\t\\t\\tticscale            |\\n\\t\\t\\t\\t\\t\\t(style\\\\s+increment\\\\s+\\\\w+)\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.class.options.gnuplot\",\n          \"match\": \"\\\\G\\\\s*\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tangles              |\\n\\t\\t\\t\\t\\t\\tarrow               |\\n\\t\\t\\t\\t\\t\\tautoscale           |\\n\\t\\t\\t\\t\\t\\tborder              |\\n\\t\\t\\t\\t\\t\\tboxwidth            |\\n\\t\\t\\t\\t\\t\\tclip                |\\n\\t\\t\\t\\t\\t\\tcntr(label|param)   |\\n\\t\\t\\t\\t\\t\\tcolor(box|sequence)?|\\n\\t\\t\\t\\t\\t\\tcontour             |\\n\\t\\t\\t\\t\\t\\t(dash|line)type     |\\n\\t\\t\\t\\t\\t\\tdatafile            |\\n\\t\\t\\t\\t\\t\\tdecimal(sign)?      |\\n\\t\\t\\t\\t\\t\\tdgrid3d             |\\n\\t\\t\\t\\t\\t\\tdummy               |\\n\\t\\t\\t\\t\\t\\tencoding            |\\n\\t\\t\\t\\t\\t\\t(error)?bars        |\\n\\t\\t\\t\\t\\t\\tfit                 |\\n\\t\\t\\t\\t\\t\\tfontpath            |\\n\\t\\t\\t\\t\\t\\tformat              |\\n\\t\\t\\t\\t\\t\\tgrid                |\\n\\t\\t\\t\\t\\t\\thidden3d            |\\n\\t\\t\\t\\t\\t\\thistory             |\\n\\t\\t\\t\\t\\t\\t(iso)?samples       |\\n\\t\\t\\t\\t\\t\\tjitter              |\\n\\t\\t\\t\\t\\t\\tkey                 |\\n\\t\\t\\t\\t\\t\\tlabel               |\\n\\t\\t\\t\\t\\t\\tlink                |\\n\\t\\t\\t\\t\\t\\tloadpath            |\\n\\t\\t\\t\\t\\t\\tlocale              |\\n\\t\\t\\t\\t\\t\\tlogscale            |\\n\\t\\t\\t\\t\\t\\tmapping             |\\n\\t\\t\\t\\t\\t\\t[lrtb]margin        |\\n\\t\\t\\t\\t\\t\\tmargins             |\\n\\t\\t\\t\\t\\t\\tmicro               |\\n\\t\\t\\t\\t\\t\\tminus(sign)?        |\\n\\t\\t\\t\\t\\t\\tmono(chrome)?       |\\n\\t\\t\\t\\t\\t\\tmouse               |\\n\\t\\t\\t\\t\\t\\tmultiplot           |\\n\\t\\t\\t\\t\\t\\tnonlinear           |\\n\\t\\t\\t\\t\\t\\tobject              |\\n\\t\\t\\t\\t\\t\\toffsets             |\\n\\t\\t\\t\\t\\t\\torigin              |\\n\\t\\t\\t\\t\\t\\toutput              |\\n\\t\\t\\t\\t\\t\\tparametric          |\\n\\t\\t\\t\\t\\t\\t(p|r)axis           |\\n\\t\\t\\t\\t\\t\\tpm3d                |\\n\\t\\t\\t\\t\\t\\tpalette             |\\n\\t\\t\\t\\t\\t\\tpointintervalbox    |\\n\\t\\t\\t\\t\\t\\tpointsize           |\\n\\t\\t\\t\\t\\t\\tpolar               |\\n\\t\\t\\t\\t\\t\\tprint               |\\n\\t\\t\\t\\t\\t\\tpsdir               |\\n\\t\\t\\t\\t\\t\\tsize                |\\n\\t\\t\\t\\t\\t\\tstyle               |\\n\\t\\t\\t\\t\\t\\tsurface             |\\n\\t\\t\\t\\t\\t\\ttable               |\\n\\t\\t\\t\\t\\t\\tterminal            |\\n\\t\\t\\t\\t\\t\\ttermoption          |\\n\\t\\t\\t\\t\\t\\ttheta               |\\n\\t\\t\\t\\t\\t\\ttics                |\\n\\t\\t\\t\\t\\t\\ttimestamp           |\\n\\t\\t\\t\\t\\t\\ttimefmt             |\\n\\t\\t\\t\\t\\t\\ttitle               |\\n\\t\\t\\t\\t\\t\\tview                |\\n\\t\\t\\t\\t\\t\\txyplane             |\\n\\t\\t\\t\\t\\t\\tzero                |\\n\\t\\t\\t\\t\\t\\t(no)?(m)?(x|x2|y|y2|z|cb|r|t)tics  |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)data               |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb|r)label            |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)dtics              |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb)mtics              |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z|cb|[rtuv])range       |\\n\\t\\t\\t\\t\\t\\t(x|x2|y|y2|z)?zeroaxis\\n\\t\\t\\t\\t\\t)\\\\b\"\n        }\n      ]\n    },\n    \"ExtraShowOptions\": {\n      \"name\": \"support.class.options.gnuplot\",\n      \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\tall                         |\\n\\t\\t\\t\\tbind                        |\\n\\t\\t\\t\\tcolornames                  |\\n\\t\\t\\t\\tfunctions                   |\\n\\t\\t\\t\\tplot                        |\\n\\t\\t\\t\\tvariables                   |\\n\\t\\t\\t\\tversion\\n\\t\\t\\t)\\\\b\"\n    },\n    \"PlotModifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.plot.gnuplot\",\n          \"match\": \"\\\\b(thru)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.plot.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tin(dex)?            |\\n\\t\\t\\t\\t\\t\\tevery               |\\n\\t\\t\\t\\t\\t\\tus(ing)?            |\\n\\t\\t\\t\\t\\t\\twi(th)?             |\\n\\t\\t\\t\\t\\t\\tvia\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"storage.type.plot.gnuplot\",\n          \"match\": \"\\\\b(newhist(ogram)?)\\\\b\"\n        }\n      ]\n    },\n    \"InvalidWord\": {\n      \"name\": \"invalid.illegal.gnuplot\",\n      \"match\": \"([^;#\\\\\\\\[:space:]]+)\"\n    },\n    \"Expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#Literal\"\n        },\n        {\n          \"include\": \"#SpecialVariable\"\n        },\n        {\n          \"include\": \"#BuiltinVariable\"\n        },\n        {\n          \"include\": \"#BuiltinOperator\"\n        },\n        {\n          \"include\": \"#TernaryExpr\"\n        },\n        {\n          \"include\": \"#FunctionCallExpr\"\n        },\n        {\n          \"include\": \"#SummationExpr\"\n        }\n      ]\n    },\n    \"ForIterationExpr\": {\n      \"begin\": \"\\\\b(?x:\\n\\t\\t\\t\\t(for)\\\\s*                    # 1: for keyword\\n\\t\\t\\t\\t(\\\\[)\\\\s*                     # 2: opening bracket\\n\\t\\t\\t\\t(?:                         #    optionally\\n\\t\\t\\t\\t\\t([A-Za-z_]\\\\w*)\\\\s+       # 3: var name\\n\\t\\t\\t\\t\\t(in)\\\\b                  # 4: in keyword\\n\\t\\t\\t\\t)?\\n\\t\\t\\t)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.gnuplot\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.other.iterator.gnuplot\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.flow.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\\])|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        },\n        {\n          \"include\": \"#RangeSeparators\"\n        }\n      ]\n    },\n    \"SummationExpr\": {\n      \"begin\": \"\\\\b(sum)\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sum.gnuplot\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"end\": \"((\\\\])|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#RangeSeparators\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        },\n        {\n          \"include\": \"#RangeSeparators\"\n        }\n      ]\n    },\n    \"FunctionCallExpr\": {\n      \"name\": \"meta.function-call.gnuplot\",\n      \"begin\": \"\\\\b([A-Za-z_]\\\\w*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.function.gnuplot\",\n          \"patterns\": [\n            {\n              \"include\": \"#BuiltinFunction\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.arguments.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\\))|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.arguments.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"TernaryExpr\": {\n      \"begin\": \"(?<!\\\\?)(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.gnuplot\"\n        }\n      },\n      \"end\": \"((?<!:)(:)(?!:)|(?=(#|\\\\\\\\(?!\\\\n)|(?<!\\\\\\\\)\\\\n$)))\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.operator.ternary.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#Expression\"\n        }\n      ]\n    },\n    \"RangeSeparators\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.section.brackets.begin.gnuplot\",\n          \"match\": \"(\\\\[)\"\n        },\n        {\n          \"name\": \"punctuation.separator.range.gnuplot\",\n          \"match\": \"(:)\"\n        },\n        {\n          \"name\": \"punctuation.section.brackets.end.gnuplot\",\n          \"match\": \"(\\\\])\"\n        }\n      ]\n    },\n    \"BuiltinOperator\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.logical.gnuplot\",\n          \"match\": \"(&&|\\\\|\\\\|)\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.gnuplot\",\n          \"match\": \"(<<|>>|&|\\\\||\\\\^)\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.gnuplot\",\n          \"match\": \"(==|!=|<=|<|>=|>)\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.gnuplot\",\n          \"match\": \"(=)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.gnuplot\",\n          \"match\": \"(\\\\+|-|~|!)\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.gnuplot\",\n          \"match\": \"(\\\\*\\\\*|\\\\+|-|\\\\*|/|%)\"\n        },\n        {\n          \"name\": \"keyword.operator.strings.gnuplot\",\n          \"match\": \"(\\\\.|\\\\b(eq|ne)\\\\b)\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.word.gnuplot\"\n            }\n          }\n        }\n      ]\n    },\n    \"BuiltinVariable\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.variable.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tFIT_LIMIT           |\\n\\t\\t\\t\\t\\t\\tFIT_MAXITER         |\\n\\t\\t\\t\\t\\t\\tFIT_START_LAMBDA    |\\n\\t\\t\\t\\t\\t\\tFIT_LAMBDA_FACTOR   |\\n\\t\\t\\t\\t\\t\\tFIT_SKIP            |\\n\\t\\t\\t\\t\\t\\tFIT_INDEX\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.constant.gnuplot\",\n          \"match\": \"\\\\b(GPVAL_\\\\w*|MOUSE_\\\\w*)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.gnuplot\",\n          \"match\": \"\\\\b(ARG[0-9C]|GPFUN_\\\\w*|FIT_\\\\w*|STATS_\\\\w*|pi|NaN)\\\\b\"\n        }\n      ]\n    },\n    \"SpecialVariable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=[\\\\[:=])\\\\s*(\\\\*)\\\\s*(?=[:\\\\]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.wildcard.gnuplot\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.language.special.gnuplot\",\n          \"match\": \"(([@$])[A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.gnuplot\"\n            }\n          }\n        }\n      ]\n    },\n    \"BuiltinFunction\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.function.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tdefined\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.math.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tabs            |\\n\\t\\t\\t\\t\\t\\tacos           |\\n\\t\\t\\t\\t\\t\\tacosh          |\\n\\t\\t\\t\\t\\t\\tairy           |\\n\\t\\t\\t\\t\\t\\targ            |\\n\\t\\t\\t\\t\\t\\tasin           |\\n\\t\\t\\t\\t\\t\\tasinh          |\\n\\t\\t\\t\\t\\t\\tatan           |\\n\\t\\t\\t\\t\\t\\tatan2          |\\n\\t\\t\\t\\t\\t\\tatanh          |\\n\\t\\t\\t\\t\\t\\tEllipticK      |\\n\\t\\t\\t\\t\\t\\tEllipticE      |\\n\\t\\t\\t\\t\\t\\tEllipticPi     |\\n\\t\\t\\t\\t\\t\\tbesj0          |\\n\\t\\t\\t\\t\\t\\tbesj1          |\\n\\t\\t\\t\\t\\t\\tbesy0          |\\n\\t\\t\\t\\t\\t\\tbesy1          |\\n\\t\\t\\t\\t\\t\\tceil           |\\n\\t\\t\\t\\t\\t\\tcos            |\\n\\t\\t\\t\\t\\t\\tcosh           |\\n\\t\\t\\t\\t\\t\\terf            |\\n\\t\\t\\t\\t\\t\\terfc           |\\n\\t\\t\\t\\t\\t\\texp            |\\n\\t\\t\\t\\t\\t\\texpint         |\\n\\t\\t\\t\\t\\t\\tfloor          |\\n\\t\\t\\t\\t\\t\\tgamma          |\\n\\t\\t\\t\\t\\t\\tibeta          |\\n\\t\\t\\t\\t\\t\\tinverf         |\\n\\t\\t\\t\\t\\t\\tigamma         |\\n\\t\\t\\t\\t\\t\\timag           |\\n\\t\\t\\t\\t\\t\\tinvnorm        |\\n\\t\\t\\t\\t\\t\\tint            |\\n\\t\\t\\t\\t\\t\\tlambertw       |\\n\\t\\t\\t\\t\\t\\tlgamma         |\\n\\t\\t\\t\\t\\t\\tlog            |\\n\\t\\t\\t\\t\\t\\tlog10          |\\n\\t\\t\\t\\t\\t\\tnorm           |\\n\\t\\t\\t\\t\\t\\trand           |\\n\\t\\t\\t\\t\\t\\treal           |\\n\\t\\t\\t\\t\\t\\tsgn            |\\n\\t\\t\\t\\t\\t\\tsin            |\\n\\t\\t\\t\\t\\t\\tsinh           |\\n\\t\\t\\t\\t\\t\\tsqrt           |\\n\\t\\t\\t\\t\\t\\ttan            |\\n\\t\\t\\t\\t\\t\\ttanh           |\\n\\t\\t\\t\\t\\t\\tvoigt          |\\n\\t\\t\\t\\t\\t\\tcerf           |\\n\\t\\t\\t\\t\\t\\tcdawson        |\\n\\t\\t\\t\\t\\t\\tfaddeeva       |\\n\\t\\t\\t\\t\\t\\terfi           |\\n\\t\\t\\t\\t\\t\\tVP\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.string.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tgprintf        |\\n\\t\\t\\t\\t\\t\\tsprintf        |\\n\\t\\t\\t\\t\\t\\tstrlen         |\\n\\t\\t\\t\\t\\t\\tstrstrt        |\\n\\t\\t\\t\\t\\t\\tsubstr         |\\n\\t\\t\\t\\t\\t\\tstrftime       |\\n\\t\\t\\t\\t\\t\\tstrptime       |\\n\\t\\t\\t\\t\\t\\tsystem         |\\n\\t\\t\\t\\t\\t\\tword           |\\n\\t\\t\\t\\t\\t\\twords\\n\\t\\t\\t\\t\\t)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.other.gnuplot\",\n          \"match\": \"\\\\b(?x:\\n\\t\\t\\t\\t\\t\\tcolumn         |\\n\\t\\t\\t\\t\\t\\tcolumnhead     |\\n\\t\\t\\t\\t\\t\\texists         |\\n\\t\\t\\t\\t\\t\\thsv2rgb        |\\n\\t\\t\\t\\t\\t\\tstringcolumn   |\\n\\t\\t\\t\\t\\t\\ttimecolumn     |\\n\\t\\t\\t\\t\\t\\ttm_hour        |\\n\\t\\t\\t\\t\\t\\ttm_mday        |\\n\\t\\t\\t\\t\\t\\ttm_min         |\\n\\t\\t\\t\\t\\t\\ttm_mon         |\\n\\t\\t\\t\\t\\t\\ttm_sec         |\\n\\t\\t\\t\\t\\t\\ttm_wday        |\\n\\t\\t\\t\\t\\t\\ttm_yday        |\\n\\t\\t\\t\\t\\t\\ttm_year        |\\n\\t\\t\\t\\t\\t\\ttime           |\\n\\t\\t\\t\\t\\t\\tvalid          |\\n\\t\\t\\t\\t\\t\\tvalue\\n\\t\\t\\t\\t\\t)\\\\b\"\n        }\n      ]\n    },\n    \"Literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#NumberLiteral\"\n        },\n        {\n          \"include\": \"#DeprecatedScriptArgsLiteral\"\n        },\n        {\n          \"include\": \"#SingleQuotedStringLiteral\"\n        },\n        {\n          \"include\": \"#DoubleQuotedStringLiteral\"\n        },\n        {\n          \"include\": \"#InterpolatedStringLiteral\"\n        }\n      ]\n    },\n    \"NumberLiteral\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.float.gnuplot\",\n          \"match\": \"(?x:\\n\\t\\t\\t\\t\\t\\t# .5e2 and 0.5e2\\n\\t\\t\\t\\t\\t\\t( ((\\\\b[0-9]+)|(?<!\\\\d)) )           # number or not a preceding digit\\n\\t\\t\\t\\t\\t\\t( [.][0-9]+ )                         # non-optional fractional\\n\\t\\t\\t\\t\\t\\t( [Ee][+-]?[0-9]+ )?                  # optional exponent\\n\\t\\t\\t\\t\\t)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.float.gnuplot\",\n          \"match\": \"(?x:\\n\\t\\t\\t\\t\\t\\t# 5e2 and 5.e2\\n\\t\\t\\t\\t\\t\\t( \\\\b[0-9]+ )                          # non-optional number\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(     ( [Ee][+-]?[0-9]+\\\\b )  ) |  # non-optional exponent\\n\\t\\t\\t\\t\\t\\t\\t( [.] ( [Ee][+-]?[0-9]+\\\\b )? )    # point and optional exponent\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t)(cm\\\\b|in\\\\b)?\"\n        },\n        {\n          \"name\": \"constant.numeric.hex.gnuplot\",\n          \"match\": \"\\\\b(0[Xx][0-9a-fA-F]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.dec.gnuplot\",\n          \"match\": \"\\\\b(0+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.oct.gnuplot\",\n          \"match\": \"\\\\b(0[0-7]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"invalid.illegal.oct.gnuplot\",\n          \"match\": \"\\\\b(0[0-9]+)(cm|in)?\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.dec.gnuplot\",\n          \"match\": \"\\\\b([0-9]+)(cm|in)?\\\\b\"\n        }\n      ]\n    },\n    \"ColumnIndexLiteral\": {\n      \"name\": \"support.constant.columnindex.gnuplot\",\n      \"match\": \"([$][0-9]+)\\\\b\"\n    },\n    \"DeprecatedScriptArgsLiteral\": {\n      \"name\": \"invalid.illegal.scriptargs.gnuplot\",\n      \"match\": \"([$][0-9#])\"\n    },\n    \"SingleQuotedStringLiteral\": {\n      \"name\": \"string.quoted.single.gnuplot\",\n      \"begin\": \"(')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((')(?!')|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#RGBColorSpec\"\n        },\n        {\n          \"name\": \"constant.character.escape.gnuplot\",\n          \"match\": \"('')\"\n        }\n      ]\n    },\n    \"DoubleQuotedStringLiteral\": {\n      \"name\": \"string.quoted.double.gnuplot\",\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((\\\")|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#EscapedChar\"\n        },\n        {\n          \"include\": \"#RGBColorSpec\"\n        },\n        {\n          \"include\": \"#DeprecatedScriptArgsLiteral\"\n        },\n        {\n          \"include\": \"#InterpolatedStringLiteral\"\n        }\n      ]\n    },\n    \"InterpolatedStringLiteral\": {\n      \"name\": \"string.interpolated.gnuplot\",\n      \"begin\": \"(`)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.gnuplot\"\n        }\n      },\n      \"end\": \"((`)|(?=(?<!\\\\\\\\)\\\\n$))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.gnuplot\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#EscapedChar\"\n        }\n      ]\n    },\n    \"RGBColorSpec\": {\n      \"name\": \"constant.other.placeholder.gnuplot\",\n      \"match\": \"\\\\G(0x|#)(([0-9a-fA-F]{6})|([0-9a-fA-F]{8}))\\\\b\"\n    },\n    \"EscapedChar\": {\n      \"name\": \"constant.character.escape.gnuplot\",\n      \"match\": \"(\\\\\\\\.)\"\n    },\n    \"LineComment\": {\n      \"name\": \"comment.line.number-sign.gnuplot\",\n      \"begin\": \"(#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.begin.gnuplot\"\n        }\n      },\n      \"end\": \"(?=(?<!\\\\\\\\)\\\\n$)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.gnuplot\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/go.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-go-syntax/blob/master/export/generated.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-go-syntax/commit/6175663a7a0e23d58ccf9aab95054cb6e5c92aff\",\n  \"name\": \"go\",\n  \"scopeName\": \"source.go\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"comment\": \"Interpreted string literals\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.go\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.go\"\n        }\n      },\n      \"name\": \"string.quoted.double.go\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Raw string literals\",\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.go\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.go\"\n        }\n      },\n      \"name\": \"string.quoted.raw.go\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Syntax error receiving channels\",\n      \"match\": \"<\\\\-([\\\\t ]+)chan\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.receive-channel.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error sending channels\",\n      \"match\": \"\\\\bchan([\\\\t ]+)<-\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.send-channel.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error using slices\",\n      \"match\": \"\\\\[\\\\](\\\\s+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.slice.go\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Syntax error numeric literals\",\n      \"match\": \"\\\\b0[0-7]*[89]\\\\d*\\\\b\",\n      \"name\": \"invalid.illegal.numeric.go\"\n    },\n    {\n      \"comment\": \"Built-in functions\",\n      \"match\": \"\\\\b(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)\\\\b(?=\\\\()\",\n      \"name\": \"support.function.builtin.go\"\n    },\n    {\n      \"comment\": \"Function declarations\",\n      \"match\": \"^(\\\\bfunc\\\\b)(?:\\\\s+(\\\\([^\\\\)]+\\\\)\\\\s+)?(\\\\w+)(?=\\\\())?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.function.go\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            },\n            {\n              \"include\": \"#operators\"\n            }\n          ]\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"entity.name.function.go\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"comment\": \"Functions\",\n      \"match\": \"(\\\\bfunc\\\\b)|(\\\\w+)(?=\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.function.go\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"support.function.go\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"include\": \"#numeric_literals\"\n    },\n    {\n      \"comment\": \"Language constants\",\n      \"match\": \"\\\\b(true|false|nil|iota)\\\\b\",\n      \"name\": \"constant.language.go\"\n    },\n    {\n      \"begin\": \"\\\\b(package)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.package.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\d\\\\w*\",\n          \"name\": \"invalid.illegal.identifier.go\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"entity.name.package.go\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(type)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.type.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\d\\\\w*\",\n          \"name\": \"invalid.illegal.identifier.go\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"entity.name.type.go\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.import.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"include\": \"#imports\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(var)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.var.go\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<!var)\\\\s*(\\\\w+(?:\\\\.\\\\w+)*(?>,\\\\s*\\\\w+(?:\\\\.\\\\w+)*)*)(?=\\\\s*=(?!=))\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+(?:\\\\.\\\\w+)*\",\n              \"name\": \"variable.other.assignment.go\",\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#delimiters\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"#delimiters\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b\\\\w+(?:,\\\\s*\\\\w+)*(?=\\\\s*:=)\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\d\\\\w*\",\n              \"name\": \"invalid.illegal.identifier.go\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"variable.other.assignment.go\"\n            },\n            {\n              \"include\": \"#delimiters\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"comment\": \"Terminators\",\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.go\"\n    },\n    {\n      \"include\": \"#brackets\"\n    },\n    {\n      \"include\": \"#delimiters\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#runes\"\n    },\n    {\n      \"include\": \"#storage_types\"\n    }\n  ],\n  \"repository\": {\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.curly.go\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.curly.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\[|\\\\]\",\n          \"name\": \"punctuation.definition.bracket.square.go\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.go\",\n          \"begin\": \"(\\\\/\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          },\n          \"end\": \"(\\\\*\\\\/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.double-slash.go\",\n          \"begin\": \"(\\\\/\\\\/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.go\"\n            }\n          },\n          \"end\": \"(?:\\\\n|$)\"\n        }\n      ]\n    },\n    \"delimiters\": {\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.other.comma.go\"\n        },\n        {\n          \"match\": \"\\\\.(?!\\\\.\\\\.)\",\n          \"name\": \"punctuation.other.period.go\"\n        },\n        {\n          \"match\": \":(?!=)\",\n          \"name\": \"punctuation.other.colon.go\"\n        }\n      ]\n    },\n    \"imports\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?!\\\\s+\\\")[^\\\\s]*)?\\\\s*((\\\")([^\\\"]*)(\\\"))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.alias.import.go\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.go\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.go\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.import.go\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.end.go\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.imports.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.imports.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#imports\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Flow control keywords\",\n          \"match\": \"\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\b\",\n          \"name\": \"keyword.control.go\"\n        },\n        {\n          \"match\": \"\\\\bchan\\\\b\",\n          \"name\": \"keyword.channel.go\"\n        },\n        {\n          \"match\": \"\\\\bconst\\\\b\",\n          \"name\": \"keyword.const.go\"\n        },\n        {\n          \"match\": \"\\\\bfunc\\\\b\",\n          \"name\": \"keyword.function.go\"\n        },\n        {\n          \"match\": \"\\\\binterface\\\\b\",\n          \"name\": \"keyword.interface.go\"\n        },\n        {\n          \"match\": \"\\\\bmap\\\\b\",\n          \"name\": \"keyword.map.go\"\n        },\n        {\n          \"match\": \"\\\\bstruct\\\\b\",\n          \"name\": \"keyword.struct.go\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"comment\": \"Note that the order here is very important!\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\*|&)(?=\\\\w)\",\n          \"name\": \"keyword.operator.address.go\"\n        },\n        {\n          \"match\": \"<\\\\-\",\n          \"name\": \"keyword.operator.channel.go\"\n        },\n        {\n          \"match\": \"\\\\-\\\\-\",\n          \"name\": \"keyword.operator.decrement.go\"\n        },\n        {\n          \"match\": \"\\\\+\\\\+\",\n          \"name\": \"keyword.operator.increment.go\"\n        },\n        {\n          \"match\": \"(==|!=|<=|>=|<(?!<)|>(?!>))\",\n          \"name\": \"keyword.operator.comparison.go\"\n        },\n        {\n          \"match\": \"(&&|\\\\|\\\\||!)\",\n          \"name\": \"keyword.operator.logical.go\"\n        },\n        {\n          \"match\": \"(=|\\\\+=|\\\\-=|\\\\|=|\\\\^=|\\\\*=|/=|:=|%=|<<=|>>=|&\\\\^=|&=)\",\n          \"name\": \"keyword.operator.assignment.go\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|\\\\*|/|%)\",\n          \"name\": \"keyword.operator.arithmetic.go\"\n        },\n        {\n          \"match\": \"(&(?!\\\\^)|\\\\||\\\\^|&\\\\^|<<|>>)\",\n          \"name\": \"keyword.operator.arithmetic.bitwise.go\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"keyword.operator.ellipsis.go\"\n        }\n      ]\n    },\n    \"runes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.go\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.go\"\n            }\n          },\n          \"name\": \"string.quoted.rune.go\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G(\\\\\\\\([0-7]{3}|[abfnrtv\\\\\\\\'\\\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})|.)(?=')\",\n              \"name\": \"constant.other.rune.go\"\n            },\n            {\n              \"match\": \"[^']+\",\n              \"name\": \"invalid.illegal.unknown-rune.go\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bbool\\\\b\",\n          \"name\": \"storage.type.boolean.go\"\n        },\n        {\n          \"match\": \"\\\\bbyte\\\\b\",\n          \"name\": \"storage.type.byte.go\"\n        },\n        {\n          \"match\": \"\\\\berror\\\\b\",\n          \"name\": \"storage.type.error.go\"\n        },\n        {\n          \"match\": \"\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\b\",\n          \"name\": \"storage.type.numeric.go\"\n        },\n        {\n          \"match\": \"\\\\brune\\\\b\",\n          \"name\": \"storage.type.rune.go\"\n        },\n        {\n          \"match\": \"\\\\bstring\\\\b\",\n          \"name\": \"storage.type.string.go\"\n        },\n        {\n          \"match\": \"\\\\buintptr\\\\b\",\n          \"name\": \"storage.type.uintptr.go\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\([0-7]{3}|[abfnrtv\\\\\\\\'\\\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})\",\n          \"name\": \"constant.character.escape.go\"\n        },\n        {\n          \"match\": \"\\\\\\\\[^0-7xuUabfnrtv\\\\'\\\"]\",\n          \"name\": \"invalid.illegal.unknown-escape.go\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"%(\\\\[\\\\d+\\\\])?([\\\\+#\\\\-0\\\\x20]{,2}((\\\\d+|\\\\*)?(\\\\.?(\\\\d+|\\\\*|(\\\\[\\\\d+\\\\])\\\\*?)?(\\\\[\\\\d+\\\\])?)?))?[vT%tbcdoqxXUbeEfFgGspw]\",\n          \"name\": \"constant.other.placeholder.go\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\w+(?:,\\\\s*\\\\w+)*)(\\\\s+\\\\*?\\\\w+(?:\\\\.\\\\w+)?\\\\s*)?(?=\\\\s*=)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\d\\\\w*\",\n                  \"name\": \"invalid.illegal.identifier.go\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.other.assignment.go\"\n                },\n                {\n                  \"include\": \"#delimiters\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\w+(?:,\\\\s*\\\\w+)*)(\\\\s+(\\\\[(\\\\d*|\\\\.\\\\.\\\\.)\\\\])*\\\\*?(<-)?\\\\w+(?:\\\\.\\\\w+)?\\\\s*[^=].*)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\d\\\\w*\",\n                  \"name\": \"invalid.illegal.identifier.go\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.other.declaration.go\"\n                },\n                {\n                  \"include\": \"#delimiters\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variables.begin.bracket.round.go\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variables.end.bracket.round.go\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"numeric_literals\": {\n      \"match\": \"(?<!\\\\w)\\\\.?\\\\d(?:(?:[0-9a-zA-Z_\\\\.])|(?<=[eEpP])[+-])*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?=.)\",\n              \"end\": \"(?:\\\\n|$)\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?:(?:(?:(?:(?:\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?:(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\\\w))?(?:\\\\n|$)|\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|\\\\G((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?:(?<!_)([eE])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\\\+?)(\\\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\\\w))?(?:\\\\n|$))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.decimal.point.go\"\n                    },\n                    \"4\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"11\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"12\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"13\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"14\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"15\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"16\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"17\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"18\": {\n                      \"name\": \"constant.numeric.decimal.point.go\"\n                    },\n                    \"19\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"20\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"21\": {\n                      \"name\": \"keyword.other.unit.exponent.decimal.go\"\n                    },\n                    \"22\": {\n                      \"name\": \"keyword.operator.plus.exponent.decimal.go\"\n                    },\n                    \"23\": {\n                      \"name\": \"keyword.operator.minus.exponent.decimal.go\"\n                    },\n                    \"24\": {\n                      \"name\": \"constant.numeric.exponent.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"25\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"26\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"27\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"28\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"29\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\"\n                    },\n                    \"30\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"31\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"32\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"33\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"34\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"35\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"36\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"37\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"38\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"39\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"40\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"41\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"42\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"43\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"44\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"45\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"46\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\"\n                    },\n                    \"47\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"48\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"49\": {\n                      \"name\": \"keyword.other.unit.exponent.hexadecimal.go\"\n                    },\n                    \"50\": {\n                      \"name\": \"keyword.operator.plus.exponent.hexadecimal.go\"\n                    },\n                    \"51\": {\n                      \"name\": \"keyword.operator.minus.exponent.hexadecimal.go\"\n                    },\n                    \"52\": {\n                      \"name\": \"constant.numeric.exponent.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"53\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:(?:\\\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$)|(\\\\G0[bB])_?([01](?:[01]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[oO]?)_?((?:[0-7]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))+)(i(?!\\\\w))?(?:\\\\n|$))|(\\\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\\\w))?(?:\\\\n|$))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"constant.numeric.decimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.other.unit.binary.go\"\n                    },\n                    \"5\": {\n                      \"name\": \"constant.numeric.binary.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"8\": {\n                      \"name\": \"keyword.other.unit.octal.go\"\n                    },\n                    \"9\": {\n                      \"name\": \"constant.numeric.octal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"10\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"11\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    },\n                    \"12\": {\n                      \"name\": \"keyword.other.unit.hexadecimal.go\"\n                    },\n                    \"13\": {\n                      \"name\": \"constant.numeric.hexadecimal.go\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])\",\n                          \"name\": \"punctuation.separator.constant.numeric.go\"\n                        }\n                      ]\n                    },\n                    \"14\": {\n                      \"name\": \"punctuation.separator.constant.numeric.go\"\n                    },\n                    \"15\": {\n                      \"name\": \"keyword.other.unit.imaginary.go\"\n                    }\n                  }\n                },\n                {\n                  \"match\": \"(?:(?:[0-9a-zA-Z_\\\\.])|(?<=[eEpP])[+-])+\",\n                  \"name\": \"invalid.illegal.constant.numeric.go\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/graphql.tmLanguage.json",
    "content": "{\n  \"name\": \"graphql\",\n  \"scopeName\": \"source.graphql\",\n  \"fileTypes\": [\"graphql\", \"graphqls\", \"gql\", \"graphcool\"],\n  \"patterns\": [\n    {\n      \"include\": \"#graphql\"\n    }\n  ],\n  \"repository\": {\n    \"graphql\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-fragment-definition\"\n        },\n        {\n          \"include\": \"#graphql-directive-definition\"\n        },\n        {\n          \"include\": \"#graphql-type-interface\"\n        },\n        {\n          \"include\": \"#graphql-enum\"\n        },\n        {\n          \"include\": \"#graphql-scalar\"\n        },\n        {\n          \"include\": \"#graphql-union\"\n        },\n        {\n          \"include\": \"#graphql-schema\"\n        },\n        {\n          \"include\": \"#graphql-operation-def\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-operation-def\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-query-mutation\"\n        },\n        {\n          \"include\": \"#graphql-name\"\n        },\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        }\n      ]\n    },\n    \"graphql-fragment-definition\": {\n      \"name\": \"meta.fragment.graphql\",\n      \"begin\": \"\\\\s*(?:(\\\\bfragment\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*)?\\\\s*(?:(\\\\bon\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*)))\",\n      \"end\": \"(?<=})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.fragment.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.fragment.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"4\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-query-mutation\": {\n      \"match\": \"\\\\s*\\\\b(query|mutation)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operation.graphql\"\n        }\n      }\n    },\n    \"graphql-type-interface\": {\n      \"name\": \"meta.type.interface.graphql\",\n      \"begin\": \"\\\\s*\\\\b(?:(extends?)?\\\\b\\\\s*\\\\b(type)|(interface)|(input))\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)?\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.type.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.interface.graphql\"\n        },\n        \"4\": {\n          \"name\": \"keyword.input.graphql\"\n        },\n        \"5\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*\\\\b(implements)\\\\b\\\\s*\",\n          \"end\": \"\\\\s*(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.implements.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.graphql\"\n                }\n              }\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-ampersand\"\n            },\n            {\n              \"include\": \"#graphql-comma\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-type-object\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-ignore-spaces\"\n        }\n      ]\n    },\n    \"graphql-ignore-spaces\": {\n      \"match\": \"\\\\s*\"\n    },\n    \"graphql-type-object\": {\n      \"name\": \"meta.type.object.graphql\",\n      \"begin\": \"\\\\s*({)\",\n      \"end\": \"\\\\s*(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-object-type\"\n        },\n        {\n          \"include\": \"#graphql-type-definition\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-type-definition\": {\n      \"comment\": \"key (optionalArgs): Type\",\n      \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n      \"end\": \"(?=\\\\s*(([_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(})))|\\\\s*(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"5\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"include\": \"#graphql-type-object\"\n        },\n        {\n          \"include\": \"#graphql-colon\"\n        },\n        {\n          \"include\": \"#graphql-input-types\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-schema\": {\n      \"begin\": \"\\\\s*\\\\b(schema)\\\\b\",\n      \"end\": \"(?<=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.schema.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n              \"end\": \"(?=\\\\s*(([_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(})))|\\\\s*(,)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.arguments.graphql\"\n                }\n              },\n              \"endCaptures\": {\n                \"5\": {\n                  \"name\": \"punctuation.comma.graphql\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"support.type.graphql\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#graphql-comment\"\n                },\n                {\n                  \"include\": \"#graphql-description-docstring\"\n                },\n                {\n                  \"include\": \"#graphql-description-singleline\"\n                },\n                {\n                  \"include\": \"#graphql-colon\"\n                },\n                {\n                  \"include\": \"#graphql-skip-newlines\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-comment\": {\n      \"patterns\": [\n        {\n          \"comment\": \"need to prefix comment space with a scope else Atom's reflow cmd doesn't work\",\n          \"name\": \"comment.line.graphql.js\",\n          \"match\": \"(\\\\s*)(#).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.graphql.js\",\n          \"begin\": \"(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.line.graphql.js\",\n          \"begin\": \"(\\\")\",\n          \"end\": \"(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.graphql\"\n            }\n          }\n        }\n      ]\n    },\n    \"graphql-description-singleline\": {\n      \"name\": \"comment.line.number-sign.graphql\",\n      \"match\": \"#(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$).*$\"\n    },\n    \"graphql-description-docstring\": {\n      \"name\": \"comment.block.graphql\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"end\": \"\\\"\\\"\\\"\"\n    },\n    \"graphql-variable-definitions\": {\n      \"begin\": \"\\\\s*(\\\\()\",\n      \"end\": \"\\\\s*(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-variable-definition\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-variable-definition\": {\n      \"comment\": \"variable: type = value,.... which may be a list\",\n      \"name\": \"meta.variables.graphql\",\n      \"begin\": \"\\\\s*(\\\\$?[_A-Za-z][_0-9A-Za-z]*)(?=\\\\s*\\\\(|:)\",\n      \"end\": \"(?=\\\\s*((\\\\$?[_A-Za-z][_0-9A-Za-z]*)\\\\s*(\\\\(|:)|(}|\\\\))))|\\\\s*(,)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"5\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-colon\"\n        },\n        {\n          \"include\": \"#graphql-input-types\"\n        },\n        {\n          \"include\": \"#graphql-variable-assignment\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-input-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-scalar-type\"\n        },\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\\\s*(!))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.graphql\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nulltype.graphql\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.type.list.graphql\",\n          \"begin\": \"\\\\s*(\\\\[)\",\n          \"end\": \"\\\\s*(\\\\])(?:\\\\s*(!))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nulltype.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-input-types\"\n            },\n            {\n              \"include\": \"#graphql-comma\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-scalar\": {\n      \"match\": \"\\\\s*\\\\b(scalar)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.scalar.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.scalar.graphql\"\n        }\n      }\n    },\n    \"graphql-scalar-type\": {\n      \"match\": \"\\\\s*\\\\b(Int|Float|String|Boolean|ID)\\\\b(?:\\\\s*(!))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nulltype.graphql\"\n        }\n      }\n    },\n    \"graphql-variable-assignment\": {\n      \"begin\": \"\\\\s(=)\",\n      \"end\": \"(?=[\\n,)])\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.assignment.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-value\"\n        }\n      ]\n    },\n    \"graphql-comma\": {\n      \"match\": \"\\\\s*(,)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.comma.graphql\"\n        }\n      }\n    },\n    \"graphql-ampersand\": {\n      \"match\": \"\\\\s*(&)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.graphql\"\n        }\n      }\n    },\n    \"graphql-colon\": {\n      \"match\": \"\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.colon.graphql\"\n        }\n      }\n    },\n    \"graphql-union-mark\": {\n      \"match\": \"\\\\s*(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.union.graphql\"\n        }\n      }\n    },\n    \"graphql-name\": {\n      \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.graphql\"\n        }\n      }\n    },\n    \"graphql-directive\": {\n      \"begin\": \"\\\\s*((@)\\\\s*([_A-Za-z][_0-9A-Za-z]*))\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.directive.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-arguments\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-directive-definition\": {\n      \"begin\": \"\\\\s*(\\\\bdirective\\\\b)\\\\s*(@[_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.graphql\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.directive.graphql\"\n        },\n        \"3\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"4\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-variable-definitions\"\n        },\n        {\n          \"begin\": \"\\\\s*(\\\\bon\\\\b)\\\\s*([_A-Za-z]*)\",\n          \"end\": \"(?=.)\",\n          \"applyEndPatternLast\": 1,\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.on.graphql\"\n            },\n            \"2\": {\n              \"name\": \"support.type.location.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            },\n            {\n              \"match\": \"\\\\s*(\\\\|)\\\\s*([_A-Za-z]*)\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"support.type.location.graphql\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-selection-set\": {\n      \"name\": \"meta.selectionset.graphql\",\n      \"begin\": \"\\\\s*({)\",\n      \"end\": \"\\\\s*(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.operation.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-field\"\n        },\n        {\n          \"include\": \"#graphql-fragment-spread\"\n        },\n        {\n          \"include\": \"#graphql-inline-fragment\"\n        },\n        {\n          \"include\": \"#graphql-comma\"\n        },\n        {\n          \"include\": \"#native-interpolation\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-field\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.alias.graphql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.colon.graphql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.graphql\"\n            }\n          }\n        },\n        {\n          \"include\": \"#graphql-arguments\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-fragment-spread\": {\n      \"begin\": \"\\\\s*(\\\\.\\\\.\\\\.)\\\\s*(?!\\\\bon\\\\b)([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.spread.graphql\"\n        },\n        \"2\": {\n          \"name\": \"variable.fragment.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        }\n      ]\n    },\n    \"graphql-inline-fragment\": {\n      \"begin\": \"\\\\s*(\\\\.\\\\.\\\\.)\\\\s*(?:(\\\\bon\\\\b)\\\\s*([_A-Za-z][_0-9A-Za-z]*))?\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.spread.graphql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.on.graphql\"\n        },\n        \"3\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-selection-set\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-arguments\": {\n      \"name\": \"meta.arguments.graphql\",\n      \"begin\": \"\\\\s*(\\\\()\",\n      \"end\": \"\\\\s*(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.directive.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.round.directive.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"begin\": \"\\\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\\\s*(:))\",\n          \"end\": \"(?=\\\\s*(?:(?:([_A-Za-z][_0-9A-Za-z]*)\\\\s*(:))|\\\\)))|\\\\s*(,)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.graphql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.colon.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.comma.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-value\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-variable-name\": {\n      \"match\": \"\\\\s*(\\\\$[_A-Za-z][_0-9A-Za-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.graphql\"\n        }\n      }\n    },\n    \"graphql-float-value\": {\n      \"match\": \"\\\\s*(-?(0|[1-9][0-9]*)(\\\\.[0-9]+)?((e|E)(\\\\+|-)?[0-9]+)?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.float.graphql\"\n        }\n      }\n    },\n    \"graphql-boolean-value\": {\n      \"match\": \"\\\\s*\\\\b(true|false)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.boolean.graphql\"\n        }\n      }\n    },\n    \"graphql-null-value\": {\n      \"match\": \"\\\\s*\\\\b(null)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.language.null.graphql\"\n        }\n      }\n    },\n    \"graphql-string-value\": {\n      \"contentName\": \"string.quoted.double.graphql\",\n      \"begin\": \"\\\\s*+((\\\"))\",\n      \"end\": \"\\\\s*+(?:((\\\"))|(\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.graphql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.graphql\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.quoted.double.graphql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.end.graphql\"\n        },\n        \"3\": {\n          \"name\": \"invalid.illegal.newline.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-string-content\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-string-content\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.graphql\",\n          \"match\": \"\\\\\\\\[/'\\\"\\\\\\\\nrtbf]\"\n        },\n        {\n          \"name\": \"constant.character.escape.graphql\",\n          \"match\": \"\\\\\\\\u([0-9a-fA-F]{4})\"\n        }\n      ]\n    },\n    \"graphql-enum\": {\n      \"name\": \"meta.enum.graphql\",\n      \"begin\": \"\\\\s*+\\\\b(enum)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?<=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.enum.graphql\"\n        },\n        \"2\": {\n          \"name\": \"support.type.enum.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.object.graphql\",\n          \"begin\": \"\\\\s*({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.operation.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-object-type\"\n            },\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-directive\"\n            },\n            {\n              \"include\": \"#graphql-enum-value\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-directive\"\n        }\n      ]\n    },\n    \"graphql-enum-value\": {\n      \"name\": \"constant.character.enum.graphql\",\n      \"match\": \"\\\\s*(?!=\\\\b(true|false|null)\\\\b)([_A-Za-z][_0-9A-Za-z]*)\"\n    },\n    \"graphql-value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-variable-name\"\n        },\n        {\n          \"include\": \"#graphql-float-value\"\n        },\n        {\n          \"include\": \"#graphql-string-value\"\n        },\n        {\n          \"include\": \"#graphql-boolean-value\"\n        },\n        {\n          \"include\": \"#graphql-null-value\"\n        },\n        {\n          \"include\": \"#graphql-enum-value\"\n        },\n        {\n          \"include\": \"#graphql-list-value\"\n        },\n        {\n          \"include\": \"#graphql-object-value\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"graphql-list-value\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.listvalues.graphql\",\n          \"begin\": \"\\\\s*+(\\\\[)\",\n          \"end\": \"\\\\s*(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            }\n          },\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.square.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-object-value\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.objectvalues.graphql\",\n          \"begin\": \"\\\\s*+({)\",\n          \"end\": \"\\\\s*(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.curly.graphql\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.curly.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-object-field\"\n            },\n            {\n              \"include\": \"#graphql-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"graphql-object-field\": {\n      \"match\": \"\\\\s*(([_A-Za-z][_0-9A-Za-z]*))\\\\s*(:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.object.key.graphql\"\n        },\n        \"2\": {\n          \"name\": \"string.unquoted.graphql\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.graphql\"\n        }\n      }\n    },\n    \"graphql-union\": {\n      \"begin\": \"\\\\s*\\\\b(union)\\\\b\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n      \"end\": \"(?=.)\",\n      \"applyEndPatternLast\": 1,\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.union.graphql\"\n        },\n        \"2\": {\n          \"name\": \"support.type.graphql\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(=)\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n          \"end\": \"(?=.)\",\n          \"applyEndPatternLast\": 1,\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.assignment.graphql\"\n            },\n            \"2\": {\n              \"name\": \"support.type.graphql\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#graphql-comment\"\n            },\n            {\n              \"include\": \"#graphql-description-docstring\"\n            },\n            {\n              \"include\": \"#graphql-description-singleline\"\n            },\n            {\n              \"include\": \"#graphql-skip-newlines\"\n            },\n            {\n              \"include\": \"#literal-quasi-embedded\"\n            },\n            {\n              \"match\": \"\\\\s*(\\\\|)\\\\s*([_A-Za-z][_0-9A-Za-z]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.or.graphql\"\n                },\n                \"2\": {\n                  \"name\": \"support.type.graphql\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#graphql-comment\"\n        },\n        {\n          \"include\": \"#graphql-description-docstring\"\n        },\n        {\n          \"include\": \"#graphql-description-singleline\"\n        },\n        {\n          \"include\": \"#graphql-skip-newlines\"\n        },\n        {\n          \"include\": \"#literal-quasi-embedded\"\n        }\n      ]\n    },\n    \"native-interpolation\": {\n      \"name\": \"native.interpolation\",\n      \"begin\": \"\\\\s*(\\\\${)\",\n      \"end\": \"(})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substitution.begin\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substitution.end\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        },\n        {\n          \"include\": \"source.ts\"\n        },\n        {\n          \"include\": \"source.js.jsx\"\n        },\n        {\n          \"include\": \"source.tsx\"\n        }\n      ]\n    },\n    \"graphql-skip-newlines\": {\n      \"match\": \"\\\\s*\\n\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/groovy.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1\",\n  \"name\": \"groovy\",\n  \"scopeName\": \"source.groovy\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.groovy\"\n        }\n      },\n      \"match\": \"^(#!).+$\\\\n\",\n      \"name\": \"comment.line.hashbang.groovy\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.package.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.package.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*(;)?)?\",\n      \"name\": \"meta.package.groovy\"\n    },\n    {\n      \"begin\": \"(import static)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.static.groovy\"\n        }\n      },\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"contentName\": \"storage.modifier.import.groovy\",\n      \"end\": \"\\\\s*(?:$|(?=%>)(;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"name\": \"meta.import.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.groovy\"\n        },\n        {\n          \"match\": \"\\\\s\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.groovy\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(import)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        }\n      },\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"contentName\": \"storage.modifier.import.groovy\",\n      \"end\": \"\\\\s*(?:$|(?=%>)|(;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"name\": \"meta.import.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.groovy\"\n        },\n        {\n          \"match\": \"\\\\s\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.groovy\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.groovy\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.import.static.groovy\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.import.groovy\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.terminator.groovy\"\n        }\n      },\n      \"match\": \"^\\\\s*(import)(?:\\\\s+(static)\\\\s+)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*(;)?)?\",\n      \"name\": \"meta.import.groovy\"\n    },\n    {\n      \"include\": \"#groovy\"\n    }\n  ],\n  \"repository\": {\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\.)(@[^ (]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.annotation.groovy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.groovy\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.groovy\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.groovy\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.groovy\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#values\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.definition.seperator.groovy\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!\\\\.)@\\\\S+\",\n          \"name\": \"storage.type.annotation.groovy\"\n        }\n      ]\n    },\n    \"anonymous-classes-and-new\": {\n      \"begin\": \"\\\\bnew\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.new.groovy\"\n        }\n      },\n      \"end\": \"(?<=\\\\)|\\\\])(?!\\\\s*{)|(?<=})|(?=[;])|$\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\w+)\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.groovy\"\n            }\n          },\n          \"end\": \"}|(?=\\\\s*(?:,|;|\\\\)))|$\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"end\": \"(?=})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\(?)\",\n          \"end\": \"(?<=\\\\))|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.groovy\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"}\",\n          \"name\": \"meta.inner-class.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s]*(?:class|(?:@)?interface|enum)\\\\s+\\\\w+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.groovy\"\n        }\n      },\n      \"name\": \"meta.definition.class.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.groovy\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.groovy\"\n            }\n          },\n          \"match\": \"(class|(?:@)?interface|enum)\\\\s+(\\\\w+)\",\n          \"name\": \"meta.class.identifier.groovy\"\n        },\n        {\n          \"begin\": \"extends\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.extends.groovy\"\n            }\n          },\n          \"end\": \"(?={|implements)\",\n          \"name\": \"meta.definition.class.inherited.classes.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.groovy\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"name\": \"meta.class.body.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#enum-values\"\n        },\n        {\n          \"include\": \"#constructors\"\n        },\n        {\n          \"include\": \"#groovy\"\n        }\n      ]\n    },\n    \"closures\": {\n      \"begin\": \"\\\\{(?=.*?->)\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{)(?=[^\\\\}]*?->)\",\n          \"end\": \"->\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.groovy\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?!->)\",\n              \"end\": \"(?=->)\",\n              \"name\": \"meta.closure.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?!,|->)\",\n                  \"end\": \"(?=,|->)\",\n                  \"name\": \"meta.closure.parameter.groovy\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"=\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword.operator.assignment.groovy\"\n                        }\n                      },\n                      \"end\": \"(?=,|->)\",\n                      \"name\": \"meta.parameter.default.groovy\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#groovy-code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#parameters\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[^}])\",\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.groovy\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.groovy\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.groovy\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.groovy\"\n        },\n        {\n          \"include\": \"text.html.javadoc\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.groovy\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.groovy\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([A-Z][A-Z0-9_]+)\\\\b\",\n          \"name\": \"constant.other.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.groovy\"\n        }\n      ]\n    },\n    \"constructors\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?<=;|^)(?=\\\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\\\s+)*[A-Z]\\\\w*\\\\()\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-content\"\n        }\n      ]\n    },\n    \"enum-values\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=;|^)\\\\s*\\\\b([A-Z0-9_]+)(?=\\\\s*(?:,|;|}|\\\\(|$))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.enum.name.groovy\"\n            }\n          },\n          \"end\": \",|;|(?=})|^(?!\\\\s*\\\\w+\\\\s*(?:,|$))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"name\": \"meta.enum.value.groovy\",\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.seperator.parameter.groovy\"\n                },\n                {\n                  \"include\": \"#groovy-code\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"groovy\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#methods\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"groovy-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code-minus-map-keys\"\n        },\n        {\n          \"include\": \"#map-keys\"\n        }\n      ]\n    },\n    \"groovy-code-minus-map-keys\": {\n      \"comment\": \"In some situations, maps can't be declared without enclosing []'s, \\n\\t\\t\\t\\ttherefore we create a collection of everything but that\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#support-functions\"\n        },\n        {\n          \"include\": \"#keyword-language\"\n        },\n        {\n          \"include\": \"#values\"\n        },\n        {\n          \"include\": \"#anonymous-classes-and-new\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#closures\"\n        },\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#keyword-language\"\n        }\n      ]\n    },\n    \"keyword-language\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(try|catch|finally|throw)\\\\b\",\n          \"name\": \"keyword.control.exception.groovy\"\n        },\n        {\n          \"match\": \"\\\\b((?<!\\\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\\\b\",\n          \"name\": \"keyword.control.groovy\"\n        },\n        {\n          \"begin\": \"\\\\bcase\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.groovy\"\n            }\n          },\n          \"end\": \":\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.case-terminator.groovy\"\n            }\n          },\n          \"name\": \"meta.case.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(assert)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.assert.groovy\"\n            }\n          },\n          \"end\": \"$|;|}\",\n          \"name\": \"meta.declaration.assertion.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.assert.expression-seperator.groovy\"\n            },\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(throws)\\\\b\",\n          \"name\": \"keyword.other.throws.groovy\"\n        }\n      ]\n    },\n    \"keyword-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as)\\\\b\",\n          \"name\": \"keyword.operator.as.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(in)\\\\b\",\n          \"name\": \"keyword.operator.in.groovy\"\n        },\n        {\n          \"match\": \"\\\\?\\\\:\",\n          \"name\": \"keyword.operator.elvis.groovy\"\n        },\n        {\n          \"match\": \"\\\\*\\\\:\",\n          \"name\": \"keyword.operator.spreadmap.groovy\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"keyword.operator.range.groovy\"\n        },\n        {\n          \"match\": \"\\\\->\",\n          \"name\": \"keyword.operator.arrow.groovy\"\n        },\n        {\n          \"match\": \"<<\",\n          \"name\": \"keyword.operator.leftshift.groovy\"\n        },\n        {\n          \"match\": \"(?<=\\\\S)\\\\.(?=\\\\S)\",\n          \"name\": \"keyword.operator.navigation.groovy\"\n        },\n        {\n          \"match\": \"(?<=\\\\S)\\\\?\\\\.(?=\\\\S)\",\n          \"name\": \"keyword.operator.safe-navigation.groovy\"\n        },\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.ternary.groovy\"\n            }\n          },\n          \"end\": \"(?=$|\\\\)|}|])\",\n          \"name\": \"meta.evaluation.ternary.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.ternary.expression-seperator.groovy\"\n            },\n            {\n              \"include\": \"#groovy-code-minus-map-keys\"\n            }\n          ]\n        },\n        {\n          \"match\": \"==~\",\n          \"name\": \"keyword.operator.match.groovy\"\n        },\n        {\n          \"match\": \"=~\",\n          \"name\": \"keyword.operator.find.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(instanceof)\\\\b\",\n          \"name\": \"keyword.operator.instanceof.groovy\"\n        },\n        {\n          \"match\": \"(===|==|!=|<=|>=|<=>|<>|<|>|<<)\",\n          \"name\": \"keyword.operator.comparison.groovy\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.groovy\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.groovy\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.groovy\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.groovy\"\n        }\n      ]\n    },\n    \"language-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.groovy\"\n        }\n      ]\n    },\n    \"map-keys\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.other.key.groovy\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.seperator.key-value.groovy\"\n            }\n          },\n          \"match\": \"(\\\\w+)\\\\s*(:)\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"([\\\\w$]+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.method.groovy\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.method-parameters.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.method-parameters.end.groovy\"\n        }\n      },\n      \"name\": \"meta.method-call.groovy\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.seperator.parameter.groovy\"\n        },\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"method-content\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"begin\": \"(?=(?:\\\\w|<)[^\\\\(]*\\\\s+(?:[\\\\w$]|<)+\\\\s*\\\\()\",\n          \"end\": \"(?=[\\\\w$]+\\\\s*\\\\()\",\n          \"name\": \"meta.method.return-type.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#storage-modifiers\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([\\\\w$]+)\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.definition.method.signature.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=[^)])\",\n              \"end\": \"(?=\\\\))\",\n              \"name\": \"meta.method.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=[^,)])\",\n                  \"end\": \"(?=,|\\\\))\",\n                  \"name\": \"meta.method.parameter.groovy\",\n                  \"patterns\": [\n                    {\n                      \"match\": \",\",\n                      \"name\": \"punctuation.definition.separator.groovy\"\n                    },\n                    {\n                      \"begin\": \"=\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword.operator.assignment.groovy\"\n                        }\n                      },\n                      \"end\": \"(?=,|\\\\))\",\n                      \"name\": \"meta.parameter.default.groovy\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#groovy-code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#parameters\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<)\",\n          \"end\": \"(?=\\\\s)\",\n          \"name\": \"meta.method.paramerised-type.groovy\",\n          \"patterns\": [\n            {\n              \"begin\": \"<\",\n              \"end\": \">\",\n              \"name\": \"storage.type.parameters.groovy\",\n              \"patterns\": [\n                {\n                  \"include\": \"#types\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.seperator.groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"throws\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.groovy\"\n            }\n          },\n          \"end\": \"(?={|;)|^(?=\\\\s*(?:[^{\\\\s]|$))\",\n          \"name\": \"meta.throwables.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"end\": \"(?=})\",\n          \"name\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"methods\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?x:(?<=;|^|{)(?=\\\\s*\\n                (?:\\n                    (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\\n                        |\\n                    (?:def)\\n                        |\\n                    (?:\\n                        (?:\\n                            (?:void|boolean|byte|char|short|int|float|long|double)\\n                                |\\n                            (?:@?(?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*) # object type\\n                        )\\n                        [\\\\[\\\\]]*\\n                        (?:<.*>)?\\n                    ) \\n                    \\n                )\\n                \\\\s+\\n                ([^=]+\\\\s+)?\\\\w+\\\\s*\\\\(\\n\\t\\t\\t))\",\n      \"end\": \"}|(?=[^{])\",\n      \"name\": \"meta.definition.method.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-content\"\n        }\n      ]\n    },\n    \"nest_curly\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.groovy\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#nest_curly\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"((0(x|X)[0-9a-fA-F]*)|(\\\\+|-)?\\\\b(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\\\b\",\n          \"name\": \"constant.numeric.groovy\"\n        }\n      ]\n    },\n    \"object-types\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*(?:[A-Z]+\\\\w*[a-z]+\\\\w*|UR[LI]))<\",\n          \"end\": \">|[^\\\\w\\\\s,\\\\?<\\\\[\\\\]]\",\n          \"name\": \"storage.type.generic.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types\"\n            },\n            {\n              \"begin\": \"<\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"end\": \">|[^\\\\w\\\\s,\\\\[\\\\]<]\",\n              \"name\": \"storage.type.generic.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)(?=\\\\[)\",\n          \"end\": \"(?=[^\\\\]\\\\s])\",\n          \"name\": \"storage.type.object.array.groovy\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:[a-zA-Z]\\\\w*\\\\.)*(?:[A-Z]+\\\\w*[a-z]+\\\\w*|UR[LI])\\\\b\",\n          \"name\": \"storage.type.groovy\"\n        }\n      ]\n    },\n    \"object-types-inherited\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)<\",\n          \"end\": \">|[^\\\\w\\\\s,\\\\?<\\\\[\\\\]]\",\n          \"name\": \"entity.other.inherited-class.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"begin\": \"<\",\n              \"comment\": \"This is just to support <>'s with no actual type prefix\",\n              \"end\": \">|[^\\\\w\\\\s,\\\\[\\\\]<]\",\n              \"name\": \"storage.type.generic.groovy\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.groovy\"\n            }\n          },\n          \"match\": \"\\\\b(?:[a-zA-Z]\\\\w*(\\\\.))*[A-Z]+\\\\w*[a-z]+\\\\w*\\\\b\",\n          \"name\": \"entity.other.inherited-class.groovy\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"variable.parameter.method.groovy\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        }\n      ]\n    },\n    \"primitive-arrays\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\\\[\\\\])*\\\\b\",\n          \"name\": \"storage.type.primitive.array.groovy\"\n        }\n      ]\n    },\n    \"primitive-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?:void|boolean|byte|char|short|int|float|long|double)\\\\b\",\n          \"name\": \"storage.type.primitive.groovy\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/(?=[^/]+/([^>]|$))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.groovy\"\n            }\n          },\n          \"end\": \"/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.end.groovy\"\n            }\n          },\n          \"name\": \"string.regexp.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"~\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.groovy\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.end.groovy\"\n            }\n          },\n          \"name\": \"string.regexp.compiled.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.groovy\"\n            }\n          ]\n        }\n      ]\n    },\n    \"storage-modifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private|protected|public)\\\\b\",\n          \"name\": \"storage.modifier.access-control.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(static)\\\\b\",\n          \"name\": \"storage.modifier.static.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(final)\\\\b\",\n          \"name\": \"storage.modifier.final.groovy\"\n        },\n        {\n          \"match\": \"\\\\b(native|synchronized|abstract|threadsafe|transient)\\\\b\",\n          \"name\": \"storage.modifier.other.groovy\"\n        }\n      ]\n    },\n    \"string-quoted-double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.double.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-contents\"\n        }\n      ]\n    },\n    \"string-quoted-double-contents\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.groovy\"\n        },\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"\\\\$\\\\w\",\n          \"end\": \"(?=\\\\W)\",\n          \"name\": \"variable.other.interpolated.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\w\",\n              \"name\": \"variable.other.interpolated.groovy\"\n            },\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"keyword.other.dereference.groovy\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.groovy\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"source.groovy.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-quoted-double-multiline\": {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.double.multiline.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-contents\"\n        }\n      ]\n    },\n    \"string-quoted-single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.single.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-single-contents\"\n        }\n      ]\n    },\n    \"string-quoted-single-contents\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.groovy\"\n        }\n      ]\n    },\n    \"string-quoted-single-multiline\": {\n      \"begin\": \"'''\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.groovy\"\n        }\n      },\n      \"end\": \"'''\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.groovy\"\n        }\n      },\n      \"name\": \"string.quoted.single.multiline.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-single-contents\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-double-multiline\"\n        },\n        {\n          \"include\": \"#string-quoted-single-multiline\"\n        },\n        {\n          \"include\": \"#string-quoted-double\"\n        },\n        {\n          \"include\": \"#string-quoted-single\"\n        },\n        {\n          \"include\": \"#regexp\"\n        }\n      ]\n    },\n    \"structures\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.structure.begin.groovy\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.structure.end.groovy\"\n        }\n      },\n      \"name\": \"meta.structure.groovy\",\n      \"patterns\": [\n        {\n          \"include\": \"#groovy-code\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.separator.groovy\"\n        }\n      ]\n    },\n    \"support-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\b(?:sprintf|print(?:f|ln)?)\\\\b\",\n          \"name\": \"support.function.print.groovy\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\\n\\t\\t\\t\\t\\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\\n\\t\\t\\t\\t\\tArrayEquals)))\\\\b\",\n          \"name\": \"support.function.testing.groovy\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(def)\\\\b\",\n          \"name\": \"storage.type.def.groovy\"\n        },\n        {\n          \"include\": \"#primitive-types\"\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#language-variables\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#structures\"\n        },\n        {\n          \"include\": \"#method-call\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"applyEndPatternLast\": 1,\n      \"patterns\": [\n        {\n          \"begin\": \"(?x:(?=\\n                        (?:\\n                            (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\\n                                |\\n                            (?:def)\\n                                |\\n                            (?:void|boolean|byte|char|short|int|float|long|double)\\n                                |\\n                            (?:(?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*) # object type\\n                        )\\n                        \\\\s+\\n                        [\\\\w\\\\d_<>\\\\[\\\\],\\\\s]+\\n                        (?:=|$)\\n                        \\n        \\t\\t\\t))\",\n          \"end\": \";|$\",\n          \"name\": \"meta.definition.variable.groovy\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.variable.groovy\"\n                }\n              },\n              \"match\": \"([A-Z_0-9]+)\\\\s+(?=\\\\=)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.definition.variable.name.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w[^\\\\s,]*)\\\\s+(?=\\\\=)\"\n            },\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.groovy\"\n                }\n              },\n              \"end\": \"$\",\n              \"patterns\": [\n                {\n                  \"include\": \"#groovy-code\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.definition.variable.name.groovy\"\n                }\n              },\n              \"match\": \"(\\\\w[^\\\\s=]*)(?=\\\\s*($|;))\"\n            },\n            {\n              \"include\": \"#groovy-code\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/hack.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.hack\",\n  \"name\": \"hack\",\n  \"fileTypes\": [\"hh\", \"php\", \"hack\"],\n  \"foldingStartMarker\": \"(/\\\\*|\\\\{\\\\s*$|<<<HTML)\",\n  \"foldingStopMarker\": \"(\\\\*/|^\\\\s*\\\\}|^HTML;)\",\n  \"patterns\": [\n    {\n      \"include\": \"text.html.basic\"\n    },\n    {\n      \"include\": \"#language\"\n    }\n  ],\n  \"repository\": {\n    \"class-builtin\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\\\\\)?\\\\b(st(dClass|reamWrapper)|R(RD(Graph|Creator|Updater)|untimeException|e(sourceBundle|cursive(RegexIterator|Ca(chingIterator|llbackFilterIterator)|TreeIterator|Iterator(Iterator)?|DirectoryIterator|FilterIterator|ArrayIterator)|flect(ion(Method|Class|ZendExtension|Object|P(arameter|roperty)|Extension|Function(Abstract)?)?|or)|gexIterator)|angeException)|G(ender\\\\Gender|lobIterator|magick(Draw|Pixel)?)|X(sltProcessor|ML(Reader|Writer)|SLTProcessor)|M(ysqlndUh(Connection|PreparedStatement)|ongo(Re(sultException|gex)|Grid(fsFile|FS(Cursor|File)?)|BinData|C(o(de|llection)|ursor(Exception)?|lient)|Timestamp|I(nt(32|64)|d)|D(B(Ref)?|ate)|Pool|Log)?|u(tex|ltipleIterator)|e(ssageFormatter|mcache(d)?))|Bad(MethodCallException|FunctionCallException)|tidy(Node)?|S(tackable|impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|NMP|CA(_(SoapProxy|LocalProxy))?|p(hinxClient|oofchecker|l(M(inHeap|axHeap)|S(tack|ubject)|Heap|T(ype|empFileObject)|Ob(server|jectStorage)|DoublyLinkedList|PriorityQueue|Enum|Queue|Fi(le(Info|Object)|xedArray)))|e(ssionHandler(Interface)?|ekableIterator|rializable)|DO_(Model_(ReflectionDataObject|Type|Property)|Sequence|D(ata(Object|Factory)|AS_(Relational|XML(_Document)?|Setting|ChangeSummary|Data(Object|Factory)))|Exception|List)|wish(Result(s)?|Search)?|VM(Model)?|QLite(Result|3(Result|Stmt)?|Database|Unbuffered)|AM(Message|Connection))|H(ttp(Re(sponse|quest(Pool)?)|Message|InflateStream|DeflateStream|QueryString)|aru(Image|Outline|D(oc|estination)|Page|Encoder|Font|Annotation))|Yaf_(R(oute(_(Re(write|gex)|Map|S(tatic|imple|upervar)|Interface)|r)|e(sponse_Abstract|quest_(Simple|Http|Abstract)|gistry))|Session|Con(troller_Abstract|fig_(Simple|Ini|Abstract))|Dispatcher|Plugin_Abstract|Exception|View_(Simple|Interface)|Loader|A(ction_Abstract|pplication))|N(o(RewindIterator|rmalizer)|umberFormatter)|C(o(nd|untable|llator)|a(chingIterator|llbackFilterIterator))|T(hread|okyoTyrant(Table|Iterator|Query)?|ra(nsliterator|versable))|I(n(tlDateFormatter|validArgumentException|finiteIterator)|terator(Iterator|Aggregate)?|magick(Draw|Pixel(Iterator)?)?)|php_user_filter|ZipArchive|O(CI-(Collection|Lob)|ut(erIterator|Of(RangeException|BoundsException))|verflowException)|D(irectory(Iterator)?|omainException|OM(XPath|N(ode(list)?|amedNodeMap)|C(haracterData|omment|dataSection)|Text|Implementation|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr)|ate(Time(Zone)?|Interval|Period))|Un(derflowException|expectedValueException)|JsonSerializable|finfo|P(har(Data|FileInfo)?|DO(Statement)?|arentIterator)|E(v(S(tat|ignal)|Ch(ild|eck)|Timer|I(o|dle)|P(eriodic|repare)|Embed|Fork|Watcher|Loop)?|rrorException|xception|mptyIterator)|V(8Js(Exception)?|arnish(Stat|Log|Admin))|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|Frame|AttachedPictureFrame))|QuickHash(StringIntHash|Int(S(tringHash|et)|Hash))|Fil(terIterator|esystemIterator)|mysqli(_(stmt|driver|warning|result))?|W(orker|eak(Map|ref))|L(imitIterator|o(cale|gicException)|ua(Closure)?|engthException|apack)|A(MQP(C(hannel|onnection)|E(nvelope|xchange)|Queue)|ppendIterator|PCIterator|rray(Iterator|Object|Access)))\\\\b\",\n          \"name\": \"support.class.builtin.php\"\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9]+\\\\\\\\)\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"begin\": \"(?=[\\\\\\\\a-zA-Z_])\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?:#@\\\\+)?\\\\s*$\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"comment\": \"This now only highlights a docblock if the first line contains only /**\\n- this is to stop highlighting everything as invalid when people do comment banners with /******** ...\\n- Now matches /**#@+ too - used for docblock templates:\\n  http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.php\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.double-slash.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"generics\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.generics.php\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.generics.php\"\n            }\n          },\n          \"name\": \"meta.generics.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generics\"\n            },\n            {\n              \"match\": \"([-+])?([A-Za-z_][A-Za-z0-9_]*)(?:\\\\s+(as|super)\\\\s+([A-Za-z_][A-Za-z0-9_]*))?\",\n              \"name\": \"support.type.php\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"implements\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(implements)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.php\"\n            }\n          },\n          \"end\": \"(?i)(?=[;{])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(?i)(?=[a-z0-9_\\\\\\\\]+)\",\n              \"contentName\": \"meta.other.inherited-class.php\",\n              \"end\": \"(?i)(?:\\\\s*(?:,|(?=[^a-z0-9_\\\\\\\\\\\\s]))\\\\s*)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9]+\\\\\\\\)\",\n                  \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#class-builtin\"\n                },\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_][a-z_0-9]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<)(?!<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.attributes.php\"\n            }\n          },\n          \"end\": \"(>>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.attributes.php\"\n            }\n          },\n          \"name\": \"meta.attributes.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"([A-Za-z_][A-Za-z0-9_]*)\",\n              \"name\": \"entity.other.attribute-name.php\"\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.begin.php\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?xi)\\n(?=\\n  (\\n    (\\\\\\\\[a-z_][a-z_0-9]*\\\\\\\\[a-z_][a-z_0-9\\\\\\\\]*)\\n    |\\n    ([a-z_][a-z_0-9]*\\\\\\\\[a-z_][a-z_0-9\\\\\\\\]*)\\n  )\\n  [^a-z_0-9\\\\\\\\]\\n)\",\n          \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\\\\\?[a-zA-Z_\\\\x{7f}-\\\\x{ff}])\",\n          \"end\": \"(?=[^\\\\\\\\a-zA-Z_\\\\x{7f}-\\\\x{ff}])\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__)\\\\b\",\n              \"name\": \"constant.language.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)?\\\\b(STD(IN|OUT|ERR)|ZEND_(THREAD_SAFE|DEBUG_BUILD)|DEFAULT_INCLUDE_PATH|P(HP_(R(OUND_HALF_(ODD|DOWN|UP|EVEN)|ELEASE_VERSION)|M(INOR_VERSION|A(XPATHLEN|JOR_VERSION))|BINDIR|S(HLIB_SUFFIX|YSCONFDIR|API)|CONFIG_FILE_(SCAN_DIR|PATH)|INT_(MAX|SIZE)|ZTS|O(S|UTPUT_HANDLER_(START|CONT|END))|D(EBUG|ATADIR)|URL_(SCHEME|HOST|USER|P(ORT|A(SS|TH))|QUERY|FRAGMENT)|PREFIX|E(XT(RA_VERSION|ENSION_DIR)|OL)|VERSION(_ID)?|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)|VERSION_(M(INOR|AJOR)|BUILD|S(UITEMASK|P_M(INOR|AJOR))|P(RODUCTTYPE|LATFORM)))|L(IBDIR|OCALSTATEDIR))|EAR_(INSTALL_DIR|EXTENSION_DIR))|E_(RECOVERABLE_ERROR|STRICT|NOTICE|CO(RE_(ERROR|WARNING)|MPILE_(ERROR|WARNING))|DEPRECATED|USER_(NOTICE|DEPRECATED|ERROR|WARNING)|PARSE|ERROR|WARNING|ALL))\\\\b\",\n              \"name\": \"support.constant.core.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)?\\\\b(RADIXCHAR|GROUPING|M(_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRTPI|PI)|PI(_(2|4))?|E(ULER)?|L(N(10|2|PI)|OG(10E|2E)))|ON_(GROUPING|1(1|2|0)?|7|2|8|THOUSANDS_SEP|3|DECIMAL_POINT|9|4|5|6))|S(TR_PAD_(RIGHT|BOTH|LEFT)|ORT_(REGULAR|STRING|NUMERIC|DESC|LOCALE_STRING|ASC)|EEK_(SET|CUR|END))|H(TML_(SPECIALCHARS|ENTITIES)|ASH_HMAC)|YES(STR|EXPR)|N(_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|O(STR|EXPR)|EGATIVE_SIGN|AN)|C(R(YPT_(MD5|BLOWFISH|S(HA(256|512)|TD_DES|ALT_LENGTH)|EXT_DES)|NCYSTR|EDITS_(G(ROUP|ENERAL)|MODULES|SAPI|DOCS|QA|FULLPAGE|ALL))|HAR_MAX|O(NNECTION_(NORMAL|TIMEOUT|ABORTED)|DESET|UNT_(RECURSIVE|NORMAL))|URRENCY_SYMBOL|ASE_(UPPER|LOWER))|__COMPILER_HALT_OFFSET__|T(HOUS(EP|ANDS_SEP)|_FMT(_AMPM)?)|IN(T_(CURR_SYMBOL|FRAC_DIGITS)|I_(S(YSTEM|CANNER_(RAW|NORMAL))|USER|PERDIR|ALL)|F(O_(GENERAL|MODULES|C(REDITS|ONFIGURATION)|ENVIRONMENT|VARIABLES|LICENSE|ALL))?)|D(_(T_FMT|FMT)|IRECTORY_SEPARATOR|ECIMAL_POINT|A(Y_(1|7|2|3|4|5|6)|TE_(R(SS|FC(1(123|036)|2822|8(22|50)|3339))|COOKIE|ISO8601|W3C|ATOM)))|UPLOAD_ERR_(NO_(TMP_DIR|FILE)|CANT_WRITE|INI_SIZE|OK|PARTIAL|EXTENSION|FORM_SIZE)|P(M_STR|_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|OSITIVE_SIGN|ATH(_SEPARATOR|INFO_(BASENAME|DIRNAME|EXTENSION|FILENAME)))|E(RA(_(YEAR|T_FMT|D_(T_FMT|FMT)))?|XTR_(REFS|SKIP|IF_EXISTS|OVERWRITE|PREFIX_(SAME|I(NVALID|F_EXISTS)|ALL))|NT_(NOQUOTES|COMPAT|IGNORE|QUOTES))|FRAC_DIGITS|L(C_(M(ONETARY|ESSAGES)|NUMERIC|C(TYPE|OLLATE)|TIME|ALL)|O(G_(MAIL|SYSLOG|N(O(TICE|WAIT)|DELAY|EWS)|C(R(IT|ON)|ONS)|INFO|ODELAY|D(EBUG|AEMON)|U(SER|UCP)|P(ID|ERROR)|E(RR|MERG)|KERN|WARNING|L(OCAL(1|7|2|3|4|5|0|6)|PR)|A(UTH(PRIV)?|LERT))|CK_(SH|NB|UN|EX)))|A(M_STR|B(MON_(1(1|2|0)?|7|2|8|3|9|4|5|6)|DAY_(1|7|2|3|4|5|6))|SSERT_(BAIL|CALLBACK|QUIET_EVAL|WARNING|ACTIVE)|LT_DIGITS))\\\\b\",\n              \"name\": \"support.constant.std.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)?\\\\b(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)|XML_(SAX_IMPL|HTML_DOCUMENT_NODE|N(OTATION_NODE|AMESPACE_DECL_NODE)|C(OMMENT_NODE|DATA_SECTION_NODE)|TEXT_NODE|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)|D(TD_NODE|OCUMENT_(NODE|TYPE_NODE|FRAG_NODE))|PI_NODE|E(RROR_(RECURSIVE_ENTITY_REF|MISPLACED_XML_PI|B(INARY_ENTITY_REF|AD_CHAR_REF)|SYNTAX|NO(NE|_(MEMORY|ELEMENTS))|TAG_MISMATCH|IN(CORRECT_ENCODING|VALID_TOKEN)|DUPLICATE_ATTRIBUTE|UN(CLOSED_(CDATA_SECTION|TOKEN)|DEFINED_ENTITY|KNOWN_ENCODING)|JUNK_AFTER_DOC_ELEMENT|PAR(TIAL_CHAR|AM_ENTITY_REF)|EXTERNAL_ENTITY_HANDLING|A(SYNC_ENTITY|TTRIBUTE_EXTERNAL_ENTITY_REF))|NTITY_(REF_NODE|NODE|DECL_NODE)|LEMENT_(NODE|DECL_NODE))|LOCAL_NAMESPACE|ATTRIBUTE_(N(MTOKEN(S)?|O(TATION|DE))|CDATA|ID(REF(S)?)?|DECL_NODE|EN(TITY|UMERATION)))|M(HASH_(RIPEMD(1(28|60)|256|320)|GOST|MD(2|4|5)|S(HA(1|2(24|56)|384|512)|NEFRU256)|HAVAL(1(28|92|60)|2(24|56))|CRC32(B)?|TIGER(1(28|60))?|WHIRLPOOL|ADLER32)|YSQL(_(BOTH|NUM|CLIENT_(SSL|COMPRESS|I(GNORE_SPACE|NTERACTIVE))|ASSOC)|I_(RE(PORT_(STRICT|INDEX|OFF|ERROR|ALL)|FRESH_(GRANT|MASTER|BACKUP_LOG|S(TATUS|LAVE)|HOSTS|T(HREADS|ABLES)|LOG)|AD_DEFAULT_(GROUP|FILE))|GROUP_FLAG|MULTIPLE_KEY_FLAG|B(INARY_FLAG|OTH|LOB_FLAG)|S(T(MT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|ORE_RESULT)|E(RVER_QUERY_(NO_(GOOD_INDEX_USED|INDEX_USED)|WAS_SLOW)|T_(CHARSET_NAME|FLAG)))|N(O(_D(EFAULT_VALUE_FLAG|ATA)|T_NULL_FLAG)|UM(_FLAG)?)|C(URSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)|LIENT_(SSL|NO_SCHEMA|COMPRESS|I(GNORE_SPACE|NTERACTIVE)|FOUND_ROWS))|T(YPE_(GEOMETRY|MEDIUM_BLOB|B(IT|LOB)|S(HORT|TRING|ET)|YEAR|N(ULL|EWD(ECIMAL|ATE))|CHAR|TI(ME(STAMP)?|NY(_BLOB)?)|INT(24|ERVAL)|D(OUBLE|ECIMAL|ATE(TIME)?)|ENUM|VAR_STRING|FLOAT|LONG(_BLOB|LONG)?)|IMESTAMP_FLAG)|INIT_COMMAND|ZEROFILL_FLAG|O(N_UPDATE_NOW_FLAG|PT_(NET_(READ_BUFFER_SIZE|CMD_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE))|D(EBUG_TRACE_ENABLED|ATA_TRUNCATED)|U(SE_RESULT|N(SIGNED_FLAG|IQUE_KEY_FLAG))|P(RI_KEY_FLAG|ART_KEY_FLAG)|ENUM_FLAG|A(S(SOC|YNC)|UTO_INCREMENT_FLAG)))|CRYPT_(R(C(2|6)|IJNDAEL_(1(28|92)|256)|AND)|GOST|XTEA|M(ODE_(STREAM|NOFB|C(BC|FB)|OFB|ECB)|ARS)|BLOWFISH(_COMPAT)?|S(ERPENT|KIPJACK|AFER(128|PLUS|64))|C(RYPT|AST_(128|256))|T(RIPLEDES|HREEWAY|WOFISH)|IDEA|3DES|DE(S|CRYPT|V_(RANDOM|URANDOM))|PANAMA|EN(CRYPT|IGNA)|WAKE|LOKI97|ARCFOUR(_IV)?))|S(TREAM_(REPORT_ERRORS|M(UST_SEEK|KDIR_RECURSIVE)|BUFFER_(NONE|FULL|LINE)|S(HUT_(RD(WR)?|WR)|OCK_(R(DM|AW)|S(TREAM|EQPACKET)|DGRAM)|ERVER_(BIND|LISTEN))|NOTIFY_(RE(SOLVE|DIRECTED)|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|CO(MPLETED|NNECT)|PROGRESS|F(ILE_SIZE_IS|AILURE)|AUTH_RE(SULT|QUIRED))|C(RYPTO_METHOD_(SSLv(2(_(SERVER|CLIENT)|3_(SERVER|CLIENT))|3_(SERVER|CLIENT))|TLS_(SERVER|CLIENT))|LIENT_(CONNECT|PERSISTENT|ASYNC_CONNECT)|AST_(FOR_SELECT|AS_STREAM))|I(GNORE_URL|S_URL|PPROTO_(RAW|TCP|I(CMP|P)|UDP))|O(OB|PTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER))|U(RL_STAT_(QUIET|LINK)|SE_PATH)|P(EEK|F_(INET(6)?|UNIX))|ENFORCE_SAFE_MODE|FILTER_(READ|WRITE|ALL))|UNFUNCS_RET_(STRING|TIMESTAMP|DOUBLE)|QLITE(_(R(OW|EADONLY)|MIS(MATCH|USE)|B(OTH|USY)|SCHEMA|N(O(MEM|T(FOUND|ADB)|LFS)|UM)|C(O(RRUPT|NSTRAINT)|ANTOPEN)|TOOBIG|I(NTER(RUPT|NAL)|OERR)|OK|DONE|P(ROTOCOL|ERM)|E(RROR|MPTY)|F(ORMAT|ULL)|LOCKED|A(BORT|SSOC|UTH))|3_(B(OTH|LOB)|NU(M|LL)|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT|ASSOC)))|CURL(M(SG_DONE|_(BAD_(HANDLE|EASY_HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|O(UT_OF_MEMORY|K)))|SSH_AUTH_(HOST|NONE|DEFAULT|P(UBLICKEY|ASSWORD)|KEYBOARD)|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC))|_(HTTP_VERSION_(1_(1|0)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(MODSINCE|UNMODSINCE)|LASTMOD)|IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))|INFO_(RE(DIRECT_(COUNT|TIME)|QUEST_SIZE)|S(SL_VERIFYRESULT|TARTTRANSFER_TIME|IZE_(DOWNLOAD|UPLOAD)|PEED_(DOWNLOAD|UPLOAD))|H(TTP_CODE|EADER_(SIZE|OUT))|NAMELOOKUP_TIME|C(ON(NECT_TIME|TENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD)))|ERTINFO)|TOTAL_TIME|PR(IVATE|ETRANSFER_TIME)|EFFECTIVE_URL|FILETIME)|OPT_(R(E(SUME_FROM|TURNTRANSFER|DIR_PROTOCOLS|FERER|AD(DATA|FUNCTION))|AN(GE|DOM_FILE))|MAX(REDIRS|CONNECTS)|B(INARYTRANSFER|UFFERSIZE)|S(S(H_(HOST_PUBLIC_KEY_MD5|P(RIVATE_KEYFILE|UBLIC_KEYFILE)|AUTH_TYPES)|L(CERT(TYPE|PASSWD)?|_(CIPHER_LIST|VERIFY(HOST|PEER))|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?))|TDERR)|H(TTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)|EADER(FUNCTION)?)|N(O(BODY|SIGNAL|PROGRESS)|ETRC)|C(RLF|O(NNECTTIMEOUT(_MS)?|OKIE(SESSION|JAR|FILE)?)|USTOMREQUEST|ERTINFO|LOSEPOLICY|A(INFO|PATH))|T(RANSFERTEXT|CP_NODELAY|IME(CONDITION|OUT(_MS)?|VALUE))|I(N(TERFACE|FILE(SIZE)?)|PRESOLVE)|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|U(RL|SER(PWD|AGENT)|NRESTRICTED_AUTH|PLOAD)|P(R(IVATE|O(GRESSFUNCTION|XY(TYPE|USERPWD|PORT|AUTH)?|TOCOLS))|O(RT|ST(REDIR|QUOTE|FIELDS)?)|UT)|E(GDSOCKET|NCODING)|VERBOSE|K(RB4LEVEL|EYPASSWD)|QUOTE|F(RESH_CONNECT|TP(SSLAUTH|_(S(SL|KIP_PASV_IP)|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)|PORT|LISTONLY|APPEND)|ILE(TIME)?|O(RBID_REUSE|LLOWLOCATION)|AILONERROR)|WRITE(HEADER|FUNCTION)|LOW_SPEED_(TIME|LIMIT)|AUTOREFERER)|PRO(XY_(SOCKS(4|5)|HTTP)|TO_(S(CP|FTP)|HTTP(S)?|T(ELNET|FTP)|DICT|F(TP(S)?|ILE)|LDAP(S)?|ALL))|E_(RE(CV_ERROR|AD_ERROR)|GOT_NOTHING|MALFORMAT_USER|BAD_(C(ONTENT_ENCODING|ALLING_ORDER)|PASSWORD_ENTERED|FUNCTION_ARGUMENT)|S(S(H|L_(C(IPHER|ONNECT_ERROR|ERTPROBLEM|ACERT)|PEER_CERTIFICATE|ENGINE_(SETFAILED|NOTFOUND)))|HARE_IN_USE|END_ERROR)|HTTP_(RANGE_ERROR|NOT_FOUND|PO(RT_FAILED|ST_ERROR))|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|T(OO_MANY_REDIRECTS|ELNET_OPTION_SYNTAX)|O(BSOLETE|UT_OF_MEMORY|PERATION_TIMEOUTED|K)|U(RL_MALFORMAT(_USER)?|N(SUPPORTED_PROTOCOL|KNOWN_TELNET_OPTION))|PARTIAL_FILE|F(TP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|C(OULDNT_(RETR_FILE|GET_SIZE|S(TOR_FILE|ET_(BINARY|ASCII))|USE_REST)|ANT_(RECONNECT|GET_HOST))|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|W(RITE_ERROR|EIRD_(SERVER_REPLY|227_FORMAT|USER_REPLY|PAS(S_REPLY|V_REPLY)))|ACCESS_DENIED)|ILE(SIZE_EXCEEDED|_COULDNT_READ_FILE)|UNCTION_NOT_FOUND|AILED_INIT)|WRITE_ERROR|L(IBRARY_NOT_FOUND|DAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL))|ABORTED_BY_CALLBACK)|VERSION_NOW|FTP(METHOD_(MULTICWD|SINGLECWD|NOCWD)|SSL_(NONE|CONTROL|TRY|ALL)|AUTH_(SSL|TLS|DEFAULT))|AUTH_(GSSNEGOTIATE|BASIC|NTLM|DIGEST|ANY(SAFE)?))|I(MAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|I(CO|FF)|UNKNOWN|J(B2|P(X|2|C|EG(2000)?))|P(SD|NG)|WBMP)|NPUT_(REQUEST|GET|SE(RVER|SSION)|COOKIE|POST|ENV)|CONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION))|D(NS_(MX|S(RV|OA)|HINFO|N(S|APTR)|CNAME|TXT|PTR|A(NY|LL|AAA|6)?)|OM(STRING_SIZE_ERR|_(SYNTAX_ERR|HIERARCHY_REQUEST_ERR|N(O(_(MODIFICATION_ALLOWED_ERR|DATA_ALLOWED_ERR)|T_(SUPPORTED_ERR|FOUND_ERR))|AMESPACE_ERR)|IN(DEX_SIZE_ERR|USE_ATTRIBUTE_ERR|VALID_(MODIFICATION_ERR|STATE_ERR|CHARACTER_ERR|ACCESS_ERR))|PHP_ERR|VALIDATION_ERR|WRONG_DOCUMENT_ERR)))|JSON_(HEX_(TAG|QUOT|A(MP|POS))|NUMERIC_CHECK|ERROR_(S(YNTAX|TATE_MISMATCH)|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)|P(REG_(RECURSION_LIMIT_ERROR|GREP_INVERT|BA(CKTRACK_LIMIT_ERROR|D_UTF8_(OFFSET_ERROR|ERROR))|S(PLIT_(NO_EMPTY|OFFSET_CAPTURE|DELIM_CAPTURE)|ET_ORDER)|NO_ERROR|INTERNAL_ERROR|OFFSET_CAPTURE|PATTERN_ORDER)|SFS_(PASS_ON|ERR_FATAL|F(EED_ME|LAG_(NORMAL|FLUSH_(CLOSE|INC))))|CRE_VERSION|OSIX_(R_OK|X_OK|S_IF(REG|BLK|SOCK|CHR|IFO)|F_OK|W_OK))|F(NM_(NOESCAPE|CASEFOLD|P(ERIOD|ATHNAME))|IL(TER_(REQUIRE_(SCALAR|ARRAY)|SANITIZE_(MAGIC_QUOTES|S(TRI(NG|PPED)|PECIAL_CHARS)|NUMBER_(INT|FLOAT)|URL|E(MAIL|NCODED)|FULL_SPECIAL_CHARS)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW|VALIDATE_(REGEXP|BOOLEAN|I(NT|P)|URL|EMAIL|FLOAT)|F(ORCE_ARRAY|LAG_(S(CHEME_REQUIRED|TRIP_(BACKTICK|HIGH|LOW))|HOST_REQUIRED|NO(NE|_(RES_RANGE|PRIV_RANGE|ENCODE_QUOTES))|IPV(4|6)|PATH_REQUIRED|E(MPTY_STRING_NULL|NCODE_(HIGH|LOW|AMP))|QUERY_REQUIRED|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION))))|E(_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)|INFO_(RAW|MIME(_(TYPE|ENCODING))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)))|ORCE_(GZIP|DEFLATE))|LIBXML_(XINCLUDE|N(SCLEAN|O(XMLDECL|BLANKS|NET|CDATA|E(RROR|MPTYTAG|NT)|WARNING))|COMPACT|D(TD(VALID|LOAD|ATTR)|OTTED_VERSION)|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)|VERSION|LOADED_VERSION))\\\\b\",\n              \"name\": \"support.constant.ext.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              },\n              \"match\": \"(\\\\\\\\)?\\\\bT_(RE(TURN|QUIRE(_ONCE)?)|G(OTO|LOBAL)|XOR_EQUAL|M(INUS_EQUAL|OD_EQUAL|UL_EQUAL|ETHOD_C|L_COMMENT)|B(REAK|OOL(_CAST|EAN_(OR|AND))|AD_CHARACTER)|S(R(_EQUAL)?|T(RING(_(CAST|VARNAME))?|A(RT_HEREDOC|TIC))|WITCH|L(_EQUAL)?)|HALT_COMPILER|N(S_(SEPARATOR|C)|UM_STRING|EW|AMESPACE)|C(HARACTER|O(MMENT|N(ST(ANT_ENCAPSED_STRING)?|CAT_EQUAL|TINUE))|URLY_OPEN|L(O(SE_TAG|NE)|ASS(_C)?)|A(SE|TCH))|T(RY|HROW)|I(MPLEMENTS|S(SET|_(GREATER_OR_EQUAL|SMALLER_OR_EQUAL|NOT_(IDENTICAL|EQUAL)|IDENTICAL|EQUAL))|N(STANCEOF|C(LUDE(_ONCE)?)?|T(_CAST|ERFACE)|LINE_HTML)|F)|O(R_EQUAL|BJECT_(CAST|OPERATOR)|PEN_TAG(_WITH_ECHO)?|LD_FUNCTION)|D(NUMBER|I(R|V_EQUAL)|O(C_COMMENT|UBLE_(C(OLON|AST)|ARROW)|LLAR_OPEN_CURLY_BRACES)?|E(C(LARE)?|FAULT))|U(SE|NSET(_CAST)?)|P(R(I(NT|VATE)|OTECTED)|UBLIC|LUS_EQUAL|AAMAYIM_NEKUDOTAYIM)|E(X(TENDS|IT)|MPTY|N(CAPSED_AND_WHITESPACE|D(SWITCH|_HEREDOC|IF|DECLARE|FOR(EACH)?|WHILE))|CHO|VAL|LSE(IF)?)|VAR(IABLE)?|F(I(NAL|LE)|OR(EACH)?|UNC(_C|TION))|WHI(TESPACE|LE)|L(NUMBER|I(ST|NE)|OGICAL_(XOR|OR|AND))|A(RRAY(_CAST)?|BSTRACT|S|ND_EQUAL))\\\\b\",\n              \"name\": \"support.constant.parser-token.php\"\n            },\n            {\n              \"comment\": \"In PHP, any identifier which is not a variable is taken to be a constant.\\nHowever, if there is no constant defined with the given name then a notice\\nis generated and the constant is assumed to have the value of its name.\",\n              \"match\": \"[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*\",\n              \"name\": \"constant.other.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-return-type\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.php\"\n            }\n          },\n          \"end\": \"(?=[{;])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"name\": \"support.type.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\barray\\\\b\",\n          \"name\": \"support.type.array.php\"\n        },\n        {\n          \"match\": \"\\\\b(?:bool|int|float|string|array|resource|mixed|arraykey|nonnull|dict|vec|keyset)\\\\b\",\n          \"name\": \"support.type.php\"\n        },\n        {\n          \"begin\": \"([A-Za-z_][A-Za-z0-9_]*)<\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"end\": \">\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-annotation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(shape\\\\()\",\n          \"end\": \"((,|\\\\.\\\\.\\\\.)?\\\\s*\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.key.php\"\n            }\n          },\n          \"name\": \"storage.type.shape.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#constants\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-annotation\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"function-arguments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n\\\\s*(&)?      # Reference\\n\\\\s*((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)  # The variable name\",\n          \"end\": \"(?xi)\\n\\\\s*(?=,|\\\\)|$) # A closing parentheses (end of argument list) or a comma\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(=)\",\n              \"end\": \"(?=,|\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#language\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"literal-collections\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(Vector|ImmVector|Set|ImmSet|Map|ImmMap|Pair)\\\\s*({)\",\n          \"end\": \"(})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"name\": \"meta.collection.literal.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9\\\\\\\\]+\\\\\\\\[a-z_][a-z0-9_]*\\\\s*\\\\()\",\n          \"comment\": \"Functions in a user-defined namespace (overrides any built-ins)\",\n          \"end\": \"(?=\\\\s*\\\\()\",\n          \"patterns\": [\n            {\n              \"include\": \"#user-function-call\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.php\"\n        },\n        {\n          \"begin\": \"(?i)(\\\\\\\\)?(?=\\\\b[a-z_][a-z_0-9]*\\\\s*\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          },\n          \"comment\": \"Root namespace function calls (built-in or user)\",\n          \"end\": \"(?=\\\\s*\\\\()\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\b(isset|unset|e(val|mpty)|list)(?=\\\\s*\\\\()\",\n              \"name\": \"support.function.construct.php\"\n            },\n            {\n              \"include\": \"#support\"\n            },\n            {\n              \"include\": \"#user-function-call\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<<<\\\\s*(\\\"?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\\\\1)\\\\s*$\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"end\": \"^(\\\\2)(?=;?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<<<\\\\s*('?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\\\\1)\\\\s*$\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"end\": \"^(\\\\2)(?=;?$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.nowdoc.php\"\n        }\n      ]\n    },\n    \"instantiation\": {\n      \"begin\": \"(?i)(new)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^$a-z0-9_\\\\\\\\])\",\n      \"patterns\": [\n        {\n          \"match\": \"(parent|static|self)(?=[^a-z0-9_])\",\n          \"name\": \"support.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"comment\": \"http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing\",\n      \"patterns\": [\n        {\n          \"comment\": \"Interpolating octal values e.g. \\\\01 or \\\\07.\",\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"comment\": \"Interpolating hex values e.g. \\\\x1 or \\\\xFF.\",\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{1,2}\",\n          \"name\": \"constant.numeric.hex.php\"\n        },\n        {\n          \"comment\": \"Escaped characters in double-quoted strings e.g. \\\\n or \\\\t.\",\n          \"match\": \"\\\\\\\\[nrt\\\\\\\\\\\\$\\\\\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"comment\": \"Interpolating expressions in double-quoted strings with {} e.g. {$x->y->z[0][1]}.\",\n          \"match\": \"(\\\\{\\\\$.*?\\\\})\",\n          \"name\": \"variable.other.php\"\n        },\n        {\n          \"comment\": \"Interpolating simple variables, e.g. $x, $x->y, $x[z] but not $x->y->z.\",\n          \"match\": \"(\\\\$[a-zA-Z_][a-zA-Z0-9_]*((->[a-zA-Z_][a-zA-Z0-9_]*)|(\\\\[[a-zA-Z0-9_]+\\\\]))?)\",\n          \"name\": \"variable.other.php\"\n        }\n      ]\n    },\n    \"invoke-call\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.php\"\n        }\n      },\n      \"match\": \"(?i)(\\\\$+)([a-z_][a-z_0-9]*)(?=\\\\s*\\\\()\",\n      \"name\": \"meta.function-call.invoke.php\"\n    },\n    \"interface\": {\n      \"begin\": \"^(?i)\\\\b(interface)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.php\"\n        }\n      },\n      \"name\": \"meta.interface.php\",\n      \"end\": \"(?=[;{])\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"\\\\b(extends)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          }\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#namespace\"\n        },\n        {\n          \"match\": \"(?i)[a-z0-9_]+\",\n          \"name\": \"entity.name.type.class.php\"\n        }\n      ]\n    },\n    \"language\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?=^\\\\s*<<)\",\n          \"end\": \"(?<=>>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#attributes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#xhp\"\n        },\n        {\n          \"include\": \"#interface\"\n        },\n        {\n          \"begin\": \"(?xi)\\n^\\\\s*\\n(type|newtype)\\n\\\\s+\\n([a-z0-9_]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.typedecl.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.typedecl.php\"\n            }\n          },\n          \"end\": \"(;)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.termination.expression.php\"\n            }\n          },\n          \"name\": \"meta.typedecl.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generics\"\n            },\n            {\n              \"match\": \"(=)\",\n              \"name\": \"keyword.operator.assignment.php\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(trait)\\\\s+([a-z0-9_]+)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.trait.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.php\"\n            }\n          },\n          \"end\": \"(?=[{])\",\n          \"name\": \"meta.trait.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generics\"\n            },\n            {\n              \"include\": \"#implements\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(?:^\\\\s*|\\\\s*)(namespace)\\\\b\\\\s+(?=([a-z0-9_\\\\\\\\]*\\\\s*($|[;{]|(\\\\/[\\\\/*])))|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.namespace.php\"\n            }\n          },\n          \"contentName\": \"entity.name.type.namespace.php\",\n          \"end\": \"(?i)(?=\\\\s*$|[^a-z0-9_\\\\\\\\])\",\n          \"name\": \"meta.namespace.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\",\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)\\\\s*\\\\b(use)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.use.php\"\n            }\n          },\n          \"end\": \"(?=;|(?:^\\\\s*$))\",\n          \"name\": \"meta.use.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"(?i)\\\\s*(?=[a-z_0-9\\\\\\\\])\",\n              \"end\": \"(?xi)\\n(?:\\n  (?:\\\\s*(as)\\\\b\\\\s*([a-z_0-9]*)\\\\s*(?=,|;|$))|\\n  (?=,|;|$)\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-as.php\"\n                },\n                \"2\": {\n                  \"name\": \"support.other.namespace.use-as.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#class-builtin\"\n                },\n                {\n                  \"begin\": \"(?i)\\\\s*(?=[\\\\\\\\a-z_0-9])\",\n                  \"end\": \"$|(?=[\\\\s,;])\",\n                  \"name\": \"support.other.namespace.use.php\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\\\\\\",\n                      \"name\": \"punctuation.separator.inheritance.php\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\s*,\\\\s*\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)^\\\\s*(abstract|final)?\\\\s*(abstract|final)?\\\\s*(class)\\\\s+([a-z0-9_]+)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.class.php\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.php\"\n            }\n          },\n          \"end\": \"(?=[;{])\",\n          \"name\": \"meta.class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generics\"\n            },\n            {\n              \"include\": \"#implements\"\n            },\n            {\n              \"begin\": \"(?i)(extends)\\\\s+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.extends.php\"\n                }\n              },\n              \"contentName\": \"meta.other.inherited-class.php\",\n              \"end\": \"(?i)(?=[^a-z_0-9\\\\\\\\])\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?i)(?=\\\\\\\\?[a-z_0-9]+\\\\\\\\)\",\n                  \"end\": \"(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.other.inherited-class.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#class-builtin\"\n                },\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_][a-z_0-9]*\",\n                  \"name\": \"entity.other.inherited-class.php\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.php\"\n            }\n          },\n          \"match\": \"\\\\s*\\\\b((break|c(ase|ontinue)|d(e(clare|fault)|o)|e(lse|nd(declare|for(each)?|switch|while))|for(each)?|if|return|switch|use|while))\\\\b\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b((?:require|include)(?:_once)?)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|;|$)\",\n          \"name\": \"meta.include.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(catch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.catch.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.catch.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            },\n            {\n              \"match\": \"(?xi)\\n([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)                 # Exception class\\n((?:\\\\s*\\\\|\\\\s*[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)*) # Optional additional exception classes\\n\\\\s*\\n((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)           # Variable\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.exception.php\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n                      \"name\": \"support.class.exception.php\"\n                    },\n                    {\n                      \"match\": \"\\\\|\",\n                      \"name\": \"punctuation.separator.delimiter.php\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"variable.other.php\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.variable.php\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(catch|try|throw|exception|finally)\\\\b\",\n          \"name\": \"keyword.control.exception.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(function)\\\\s*(&\\\\s*)?(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            }\n          },\n          \"end\": \"\\\\{|\\\\)\",\n          \"name\": \"meta.function.closure.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.begin.php\"\n                }\n              },\n              \"contentName\": \"meta.function.arguments.php\",\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-arguments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?i)(use)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.function.use.php\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.php\"\n                }\n              },\n              \"end\": \"(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.reference.php\"\n                    },\n                    \"2\": {\n                      \"name\": \"variable.other.php\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.variable.php\"\n                    }\n                  },\n                  \"match\": \"(?:\\\\s*(&))?\\\\s*((\\\\$+)[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\\\s*(?=,|\\\\))\",\n                  \"name\": \"meta.function.closure.use.php\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n\\\\s*((?:(?:final|abstract|public|private|protected|static|async)\\\\s+)*)\\n(function)\\n(?:\\\\s+|(\\\\s*&\\\\s*))\\n(?:\\n  (__(?:call|construct|destruct|get|set|isset|unset|tostring|clone|set_state|sleep|wakeup|autoload|invoke|callStatic|dispose|disposeAsync)(?=[^a-zA-Z0-9_\\\\x7f-\\\\xff]))\\n  |\\n  ([a-zA-Z0-9_]+)\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"final|abstract|public|private|protected|static|async\",\n                  \"name\": \"storage.modifier.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"support.function.magic.php\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"6\": {\n              \"name\": \"meta.function.generics.php\"\n            }\n          },\n          \"end\": \"(?=[{;])\",\n          \"name\": \"meta.function.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#generics\"\n            },\n            {\n              \"begin\": \"(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.begin.php\"\n                }\n              },\n              \"end\": \"(?=\\\\))\",\n              \"contentName\": \"meta.function.arguments.php\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-arguments\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.php\"\n                }\n              },\n              \"end\": \"(?=[{;])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-return-type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#invoke-call\"\n        },\n        {\n          \"begin\": \"(?xi)\\n\\\\s*\\n  (?=\\n    [a-z_0-9$\\\\\\\\]+(::)\\n    (?:\\n      ([a-z_][a-z_0-9]*)\\\\s*\\\\(\\n      |\\n      ((\\\\$+)[a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n      |\\n      ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n    )?\\n  )\",\n          \"end\": \"(?x)\\n(::)\\n(?:\\n  ([A-Za-z_][A-Za-z_0-9]*)\\\\s*\\\\(\\n  |\\n  ((\\\\$+)[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n  |\\n  ([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"meta.function-call.static.php\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(self|static|parent)\\\\b\",\n              \"name\": \"support.type.php\"\n            },\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.array.end.php\"\n            }\n          },\n          \"match\": \"(array)(\\\\()(\\\\))\",\n          \"name\": \"meta.array.empty.php\"\n        },\n        {\n          \"begin\": \"(array)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.php\"\n            }\n          },\n          \"match\": \"(?i)\\\\s*\\\\(\\\\s*(array|real|double|float|int(eger)?|bool(ean)?|string|object|binary|unset|arraykey|nonnull|dict|vec|keyset)\\\\s*\\\\)\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|clone|var|function|interface|trait|parent|self|object|arraykey|nonnull|dict|vec|keyset)\\\\b\",\n          \"name\": \"support.type.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(global|abstract|const|extends|implements|final|p(r(ivate|otected)|ublic)|static)\\\\b\",\n          \"name\": \"storage.modifier.php\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.expression.php\"\n        },\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"match\": \"\\\\.=?\",\n          \"name\": \"keyword.operator.string.php\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"==>\",\n          \"name\": \"keyword.operator.lambda.php\"\n        },\n        {\n          \"match\": \"\\\\|>\",\n          \"name\": \"keyword.operator.pipe.php\"\n        },\n        {\n          \"match\": \"(@)\",\n          \"name\": \"keyword.operator.error-control.php\"\n        },\n        {\n          \"match\": \"(!==|!=|===|==)\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"=|\\\\+=|\\\\-=|\\\\*=|/=|%=|&=|\\\\|=|\\\\^=|<<=|>>=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"(<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.php\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.php\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|/|%)\",\n          \"name\": \"keyword.operator.arithmetic.php\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.php\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(as|is)\\\\b\\\\s+(?=[\\\\\\\\$a-z_])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.php\"\n            }\n          },\n          \"end\": \"(?=[^\\\\\\\\$A-Za-z_0-9])\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#variable-name\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(is|as)\\\\b\",\n          \"name\": \"keyword.operator.type.php\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"match\": \"<<|>>|~|\\\\^|&|\\\\|\",\n          \"name\": \"keyword.operator.bitwise.php\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#literal-collections\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.begin.php\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"namespace\": {\n      \"begin\": \"(?i)((namespace)|[a-z0-9_]+)?(\\\\\\\\)(?=.*?[^a-z_0-9\\\\\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.namespace.php\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[a-z0-9_]*[^a-z0-9_\\\\\\\\])\",\n      \"name\": \"support.other.namespace.php\",\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.namespace.php\",\n          \"match\": \"(?i)[a-z0-9_]+(?=\\\\\\\\)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\\\\\)\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)\\\\b\",\n      \"name\": \"constant.numeric.php\"\n    },\n    \"object\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(->)(\\\\$?\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"meta.function-call.object.php\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?x)\\n(->)\\n  (?:\\n    ([A-Za-z_][A-Za-z_0-9]*)\\\\s*\\\\(\\n    |\\n    ((\\\\$+)?[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\n  )?\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"&(?=\\\\s*\\\\$)\",\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        {\n          \"begin\": \"(array)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n\\\\s*\\n(?=\\n  [a-z_0-9\\\\\\\\]+(::)\\n  ([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\\n)\",\n          \"end\": \"(?i)(::)([a-z_\\\\x{7f}-\\\\x{ff}][a-z0-9_\\\\x{7f}-\\\\x{ff}]*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"php_doc\": {\n      \"patterns\": [\n        {\n          \"comment\": \"PHPDocumentor only recognises lines with an asterisk as the first non-whitespaces character\",\n          \"match\": \"^(?!\\\\s*\\\\*).*$\\\\n?\",\n          \"name\": \"invalid.illegal.missing-asterisk.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.wrong-access-type.phpdoc.php\"\n            }\n          },\n          \"match\": \"^\\\\s*\\\\*\\\\s*(@access)\\\\s+((public|private|protected)|(.+))\\\\s*$\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"2\": {\n              \"name\": \"markup.underline.link.php\"\n            }\n          },\n          \"match\": \"(@xlink)\\\\s+(.+)\\\\s*$\"\n        },\n        {\n          \"match\": \"\\\\@(a(bstract|uthor)|c(ategory|opyright)|example|global|internal|li(cense|nk)|pa(ckage|ram)|return|s(ee|ince|tatic|ubpackage)|t(hrows|odo)|v(ar|ersion)|uses|deprecated|final|ignore)\\\\b\",\n          \"name\": \"keyword.other.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"match\": \"\\\\{(@(link)).+?\\\\}\",\n          \"name\": \"meta.tag.inline.phpdoc.php\"\n        }\n      ]\n    },\n    \"regex-double-quoted\": {\n      \"begin\": \"(?x)\\n\\\"/ (?=(\\\\\\\\.|[^\\\"/])++/[imsxeADSUXu]*\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.double-quoted.php\",\n      \"patterns\": [\n        {\n          \"comment\": \"Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)\",\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"(\\\\{)\\\\d+(,\\\\d+)?(\\\\})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"regex-single-quoted\": {\n      \"begin\": \"(?x)\\n'/ (?=(\\\\\\\\.|[^'/])++/[imsxeADSUXu]*')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.single-quoted.php\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"(\\\\{)\\\\d+(,\\\\d+)?(\\\\})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"comment\": \"Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)\",\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"comment\": \"Escaped from the PHP string – there can also be 2 backslashes (since 1 will escape the first)\",\n          \"match\": \"\\\\\\\\{1,2}[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n              \"name\": \"constant.character.escape.php\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"sql-string-double-quoted\": {\n      \"begin\": \"\\\"\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.sql.php\",\n      \"patterns\": [\n        {\n          \"comment\": \"Open parens cause the next escaped character to not be captured as an\\nescape character. Example: $x = \\\"SELECT (\\\")\\\";\",\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        },\n        {\n          \"match\": \"#(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$\\\\n?)\",\n          \"name\": \"comment.line.number-sign.sql\"\n        },\n        {\n          \"match\": \"--(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$\\\\n?)\",\n          \"name\": \"comment.line.double-dash.sql\"\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\\\\"`']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"comment\": \"Unclosed strings must be captured to avoid them eating the remainder of the PHP script\\nSample case: $sql = \\\"SELECT * FROM bar WHERE foo = '\\\" . $variable . \\\"'\\\"\",\n          \"match\": \"'(?=((\\\\\\\\')|[^'\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.single.unclosed.sql\"\n        },\n        {\n          \"comment\": \"Unclosed strings must be captured to avoid them eating the remainder of the PHP script\\nSample case: $sql = \\\"SELECT * FROM bar WHERE foo = '\\\" . $variable . \\\"'\\\"\",\n          \"match\": \"`(?=((\\\\\\\\`)|[^`\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"sql-string-single-quoted\": {\n      \"begin\": \"'\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.sql.php\",\n      \"patterns\": [\n        {\n          \"comment\": \"Open parens cause the next escaped character to not be captured as an\\nescape character. Example: $x = 'SELECT (')';\",\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        },\n        {\n          \"match\": \"#(\\\\\\\\'|[^'])*(?='|$\\\\n?)\",\n          \"name\": \"comment.line.number-sign.sql\"\n        },\n        {\n          \"match\": \"--(\\\\\\\\'|[^'])*(?='|$\\\\n?)\",\n          \"name\": \"comment.line.double-dash.sql\"\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\'`\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"comment\": \"Unclosed strings must be captured to avoid them eating the remainder of the PHP script\\nSample case: $sql = \\\"SELECT * FROM bar WHERE foo = '\\\" . $variable . \\\"'\\\"\",\n          \"match\": \"`(?=((\\\\\\\\`)|[^`'])*('|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"comment\": \"Unclosed strings must be captured to avoid them eating the remainder of the PHP script\\nSample case: $sql = \\\"SELECT * FROM bar WHERE foo = '\\\" . $variable . \\\"'\\\"\",\n          \"match\": \"\\\"(?=((\\\\\\\\\\\")|[^\\\"'])*('|$))\",\n          \"name\": \"string.quoted.double.unclosed.sql\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"comment\": \"This contentName is just to allow the usage of “select scope” to select the string contents first, then the string with quotes\",\n      \"contentName\": \"meta.string-contents.quoted.double.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"meta.string-contents.quoted.single.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-double-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#regex-single-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\bapc_(s(tore|ma_info)|c(ompile_file|lear_cache|a(s|che_info))|inc|de(c|fine_constants|lete(_file)?)|exists|fetch|load_constants|add|bin_(dump(file)?|load(file)?))\\\\b\",\n          \"name\": \"support.function.apc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(huffle|izeof|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|p(os|rev)|e(nd|ach|xtract)|k(sort|ey|rsort)|list|a(sort|r(sort|ray(_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|place(_recursive)?|verse)|and)|m(ultisort|erge(_recursive)?|ap)))?))|r(sort|eset|ange))\\\\b\",\n          \"name\": \"support.function.array.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(how_source|ys_getloadavg|leep)|highlight_(string|file)|con(stant|nection_(status|timeout|aborted))|time_(sleep_until|nanosleep)|ignore_user_abort|d(ie|efine(d)?)|u(sleep|n(iqid|pack))|__halt_compiler|p(hp_(strip_whitespace|check_syntax)|ack)|e(val|xit)|get_browser)\\\\b\",\n          \"name\": \"support.function.basic_functions.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbc(s(cale|ub|qrt)|comp|div|pow(mod)?|add|m(od|ul))\\\\b\",\n          \"name\": \"support.function.bcmath.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbz(c(ompress|lose)|open|decompress|err(str|no|or)|flush|write|read)\\\\b\",\n          \"name\": \"support.function.bz2.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(GregorianToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|jdto(unix|jewish)|easter_da(ys|te)|J(ulianToJD|ewishToJD|D(MonthName|To(Gregorian|Julian|French)|DayOfWeek))|FrenchToJD)\\\\b\",\n          \"name\": \"support.function.calendar.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(c(lass_(exists|alias)|all_user_method(_array)?)|trait_exists|i(s_(subclass_of|a)|nterface_exists)|__autoload|property_exists|get_(c(lass(_(vars|methods))?|alled_class)|object_vars|declared_(classes|traits|interfaces)|parent_class)|method_exists)\\\\b\",\n          \"name\": \"support.function.classobj.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(com_(set|create_guid|i(senum|nvoke)|pr(int_typeinfo|op(set|put|get))|event_sink|load(_typelib)?|addref|release|get(_active_object)?|message_pump)|variant_(s(ub|et(_type)?)|n(ot|eg)|c(a(st|t)|mp)|i(nt|div|mp)|or|d(iv|ate_(to_timestamp|from_timestamp))|pow|eqv|fix|a(nd|dd|bs)|round|get_type|xor|m(od|ul)))\\\\b\",\n          \"name\": \"support.function.com.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bctype_(space|cntrl|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit)\\\\b\",\n          \"name\": \"support.function.ctype.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bcurl_(setopt(_array)?|c(opy_handle|lose)|init|e(rr(no|or)|xec)|version|getinfo|multi_(select|close|in(it|fo_read)|exec|add_handle|remove_handle|getcontent))\\\\b\",\n          \"name\": \"support.function.curl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(str(totime|ptime|ftime)|checkdate|time(zone_(name_(from_abbr|get)|transitions_get|identifiers_list|o(pen|ffset_get)|version_get|location_get|abbreviations_list))?|idate|date(_(su(n(set|_info|rise)|b)|create(_from_format)?|time(stamp_(set|get)|zone_(set|get)|_set)|i(sodate_set|nterval_(create_from_date_string|format))|offset_get|d(iff|efault_timezone_(set|get)|ate_set)|parse(_from_format)?|format|add|get_last_errors|modify))?|localtime|g(et(timeofday|date)|m(strftime|date|mktime))|m(icrotime|ktime))\\\\b\",\n          \"name\": \"support.function.datetime.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdba_(sync|handlers|nextkey|close|insert|op(timize|en)|delete|popen|exists|key_split|f(irstkey|etch)|list|replace)\\\\b\",\n          \"name\": \"support.function.dba.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdbx_(sort|c(o(nnect|mpare)|lose)|e(scape_string|rror)|query|fetch_row)\\\\b\",\n          \"name\": \"support.function.dbx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(scandir|c(h(dir|root)|losedir)|opendir|dir|re(winddir|addir)|getcwd)\\\\b\",\n          \"name\": \"support.function.dir.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdotnet_load\\\\b\",\n          \"name\": \"support.function.dotnet.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\beio_(s(y(nc(_file_range|fs)?|mlink)|tat(vfs)?|e(ndfile|t_m(in_parallel|ax_(idle|p(oll_(time|reqs)|arallel)))|ek))|n(threads|op|pending|re(qs|ady))|c(h(own|mod)|ustom|lose|ancel)|truncate|init|open|dup2|u(nlink|time)|poll|event_loop|f(s(ync|tat(vfs)?)|ch(own|mod)|truncate|datasync|utime|allocate)|write|l(stat|ink)|r(e(name|a(d(dir|link|ahead)?|lpath))|mdir)|g(et_(event_stream|last_error)|rp(_(cancel|limit|add))?)|mk(nod|dir)|busy)\\\\b\",\n          \"name\": \"support.function.eio.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\benchant_(dict_(s(tore_replacement|uggest)|check|is_in_session|describe|quick_check|add_to_(session|personal)|get_error)|broker_(set_ordering|init|d(ict_exists|escribe)|free(_dict)?|list_dicts|request_(dict|pwl_dict)|get_error))\\\\b\",\n          \"name\": \"support.function.enchant.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(plit(i)?|ql_regcase)|ereg(i(_replace)?|_replace)?)\\\\b\",\n          \"name\": \"support.function.ereg.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(set_e(rror_handler|xception_handler)|trigger_error|debug_(print_backtrace|backtrace)|user_error|error_(log|reporting|get_last)|restore_e(rror_handler|xception_handler))\\\\b\",\n          \"name\": \"support.function.errorfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(hell_exec|ystem)|p(assthru|roc_(nice|close|terminate|open|get_status))|e(scapeshell(cmd|arg)|xec))\\\\b\",\n          \"name\": \"support.function.exec.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(exif_(t(humbnail|agname)|imagetype|read_data)|read_exif_data)\\\\b\",\n          \"name\": \"support.function.exif.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(ymlink|tat|et_file_buffer)|c(h(own|grp|mod)|opy|learstatcache)|t(ouch|empnam|mpfile)|is_(dir|uploaded_file|executable|file|writ(eable|able)|link|readable)|d(i(sk(_(total_space|free_space)|freespace)|rname)|elete)|u(nlink|mask)|p(close|open|a(thinfo|rse_ini_(string|file)))|f(s(canf|tat|eek)|nmatch|close|t(ell|runcate)|ile(size|ctime|type|inode|owner|_(put_contents|exists|get_contents)|perms|atime|group|mtime)?|open|p(ut(s|csv)|assthru)|eof|flush|write|lock|read|get(s(s)?|c(sv)?))|l(stat|ch(own|grp)|ink(info)?)|r(e(name|wind|a(d(file|link)|lpath(_cache_(size|get))?))|mdir)|glob|m(ove_uploaded_file|kdir)|basename)\\\\b\",\n          \"name\": \"support.function.file.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\\\b\",\n          \"name\": \"support.function.fileinfo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfilter_(has_var|i(nput(_array)?|d)|var(_array)?|list)\\\\b\",\n          \"name\": \"support.function.filter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(c(all_user_func(_array)?|reate_function)|unregister_tick_function|f(orward_static_call(_array)?|unc(tion_exists|_(num_args|get_arg(s)?)))|register_(shutdown_function|tick_function)|get_defined_functions)\\\\b\",\n          \"name\": \"support.function.funchand.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ngettext|textdomain|d(ngettext|c(ngettext|gettext)|gettext)|gettext|bind(textdomain|_textdomain_codeset))\\\\b\",\n          \"name\": \"support.function.gettext.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bgmp_(s(can(1|0)|trval|ign|ub|etbit|qrt(rem)?)|hamdist|ne(g|xtprime)|c(om|lrbit|mp)|testbit|in(tval|it|vert)|or|div(_(q(r)?|r)|exact)?|jacobi|p(o(pcount|w(m)?)|erfect_square|rob_prime)|fact|legendre|a(nd|dd|bs)|random|gcd(ext)?|xor|m(od|ul))\\\\b\",\n          \"name\": \"support.function.gmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bhash(_(hmac(_file)?|copy|init|update(_(stream|file))?|pbkdf2|fi(nal|le)|algos))?\\\\b\",\n          \"name\": \"support.function.hash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_(s(upport|end_(st(atus|ream)|content_(type|disposition)|data|file|last_modified))|head|negotiate_(c(harset|ontent_type)|language)|c(hunked_decode|ache_(etag|last_modified))|throttle|inflate|d(eflate|ate)|p(ost_(data|fields)|ut_(stream|data|file)|ersistent_handles_(c(ount|lean)|ident)|arse_(headers|cookie|params|message))|re(direct|quest(_(method_(name|unregister|exists|register)|body_encode))?)|get(_request_(headers|body(_stream)?))?|match_(etag|request_header|modified)|build_(str|cookie|url))|ob_(inflatehandler|deflatehandler|etaghandler))\\\\b\",\n          \"name\": \"support.function.http.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(iconv(_(s(tr(pos|len|rpos)|ubstr|et_encoding)|get_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\\\b\",\n          \"name\": \"support.function.iconv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\biis_(s(t(op_serv(ice|er)|art_serv(ice|er))|et_(s(cript_map|erver_rights)|dir_security|app_settings))|add_server|remove_server|get_(s(cript_map|erv(ice_state|er_(rights|by_(comment|path))))|dir_security))\\\\b\",\n          \"name\": \"support.function.iisfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(i(ptc(parse|embed)|mage(s(y|tring(up)?|et(style|t(hickness|ile)|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|reate(truecolor|from(string|jpeg|png|wbmp|g(if|d(2(part)?)?)|x(pm|bm)))?)|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|2wbmp|d(estroy|ashedline)|jpeg|_type_to_(extension|mime_type)|p(s(slantfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alettecopy)|ellipse|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width))|wbmp|l(ine|oadfont|ayereffect)|a(ntialias|lphablending|rc)|r(otate|ectangle)|g(if|d(2)?|ammacorrect|rab(screen|window))|xbm))|jpeg2wbmp|png2wbmp|g(d_info|etimagesize(fromstring)?))\\\\b\",\n          \"name\": \"support.function.image.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(ys_get_temp_dir|et_(time_limit|include_path|magic_quotes_runtime))|ini_(set|alter|restore|get(_all)?)|zend_(thread_id|version|logo_guid)|dl|p(hp(credits|info|_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|version)|utenv)|extension_loaded|version_compare|assert(_options)?|restore_include_path|g(c_(collect_cycles|disable|enable(d)?)|et(opt|_(c(urrent_user|fg_var)|include(d_files|_path)|defined_constants|extension_funcs|loaded_extensions|required_files|magic_quotes_(runtime|gpc))|env|lastmod|rusage|my(inode|uid|pid|gid)))|m(emory_get_(usage|peak_usage)|a(in|gic_quotes_runtime)))\\\\b\",\n          \"name\": \"support.function.info.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bibase_(se(t_event_handler|rv(ice_(detach|attach)|er_info))|n(um_(params|fields)|ame_result)|c(o(nnect|mmit(_ret)?)|lose)|trans|d(elete_user|rop_db|b_info)|p(connect|aram_info|repare)|e(rr(code|msg)|xecute)|query|f(ield_info|etch_(object|assoc|row)|ree_(event_handler|query|result))|wait_event|a(dd_user|ffected_rows)|r(ollback(_ret)?|estore)|gen_id|m(odify_user|aintain_db)|b(lob_(c(lose|ancel|reate)|i(nfo|mport)|open|echo|add|get)|ackup))\\\\b\",\n          \"name\": \"support.function.interbase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(n(ormalizer_(normalize|is_normalized)|umfmt_(set_(symbol|text_attribute|pattern|attribute)|create|parse(_currency)?|format(_currency)?|get_(symbol|text_attribute|pattern|error_(code|message)|locale|attribute)))|collator_(s(ort(_with_sort_keys)?|et_(strength|attribute))|c(ompare|reate)|asort|get_(s(trength|ort_key)|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|i(ntl_(is_failure|error_name|get_error_(code|message))|dn_to_(u(nicode|tf8)|ascii))|datefmt_(set_(calendar|timezone(_id)?|pattern|lenient)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|compose|parse|filter_matches|lookup|accept_from_http|get_(script|d(isplay_(script|name|variant|language|region)|efault)|primary_language|keywords|all_variants|region))|resourcebundle_(c(ount|reate)|locales|get(_error_(code|message))?)|grapheme_(s(tr(str|i(str|pos)|pos|len|r(ipos|pos))|ubstr)|extract)|msgfmt_(set_pattern|create|parse(_message)?|format(_message)?|get_(pattern|error_(code|message)|locale)))\\\\b\",\n          \"name\": \"support.function.intl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bjson_(decode|encode|last_error)\\\\b\",\n          \"name\": \"support.function.json.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bldap_(s(tart_tls|ort|e(t_(option|rebind_proc)|arch)|asl_bind)|next_(entry|attribute|reference)|c(o(n(nect|trol_paged_result(_response)?)|unt_entries|mpare)|lose)|t61_to_8859|d(n2ufn|elete)|8859_to_t61|unbind|parse_re(sult|ference)|e(rr(no|2str|or)|xplode_dn)|f(irst_(entry|attribute|reference)|ree_result)|list|add|re(name|ad)|get_(option|dn|entries|values(_len)?|attributes)|mod(ify|_(del|add|replace))|bind)\\\\b\",\n          \"name\": \"support.function.ldap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\\\b\",\n          \"name\": \"support.function.libxml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ezmlm_hash|mail)\\\\b\",\n          \"name\": \"support.function.mail.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(in(h)?|qrt|rand)|h(ypot|exdec)|c(os(h)?|eil)|tan(h)?|is_(nan|infinite|finite)|octdec|de(c(hex|oct|bin)|g2rad)|p(i|ow)|exp(m1)?|f(loor|mod)|l(cg_value|og(1(p|0))?)|a(sin(h)?|cos(h)?|tan(h|2)?|bs)|r(ound|a(nd|d2deg))|getrandmax|m(t_(srand|rand|getrandmax)|in|ax)|b(indec|ase_convert))\\\\b\",\n          \"name\": \"support.function.math.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmb_(s(tr(str|cut|to(upper|lower)|i(str|pos|mwidth)|pos|width|len|r(chr|i(chr|pos)|pos))|ubst(itute_character|r(_count)?)|plit|end_mail)|http_(input|output)|c(heck_encoding|onvert_(case|encoding|variables|kana))|internal_encoding|output_handler|de(code_(numericentity|mimeheader)|tect_(order|encoding))|p(arse_str|referred_mime_name)|e(ncod(ing_aliases|e_(numericentity|mimeheader))|reg(i(_replace)?|_(search(_(setpos|init|pos|regs|get(pos|regs)))?|replace(_callback)?|match))?)|l(ist_encodings|anguage)|regex_(set_options|encoding)|get_info)\\\\b\",\n          \"name\": \"support.function.mbstring.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bm(crypt_(c(fb|reate_iv|bc)|ofb|decrypt|e(nc(_(self_test|is_block_(algorithm(_mode)?|mode)|get_(supported_key_sizes|iv_size|key_size|algorithms_name|modes_name|block_size))|rypt)|cb)|list_(algorithms|modes)|ge(neric(_(init|deinit|end))?|t_(cipher_name|iv_size|key_size|block_size))|module_(self_test|close|is_block_(algorithm(_mode)?|mode)|open|get_(supported_key_sizes|algo_(key_size|block_size))))|decrypt_generic)\\\\b\",\n          \"name\": \"support.function.mcrypt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmemcache_debug\\\\b\",\n          \"name\": \"support.function.memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\\\b\",\n          \"name\": \"support.function.mhash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbson_(decode|encode)\\\\b\",\n          \"name\": \"support.function.mongo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysql_(s(tat|e(t_charset|lect_db))|num_(fields|rows)|c(onnect|l(ient_encoding|ose)|reate_db)|t(hread_id|ablename)|in(sert_id|fo)|d(ata_seek|rop_db|b_(name|query))|unbuffered_query|p(connect|ing)|e(scape_string|rr(no|or))|query|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|lengths|a(ssoc|rray)|row)|ree_result)|list_(tables|dbs|processes|fields)|affected_rows|re(sult|al_escape_string)|get_(server_info|host_info|client_info|proto_info))\\\\b\",\n          \"name\": \"support.function.mysql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqli_(s(sl_set|t(ore_result|at|mt_(s(tore_result|end_long_data)|next_result|close|init|data_seek|prepare|execute|f(etch|ree_result)|attr_(set|get)|res(ult_metadata|et)|get_(warnings|result)|more_results|bind_(param|result)))|e(nd_(query|long_data)|t_(charset|opt|local_infile_(handler|default))|lect_db)|lave_query)|next_result|c(ha(nge_user|racter_set_name)|o(nnect|mmit)|l(ient_encoding|ose))|thread_safe|init|options|d(isable_r(pl_parse|eads_from_master)|ump_debug_info|ebug|ata_seek)|use_result|p(ing|oll|aram_count|repare)|e(scape_string|nable_r(pl_parse|eads_from_master)|xecute|mbedded_server_(start|end))|kill|query|f(ield_seek|etch(_(object|field(s|_direct)?|a(ssoc|ll|rray)|row))?|ree_result)|autocommit|r(ollback|pl_(p(arse_enabled|robe)|query_type)|e(port|fresh|a(p_async_query|l_(connect|escape_string|query))))|get_(c(harset|onnection_stats|lient_(stats|info|version)|ache_stats)|warnings|metadata)|m(ore_results|ulti_query|aster_query)|bind_(param|result))\\\\b\",\n          \"name\": \"support.function.mysqli.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_memcache_(set|get_config)\\\\b\",\n          \"name\": \"support.function.mysqlnd-memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_ms_(set_(user_pick_server|qos)|query_is_select|get_(stats|last_(used_connection|gtid))|match_wild)\\\\b\",\n          \"name\": \"support.function.mysqlnd-ms.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|c(ore_stats|ache_info)|query_trace_log|available_handlers))\\\\b\",\n          \"name\": \"support.function.mysqlnd-qc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_uh_(set_(statement_proxy|connection_proxy)|convert_to_mysqlnd)\\\\b\",\n          \"name\": \"support.function.mysqlnd-uh.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(yslog|ocket_(set_(timeout|blocking)|get_status)|et(cookie|rawcookie))|h(ttp_response_code|eader(s_(sent|list)|_re(gister_callback|move))?)|c(heckdnsrr|loselog)|i(net_(ntop|pton)|p2long)|openlog|d(ns_(check_record|get_(record|mx))|efine_syslog_variables)|pfsockopen|fsockopen|long2ip|get(servby(name|port)|host(name|by(name(l)?|addr))|protobyn(umber|ame)|mxrr))\\\\b\",\n          \"name\": \"support.function.network.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bnsapi_(virtual|re(sponse_headers|quest_headers))\\\\b\",\n          \"name\": \"support.function.nsapi.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(deaggregate|aggregat(ion_info|e(_(info|properties(_by_(list|regexp))?|methods(_by_(list|regexp))?))?))\\\\b\",\n          \"name\": \"support.function.objaggregation.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\boci(s(tatementtype|e(tprefetch|rverversion)|avelob(file)?)|n(umcols|ew(c(ollection|ursor)|descriptor)|logon)|c(o(l(umn(s(cale|ize)|name|type(raw)?|isnull|precision)|l(size|trim|a(ssign(elem)?|ppend)|getelem|max))|mmit)|loselob|ancel)|internaldebug|definebyname|_(s(tatement_type|e(t_(client_i(nfo|dentifier)|prefetch|edition|action|module_name)|rver_version))|n(um_(fields|rows)|ew_(c(o(nnect|llection)|ursor)|descriptor))|c(o(nnect|mmit)|l(ient_version|ose)|ancel)|internal_debug|define_by_name|p(connect|a(ssword_change|rse))|e(rror|xecute)|f(ield_(s(cale|ize)|name|type(_raw)?|is_null|precision)|etch(_(object|a(ssoc|ll|rray)|row))?|ree_(statement|descriptor))|lob_(copy|is_equal)|r(ollback|esult)|bind_(array_by_name|by_name))|p(logon|arse)|e(rror|xecute)|f(etch(statement|into)?|ree(statement|c(ollection|ursor)|desc))|write(temporarylob|lobtofile)|lo(adlob|go(n|ff))|r(o(wcount|llback)|esult)|bindbyname)\\\\b\",\n          \"name\": \"support.function.oci8.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bopenssl_(s(ign|eal)|c(sr_(sign|new|export(_to_file)?|get_(subject|public_key))|ipher_iv_length)|open|d(h_compute_key|igest|ecrypt)|p(ublic_(decrypt|encrypt)|k(cs(12_(export(_to_file)?|read)|7_(sign|decrypt|encrypt|verify))|ey_(new|export(_to_file)?|free|get_(details|p(ublic|rivate))))|rivate_(decrypt|encrypt))|e(ncrypt|rror_string)|verify|free_key|random_pseudo_bytes|get_(cipher_methods|p(ublickey|rivatekey)|md_methods)|x509_(check(_private_key|purpose)|parse|export(_to_file)?|free|read))\\\\b\",\n          \"name\": \"support.function.openssl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(o(utput_(add_rewrite_var|reset_rewrite_vars)|b_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|g(zhandler|et_(status|c(ontents|lean)|flush|le(ngth|vel)))))|flush)\\\\b\",\n          \"name\": \"support.function.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpassword_(hash|needs_rehash|verify|get_info)\\\\b\",\n          \"name\": \"support.function.password.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpcntl_(s(ig(nal(_dispatch)?|timedwait|procmask|waitinfo)|etpriority)|exec|fork|w(stopsig|termsig|if(s(topped|ignaled)|exited)|exitstatus|ait(pid)?)|alarm|getpriority)\\\\b\",\n          \"name\": \"support.function.pcntl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpg_(se(nd_(prepare|execute|query(_params)?)|t_(client_encoding|error_verbosity)|lect)|host|num_(fields|rows)|c(o(n(nect(ion_(status|reset|busy))?|vert)|py_(to|from))|l(ient_encoding|ose)|ancel_query)|t(ty|ra(nsaction_status|ce))|insert|options|d(elete|bname)|u(n(trace|escape_bytea)|pdate)|p(connect|ing|ort|ut_line|arameter_status|repare)|e(scape_(string|identifier|literal|bytea)|nd_copy|xecute)|version|query(_params)?|f(ield_(size|n(um|ame)|t(ype(_oid)?|able)|is_null|prtlen)|etch_(object|a(ssoc|ll(_columns)?|rray)|r(ow|esult))|ree_result)|l(o_(seek|c(lose|reate)|tell|import|open|unlink|export|write|read(_all)?)|ast_(notice|oid|error))|affected_rows|result_(s(tatus|eek)|error(_field)?)|get_(notify|pid|result)|meta_data)\\\\b\",\n          \"name\": \"support.function.pgsql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(virtual|apache_(setenv|note|child_terminate|lookup_uri|re(s(ponse_headers|et_timeout)|quest_headers)|get(_(version|modules)|env))|getallheaders)\\\\b\",\n          \"name\": \"support.function.php_apache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdom_import_simplexml\\\\b\",\n          \"name\": \"support.function.php_dom.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bftp_(s(sl_connect|ystype|i(te|ze)|et_option)|n(list|b_(continue|put|f(put|get)|get))|c(h(dir|mod)|onnect|dup|lose)|delete|p(ut|wd|asv)|exec|quit|f(put|get)|login|alloc|r(ename|aw(list)?|mdir)|get(_option)?|m(dtm|kdir))\\\\b\",\n          \"name\": \"support.function.php_ftp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bimap_(s(can(mailbox)?|tatus|ort|ubscribe|e(t(_quota|flag_full|acl)|arch)|avebody)|header(s|info)?|num_(recent|msg)|c(heck|l(ose|earflag_full)|reate(mailbox)?)|t(hread|imeout)|open|delete(mailbox)?|8bit|u(n(subscribe|delete)|tf(7_(decode|encode)|8)|id)|ping|e(rrors|xpunge)|qprint|fetch(structure|header|text|_overview|mime|body)|l(sub|ist(s(can|ubscribed)|mailbox)?|ast_error)|a(ppend|lerts)|r(e(name(mailbox)?|open)|fc822_(parse_(headers|adrlist)|write_address))|g(c|et(subscribed|_quota(root)?|acl|mailboxes))|m(sgno|ime_header_decode|ail(_(co(py|mpose)|move)|boxmsginfo)?)|b(inary|ody(struct)?|ase64))\\\\b\",\n          \"name\": \"support.function.php_imap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmssql_(select_db|n(um_(fields|rows)|ext_result)|c(onnect|lose)|init|data_seek|pconnect|execute|query|f(ield_(seek|name|type|length)|etch_(object|field|a(ssoc|rray)|row|batch)|ree_(statement|result))|r(ows_affected|esult)|g(uid_string|et_last_message)|min_(error_severity|message_severity)|bind)\\\\b\",\n          \"name\": \"support.function.php_mssql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bodbc_(s(tatistics|pecialcolumns|etoption)|n(um_(fields|rows)|ext_result)|c(o(nnect|lumn(s|privileges)|mmit)|ursor|lose(_all)?)|table(s|privileges)|d(o|ata_source)|p(connect|r(imarykeys|ocedure(s|columns)|epare))|e(rror(msg)?|xec(ute)?)|f(ield_(scale|n(um|ame)|type|precision|len)|oreignkeys|etch_(into|object|array|row)|ree_result)|longreadlen|autocommit|r(ollback|esult(_all)?)|gettypeinfo|binmode)\\\\b\",\n          \"name\": \"support.function.php_odbc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\\\b\",\n          \"name\": \"support.function.php_pcre.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\\\b\",\n          \"name\": \"support.function.php_spl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bzip_(close|open|entry_(name|c(ompress(ionmethod|edsize)|lose)|open|filesize|read)|read)\\\\b\",\n          \"name\": \"support.function.php_zip.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bposix_(s(trerror|et(sid|uid|pgid|e(uid|gid)|gid))|ctermid|t(tyname|imes)|i(satty|nitgroups)|uname|errno|kill|access|get(sid|cwd|uid|_last_error|p(id|pid|w(nam|uid)|g(id|rp))|e(uid|gid)|login|rlimit|g(id|r(nam|oups|gid)))|mk(nod|fifo))\\\\b\",\n          \"name\": \"support.function.posix.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bset(threadtitle|proctitle)\\\\b\",\n          \"name\": \"support.function.proctitle.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpspell_(s(tore_replacement|uggest|ave_wordlist)|new(_(config|personal))?|c(heck|onfig_(save_repl|create|ignore|d(ict_dir|ata_dir)|personal|r(untogether|epl)|mode)|lear_session)|add_to_(session|personal))\\\\b\",\n          \"name\": \"support.function.pspell.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\breadline(_(c(ompletion_function|lear_history|allback_(handler_(install|remove)|read_char))|info|on_new_line|write_history|list_history|add_history|re(display|ad_history)))?\\\\b\",\n          \"name\": \"support.function.readline.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brecode(_(string|file))?\\\\b\",\n          \"name\": \"support.function.recode.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brrd_(create|tune|info|update|error|version|f(irst|etch)|last(update)?|restore|graph|xport)\\\\b\",\n          \"name\": \"support.function.rrd.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(hm_(has_var|detach|put_var|attach|remove(_var)?|get_var)|em_(acquire|re(lease|move)|get))|ftok|msg_(s(tat_queue|e(nd|t_queue))|queue_exists|re(ceive|move_queue)|get_queue))\\\\b\",\n          \"name\": \"support.function.sem.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsession_(s(ta(tus|rt)|et_(save_handler|cookie_params)|ave_path)|name|c(ommit|ache_(expire|limiter))|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|reg(ister(_shutdown)?|enerate_id)|get_cookie_params|module_name)\\\\b\",\n          \"name\": \"support.function.session.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshmop_(size|close|open|delete|write|read)\\\\b\",\n          \"name\": \"support.function.shmop.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsimplexml_(import_dom|load_(string|file))\\\\b\",\n          \"name\": \"support.function.simplexml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsnmp(set|2_(set|walk|real_walk|get(next)?)|_(set_(oid_(numeric_print|output_format)|enum_print|valueretrieval|quick_print)|read_mib|get_(valueretrieval|quick_print))|3_(set|walk|real_walk|get(next)?)|walk(oid)?|realwalk|get(next)?)\\\\b\",\n          \"name\": \"support.function.snmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(is_soap_fault|use_soap_error_handler)\\\\b\",\n          \"name\": \"support.function.soap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsocket_(s(hutdown|trerror|e(nd(to)?|t_(nonblock|option|block)|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?)|import_stream|write|l(isten|ast_error)|accept|re(cv(from)?|ad)|get(sockname|_option|peername)|bind)\\\\b\",\n          \"name\": \"support.function.sockets.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsqlite_(s(ingle_query|eek)|has_(prev|more)|n(um_(fields|rows)|ext)|c(hanges|olumn|urrent|lose|reate_(function|aggregate))|open|u(nbuffered_query|df_(decode_binary|encode_binary))|p(open|rev)|e(scape_string|rror_string|xec)|valid|key|query|f(ield_name|etch_(s(tring|ingle)|column_types|object|a(ll|rray))|actory)|l(ib(encoding|version)|ast_(insert_rowid|error))|array_query|rewind|busy_timeout)\\\\b\",\n          \"name\": \"support.function.sqlite.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsqlsrv_(se(nd_stream_data|rver_info)|has_rows|n(um_(fields|rows)|ext_result)|c(o(n(nect|figure)|mmit)|l(ient_info|ose)|ancel)|prepare|e(rrors|xecute)|query|f(ield_metadata|etch(_(object|array))?|ree_stmt)|ro(ws_affected|llback)|get_(config|field)|begin_transaction)\\\\b\",\n          \"name\": \"support.function.sqlsrv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bstats_(s(ta(ndard_deviation|t_(noncentral_t|correlation|in(nerproduct|dependent_t)|p(owersum|ercentile|aired_t)|gennch|binomial_coef))|kew)|harmonic_mean|c(ovariance|df_(n(oncentral_(chisquare|f)|egative_binomial)|c(hisquare|auchy)|t|uniform|poisson|exponential|f|weibull|l(ogistic|aplace)|gamma|b(inomial|eta)))|den(s_(n(ormal|egative_binomial)|c(hisquare|auchy)|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|weibull|l(ogistic|aplace)|gamma|beta)|_uniform)|variance|kurtosis|absolute_deviation|rand_(setall|phrase_to_seeds|ranf|ge(n_(no(ncen(tral_(t|f)|ral_chisquare)|rmal)|chisquare|t|i(nt|uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)|t_seeds)))\\\\b\",\n          \"name\": \"support.function.stats.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bs(tream_(s(ocket_(s(hutdown|e(ndto|rver))|client|pair|enable_crypto|accept|recvfrom|get_name)|upports_lock|e(t_(chunk_size|timeout|write_buffer|read_buffer|blocking)|lect))|notification_callback|co(ntext_(set_(option|default|params)|create|get_(options|default|params))|py_to_stream)|is_local|encoding|filter_(prepend|append|re(gister|move))|wrapper_(unregister|re(store|gister))|re(solve_include_path|gister_wrapper)|get_(contents|transports|filters|wrappers|line|meta_data)|bucket_(new|prepend|append|make_writeable))|et_socket_blocking)\\\\b\",\n          \"name\": \"support.function.streamsfuncs.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(scanf|ha1(_file)?|tr(s(tr|pn)|n(c(asecmp|mp)|atc(asecmp|mp))|c(spn|hr|oll|asecmp|mp)|t(o(upper|k|lower)|r)|i(str|p(slashes|cslashes|os|_tags))|_(s(huffle|plit)|ireplace|pad|word_count|r(ot13|ep(eat|lace))|getcsv)|p(os|brk)|len|r(chr|ipos|pos|ev))|imilar_text|oundex|ubstr(_(co(unt|mpare)|replace))?|printf|etlocale)|h(tml(specialchars(_decode)?|_entity_decode|entities)|e(x2bin|brev(c)?))|n(umber_format|l(2br|_langinfo))|c(h(op|unk_split|r)|o(nvert_(cyr_string|uu(decode|encode))|unt_chars)|r(ypt|c32))|trim|implode|ord|uc(first|words)|join|p(arse_str|rint(f)?)|e(cho|xplode)|v(sprintf|printf|fprintf)|quote(d_printable_(decode|encode)|meta)|fprintf|wordwrap|l(cfirst|trim|ocaleconv|evenshtein)|add(slashes|cslashes)|rtrim|get_html_translation_table|m(oney_format|d5(_file)?|etaphone)|bin2hex)\\\\b\",\n          \"name\": \"support.function.string.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsybase_(se(t_message_handler|lect_db)|num_(fields|rows)|c(onnect|lose)|d(eadlock_retry_count|ata_seek)|unbuffered_query|pconnect|query|f(ield_seek|etch_(object|field|a(ssoc|rray)|row)|ree_result)|affected_rows|result|get_last_message|min_(server_severity|client_severity|error_severity|message_severity))\\\\b\",\n          \"name\": \"support.function.sybase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(taint|is_tainted|untaint)\\\\b\",\n          \"name\": \"support.function.taint.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(tidy_(s(et(opt|_encoding)|ave_config)|c(onfig_count|lean_repair)|is_x(html|ml)|diagnose|parse_(string|file)|error_count|warning_count|load_config|access_count|re(set_config|pair_(string|file))|get(opt|_(status|h(tml(_ver)?|ead)|config|o(utput|pt_doc)|r(oot|elease)|body)))|ob_tidyhandler)\\\\b\",\n          \"name\": \"support.function.tidy.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btoken_(name|get_all)\\\\b\",\n          \"name\": \"support.function.tokenizer.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btrader_(s(t(och(f|rsi)?|ddev)|in(h)?|u(m|b)|et_(compat|unstable_period)|qrt|ar(ext)?|ma)|ht_(sine|trend(line|mode)|dcp(hase|eriod)|phasor)|natr|c(ci|o(s(h)?|rrel)|dl(s(ho(otingstar|rtline)|t(icksandwich|alledpattern)|pinningtop|eparatinglines)|h(i(kkake(mod)?|ghwave)|omingpigeon|a(ngingman|rami(cross)?|mmer))|c(o(ncealbabyswall|unterattack)|losingmarubozu)|t(hrusting|a(sukigap|kuri)|ristar)|i(n(neck|vertedhammer)|dentical3crows)|2crows|onneck|d(oji(star)?|arkcloudcover|ragonflydoji)|u(nique3river|psidegap2crows)|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|piercing|e(ngulfing|vening(star|dojistar))|kicking(bylength)?|l(ongl(ine|eggeddoji)|adderbottom)|a(dvanceblock|bandonedbaby)|ri(sefall3methods|ckshawman)|g(apsidesidewhite|ravestonedoji)|xsidegap3methods|m(orning(star|dojistar)|a(t(hold|chinglow)|rubozu))|b(elthold|reakaway))|eil|mo)|t(sf|ypprice|3|ema|an(h)?|r(i(x|ma)|ange))|obv|d(iv|ema|x)|ultosc|p(po|lus_d(i|m))|e(rrno|xp|ma)|var|kama|floor|w(clprice|illr|ma)|l(n|inearreg(_(slope|intercept|angle))?|og10)|a(sin|cos|t(an|r)|d(osc|d|x(r)?)?|po|vgprice|roon(osc)?)|r(si|oc(p|r(100)?)?)|get_(compat|unstable_period)|m(i(n(index|us_d(i|m)|max(index)?)?|dp(oint|rice))|om|ult|edprice|fi|a(cd(ext|fix)?|vp|x(index)?|ma)?)|b(op|eta|bands))\\\\b\",\n          \"name\": \"support.function.trader.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_build_query|url(decode|encode)|parse_url|rawurl(decode|encode)|get_(headers|meta_tags)|base64_(decode|encode))\\\\b\",\n          \"name\": \"support.function.url.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(s(trval|e(ttype|rialize))|i(s(set|_(s(calar|tring)|nu(ll|meric)|callable|int(eger)?|object|double|float|long|array|re(source|al)|bool|arraykey|nonnull|dict|vec|keyset))|ntval|mport_request_variables)|d(oubleval|ebug_zval_dump)|unse(t|rialize)|print_r|empty|var_(dump|export)|floatval|get(type|_(defined_vars|resource_type))|boolval)\\\\b\",\n          \"name\": \"support.function.var.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bwddx_(serialize_va(lue|rs)|deserialize|packet_(start|end)|add_vars)\\\\b\",\n          \"name\": \"support.function.wddx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxhprof_(sample_(disable|enable)|disable|enable)\\\\b\",\n          \"name\": \"support.function.xhprof.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(utf8_(decode|encode)|xml_(set_(start_namespace_decl_handler|notation_decl_handler|character_data_handler|object|default_handler|unparsed_entity_decl_handler|processing_instruction_handler|e(nd_namespace_decl_handler|lement_handler|xternal_entity_ref_handler))|parse(_into_struct|r_(set_option|create(_ns)?|free|get_option))?|error_string|get_(current_(column_number|line_number|byte_index)|error_code)))\\\\b\",\n          \"name\": \"support.function.xml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxmlrpc_(se(t_type|rver_(c(all_method|reate)|destroy|add_introspection_data|register_(introspection_callback|method)))|is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|get_type)\\\\b\",\n          \"name\": \"support.function.xmlrpc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxmlwriter_(s(tart_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element(_ns)?|attribute(_ns)?)|et_indent(_string)?)|text|o(utput_memory|pen_(uri|memory))|end_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element|attribute)|f(ull_end_element|lush)|write_(c(omment|data)|dtd(_(e(ntity|lement)|attlist))?|pi|element(_ns)?|attribute(_ns)?|raw))\\\\b\",\n          \"name\": \"support.function.xmlwriter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxslt_(set(opt|_(s(cheme_handler(s)?|ax_handler(s)?)|object|e(ncoding|rror_handler)|log|base))|create|process|err(no|or)|free|getopt|backend_(name|info|version))\\\\b\",\n          \"name\": \"support.function.xslt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(zlib_(decode|encode|get_coding_type)|readgzfile|gz(seek|c(ompress|lose)|tell|inflate|open|de(code|flate)|uncompress|p(uts|assthru)|e(ncode|of)|file|write|re(wind|ad)|get(s(s)?|c)))\\\\b\",\n          \"name\": \"support.function.zlib.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bis_int(eger)?\\\\b\",\n          \"name\": \"support.function.alias.php\"\n        }\n      ]\n    },\n    \"user-function-call\": {\n      \"begin\": \"(?i)(?=[a-z_0-9\\\\\\\\]*[a-z_][a-z0-9_]*\\\\s*\\\\()\",\n      \"end\": \"(?i)[a-z_][a-z_0-9]*(?=\\\\s*\\\\()\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.function.php\"\n        }\n      },\n      \"name\": \"meta.function-call.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#namespace\"\n        }\n      ]\n    },\n    \"var_basic\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?x)\\n(\\\\$+)\\n[a-zA-Z_\\\\x{7f}-\\\\x{ff}]\\n[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*?\\n\\\\b\",\n          \"name\": \"variable.other.php\"\n        }\n      ]\n    },\n    \"var_global\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\\\b\",\n      \"name\": \"variable.other.global.php\"\n    },\n    \"var_global_safer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((GLOBALS|_(ENV|SERVER|SESSION)))\",\n      \"name\": \"variable.other.global.safer.php\"\n    },\n    \"variable-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"name\": \"constant.numeric.index.php\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.index.php\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"10\": {\n              \"name\": \"string.unquoted.index.php\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"comment\": \"Simple syntax: $foo, $foo[0], $foo[$bar], $foo->bar\",\n          \"match\": \"(?x)\\n((\\\\$)(?<name>[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*))\\n(?:\\n  (->)(\\\\g<name>)\\n  |\\n  (\\\\[)\\n    (?:(\\\\d+)|((\\\\$)\\\\g<name>)|(\\\\w+))\\n  (\\\\])\\n)?\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"comment\": \"Simple syntax with braces: \\\"foo${bar}baz\\\"\",\n          \"match\": \"(?x)\\n((\\\\$\\\\{)(?<name>[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\}))\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"include\": \"#var_basic\"\n        },\n        {\n          \"begin\": \"(\\\\$\\\\{)(?=.*?\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#language\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xhp\": {\n      \"comment\": \"Avoid < operator expressions as best we can using Zertosh's regex\",\n      \"patterns\": [\n        {\n          \"contentName\": \"source.xhp\",\n          \"begin\": \"(?<=\\\\(|\\\\{|\\\\[|,|&&|\\\\|\\\\||\\\\?|:|=|=>|\\\\Wreturn|^return|^)\\\\s*(?=<[_\\\\p{L}])\",\n          \"end\": \"(?=.)\",\n          \"applyEndPatternLast\": 1,\n          \"patterns\": [\n            {\n              \"include\": \"#xhp-tag-element-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xhp-tag-element-name\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Tags that end > are trapped in #xhp-tag-termination\",\n          \"begin\": \"\\\\s*(<)([_\\\\p{L}](?:[:\\\\p{L}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Nl}\\\\p{Pc}-])*+)(?=[/>\\\\s])(?<![\\\\:])\",\n          \"end\": \"\\\\s*(?<=</)(\\\\2)(>)|(/>)|((?<=</)[\\\\S ]*?)>\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xhp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.open.xhp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.close.xhp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.xhp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.xhp\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.termination.xhp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xhp-tag-termination\"\n            },\n            {\n              \"include\": \"#xhp-html-comments\"\n            },\n            {\n              \"include\": \"#xhp-tag-attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xhp-tag-termination\": {\n      \"patterns\": [\n        {\n          \"comment\": \"uses non consuming search for </ in </tag>\",\n          \"begin\": \"(?<!--)(>)\",\n          \"end\": \"(</)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.xhp\"\n            },\n            \"1\": {\n              \"name\": \"XHPStartTagEnd\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.xhp\"\n            },\n            \"1\": {\n              \"name\": \"XHPEndTagStart\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xhp-evaluated-code\"\n            },\n            {\n              \"include\": \"#xhp-entities\"\n            },\n            {\n              \"include\": \"#xhp-html-comments\"\n            },\n            {\n              \"include\": \"#xhp-tag-element-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xhp-tag-attributes\": {\n      \"patterns\": [\n        {\n          \"include\": \"#xhp-attribute-name\"\n        },\n        {\n          \"include\": \"#xhp-assignment\"\n        },\n        {\n          \"include\": \"#xhp-string-double-quoted\"\n        },\n        {\n          \"include\": \"#xhp-string-single-quoted\"\n        },\n        {\n          \"include\": \"#xhp-evaluated-code\"\n        },\n        {\n          \"include\": \"#xhp-tag-element-name\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"xhp-attribute-name\": {\n      \"patterns\": [\n        {\n          \"comment\": \"look for attribute name\",\n          \"match\": \"(?<!\\\\S)([_\\\\p{L}](?:[\\\\p{L}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Nl}\\\\p{Pc}-](?<!\\\\.\\\\.))*+)(?<!\\\\.)(?=//|/\\\\*|=|\\\\s|>|/>)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.xhp\"\n            }\n          }\n        }\n      ]\n    },\n    \"xhp-assignment\": {\n      \"patterns\": [\n        {\n          \"comment\": \"look for attribute assignment\",\n          \"name\": \"keyword.operator.assignment.xhp\",\n          \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|<|//|\\\\n))\"\n        }\n      ]\n    },\n    \"xhp-string-double-quoted\": {\n      \"name\": \"string.quoted.double.php\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"(?<!\\\\\\\\\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xhp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xhp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xhp-entities\"\n        }\n      ]\n    },\n    \"xhp-string-single-quoted\": {\n      \"name\": \"string.quoted.single.php\",\n      \"begin\": \"'\",\n      \"end\": \"'(?<!\\\\\\\\')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xhp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xhp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xhp-entities\"\n        }\n      ]\n    },\n    \"xhp-evaluated-code\": {\n      \"name\": \"meta.embedded.expression.php\",\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.xhp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.xhp\"\n        }\n      },\n      \"contentName\": \"source.php.xhp\",\n      \"patterns\": [\n        {\n          \"include\": \"#language\"\n        }\n      ]\n    },\n    \"xhp-entities\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Embeded HTML entities &blah\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.character.entity.xhp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.xhp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html.xhp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.xhp\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Entity with & and invalid name\",\n          \"match\": \"&\\\\S*;\",\n          \"name\": \"invalid.illegal.bad-ampersand.xhp\"\n        }\n      ]\n    },\n    \"xhp-html-comments\": {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"--(?!-*\\\\s*>)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/haml.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"haml\", \"html.haml\"],\n  \"foldingStartMarker\": \"^\\\\s*([-%#\\\\:\\\\.\\\\w\\\\=].*)\\\\s$\",\n  \"foldingStopMarker\": \"^\\\\s*$\",\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"haml\",\n  \"patterns\": [\n    {\n      \"begin\": \"^(\\\\s*)==\",\n      \"contentName\": \"string.quoted.double.ruby\",\n      \"end\": \"$\\\\n*\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.prolog.haml\"\n        }\n      },\n      \"match\": \"^(!!!)($|\\\\s.*)\",\n      \"name\": \"meta.prolog.haml\"\n    },\n    {\n      \"begin\": \"^(\\\\s*):javascript\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"js.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)%script\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"js.inline.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.comment.haml\"\n        }\n      },\n      \"match\": \"^(\\\\s*)(\\\\/\\\\[[^\\\\]].*?$\\\\n?)\",\n      \"name\": \"comment.line.slash.haml\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)(\\\\-\\\\#|\\\\/|\\\\-\\\\s*\\\\/\\\\*+)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.section.comment.haml\"\n        }\n      },\n      \"end\": \"^(?!\\\\1\\\\s+|\\\\n)\",\n      \"name\": \"comment.block.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.haml\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(?:((%)([-\\\\w:]+))|(?=\\\\.|#))\",\n      \"end\": \"$|(?!\\\\.|#|\\\\{|\\\\(|\\\\[|&amp;|=|-|~|!=|&=|/)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.tag.haml\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.haml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"==\",\n          \"contentName\": \"string.quoted.double.ruby\",\n          \"end\": \"$\\\\n?\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.class\"\n            }\n          },\n          \"match\": \"(\\\\.[\\\\w\\\\-\\\\:]+)\",\n          \"name\": \"meta.selector.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.id\"\n            }\n          },\n          \"match\": \"(#[\\\\w-]+)\",\n          \"name\": \"meta.selector.css\"\n        },\n        {\n          \"begin\": \"(?<!\\\\#)\\\\{(?=.*(,|(do)|\\\\{|\\\\}|\\\\||(\\\\#.*)|\\\\R)\\\\s*)\",\n          \"end\": \"\\\\s*\\\\}(?!\\\\s*\\\\,)(?!\\\\s*\\\\|)(?!\\\\#\\\\{.*\\\\})\",\n          \"name\": \"meta.section.attributes.haml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#continuation\"\n            },\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.section.attributes.plain.haml\",\n          \"patterns\": [\n            {\n              \"match\": \"([\\\\w-]+)\",\n              \"name\": \"constant.other.symbol.ruby\"\n            },\n            {\n              \"match\": \"\\\\=\",\n              \"name\": \"punctuation\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"end\": \"\\\"\",\n              \"name\": \"string.quoted.double.ruby\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[(?=.+(,|\\\\[|\\\\]|\\\\||(\\\\#.*))\\\\s*)\",\n          \"end\": \"\\\\s*\\\\](?!.*(?!\\\\#\\\\[)\\\\])\",\n          \"name\": \"meta.section.object.haml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#continuation\"\n            },\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolated_ruby_line\"\n        },\n        {\n          \"include\": \"#rubyline\"\n        },\n        {\n          \"match\": \"/\",\n          \"name\": \"punctuation.terminator.tag.haml\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(ruby|opal)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):ruby$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(style|sass)$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.sass.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):coffee(script)?\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.coffee.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):plain$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"text.plain.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.plain\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:ruby)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.filter.haml\"\n        }\n      },\n      \"end\": \"(?m:(?<=\\\\n)(?!\\\\1\\\\s+|$\\\\n*))\",\n      \"name\": \"source.ruby.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:sass)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.filter.haml\"\n        }\n      },\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.embedded.filter.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(styles|sass)$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"source.sass.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):plain$\",\n      \"end\": \"^(?=\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"text.plain.embedded.filter.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"text.plain\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.escape.haml\"\n        }\n      },\n      \"match\": \"^\\\\s*(\\\\.)\"\n    },\n    {\n      \"begin\": \"^\\\\s*(?==|-|~|!=|&=)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby_line\"\n        },\n        {\n          \"include\": \"#rubyline\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:php)\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.php\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.php#language\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:markdown)\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.markdown\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.markdown\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:(css|styles?))$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.css\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:sass)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.sass\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(:scss)$\",\n      \"end\": \"^(?!\\\\1\\\\s+|$\\\\n*)\",\n      \"name\": \"meta.embedded.scss\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.haml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.scss\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"continuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.continuation.haml\"\n        }\n      },\n      \"match\": \"(\\\\|)\\\\s*\\\\n\"\n    },\n    \"interpolated_ruby\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby.embedded.source.empty\"\n            }\n          },\n          \"match\": \"#\\\\{(\\\\})\",\n          \"name\": \"source.ruby.embedded.source\"\n        },\n        {\n          \"begin\": \"#\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"name\": \"source.ruby.embedded.source\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"interpolated_ruby_line\": {\n      \"begin\": \"!?==\",\n      \"contentName\": \"string.source.ruby.embedded.haml\",\n      \"end\": \"$\",\n      \"name\": \"meta.line.ruby.interpolated.haml\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"source.ruby#escaped_char\"\n        }\n      ]\n    },\n    \"nest_curly_and_self\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.ruby\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.ruby\"\n        }\n      ]\n    },\n    \"rubyline\": {\n      \"begin\": \"(&amp|!)?(=|-|~)\",\n      \"contentName\": \"source.ruby.embedded.haml\",\n      \"end\": \"((do|\\\\{)( \\\\|[.*]+\\\\|)?)$|$|^(?!.*\\\\|\\\\s*)$\\\\n?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"source.ruby.embedded.html\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.ruby.start-block\"\n        }\n      },\n      \"name\": \"meta.line.ruby.haml\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+((elseif|foreach|switch|declare|default|use))(?=\\\\s|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(require_once|include_once)(?=\\\\s|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.include.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(catch|try|throw|exception|finally|die)(?=\\\\s|\\\\(|\\\\n*)\",\n          \"name\": \"keyword.control.exception.php\"\n        },\n        {\n          \"match\": \"\\\\s+(function\\\\s*)((?=\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s+(use\\\\s*)((?=\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\||,|<|do|\\\\{)\\\\s*(\\\\#.*)?$\\\\n*\",\n          \"name\": \"source.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#rubyline\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Hack to let ruby comments work in this context properly\",\n          \"match\": \"#.*$\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        },\n        {\n          \"include\": \"source.ruby\"\n        },\n        {\n          \"include\": \"#continuation\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.haml\",\n  \"uuid\": \"3D727049-DD05-45DF-92A5-D50EA36FD035\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/handlebars.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/daaain/Handlebars/blob/master/grammars/Handlebars.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/daaain/Handlebars/commit/85a153a6f759df4e8da7533e1b3651f007867c51\",\n  \"name\": \"handlebars\",\n  \"scopeName\": \"text.html.handlebars\",\n  \"patterns\": [\n    {\n      \"include\": \"#yfm\"\n    },\n    {\n      \"include\": \"#extends\"\n    },\n    {\n      \"include\": \"#block_comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#block_helper\"\n    },\n    {\n      \"include\": \"#end_block\"\n    },\n    {\n      \"include\": \"#else_token\"\n    },\n    {\n      \"include\": \"#partial_and_var\"\n    },\n    {\n      \"include\": \"#inline_script\"\n    },\n    {\n      \"include\": \"#html_tags\"\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"html_tags\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<)([a-zA-Z0-9:-]+)(?=[^>]*></\\\\2>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(>(<)/)(\\\\2)(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"meta.scope.between-tag-pair.html\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"name\": \"meta.tag.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<\\\\?)(xml)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.xml.html\"\n            }\n          },\n          \"end\": \"(\\\\?>)\",\n          \"name\": \"meta.tag.preprocessor.xml.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_generic_attribute\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<!--\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"end\": \"--\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"match\": \"--\",\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<!\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"meta.tag.sgml.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(DOCTYPE|doctype)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.tag.doctype.html\"\n                }\n              },\n              \"end\": \"(?=>)\",\n              \"name\": \"meta.tag.sgml.doctype.html\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\"[^\\\">]*\\\"\",\n                  \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[CDATA\\\\[\",\n              \"end\": \"]](?=>)\",\n              \"name\": \"constant.other.inline-data.html\"\n            },\n            {\n              \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.style.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n          \"name\": \"source.css.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            },\n            {\n              \"begin\": \"(>)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.html\"\n                }\n              },\n              \"end\": \"(?=</(?i:style))\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"name\": \"source.js.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            },\n            {\n              \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.script.html\"\n                }\n              },\n              \"end\": \"(</)((?i:script))\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.comment.js\"\n                    }\n                  },\n                  \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n                  \"name\": \"comment.line.double-slash.js\"\n                },\n                {\n                  \"begin\": \"/\\\\*\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.js\"\n                    }\n                  },\n                  \"end\": \"\\\\*/|(?=</script)\",\n                  \"name\": \"comment.block.js\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.structure.any.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.structure.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:address|blockquote|dd|div|header|section|footer|aside|nav|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.block.any.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.block.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.inline.any.html\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"name\": \"meta.tag.inline.any.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)([a-zA-Z0-9:-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.other.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.other.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</?)([a-zA-Z0-9{}:-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.tokenised.html\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"name\": \"meta.tag.tokenised.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#entities\"\n        },\n        {\n          \"match\": \"<>\",\n          \"name\": \"invalid.illegal.incomplete.html\"\n        },\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"name\": \"constant.character.entity.html\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\"\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.html\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"end_block\": {\n      \"begin\": \"(\\\\{\\\\{)(~?/)([a-zA-Z0-9/_\\\\.-]+)\\\\s*\",\n      \"end\": \"(~?\\\\}\\\\})\",\n      \"name\": \"meta.function.block.end.handlebars\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        }\n      },\n      \"patterns\": []\n    },\n    \"yfm\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ],\n          \"begin\": \"(?<!\\\\s)---\\\\n$\",\n          \"end\": \"^---\\\\s\",\n          \"name\": \"markup.raw.yaml.front-matter\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.annotation.handlebars\",\n              \"match\": \"@\\\\w*\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ],\n          \"begin\": \"\\\\{\\\\{!\",\n          \"end\": \"\\\\}\\\\}\",\n          \"name\": \"comment.block.handlebars\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"begin\": \"<!--\",\n          \"end\": \"-{2,3}\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\",\n              \"match\": \"--\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_comments\": {\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"name\": \"keyword.annotation.handlebars\",\n              \"match\": \"@\\\\w*\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ],\n          \"begin\": \"\\\\{\\\\{!--\",\n          \"end\": \"--\\\\}\\\\}\",\n          \"name\": \"comment.block.handlebars\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"begin\": \"<!--\",\n          \"end\": \"-{2,3}\\\\s*>\",\n          \"name\": \"comment.block.html\",\n          \"patterns\": [\n            {\n              \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\",\n              \"match\": \"--\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_helper\": {\n      \"begin\": \"(\\\\{\\\\{)(~?\\\\#)([-a-zA-Z0-9_\\\\./>]+)\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\\\\s?(@?[-a-zA-Z0-9_\\\\./]+)*\",\n      \"end\": \"(~?\\\\}\\\\})\",\n      \"name\": \"meta.function.block.start.handlebars\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.handlebars\"\n        },\n        \"5\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"6\": {\n          \"name\": \"variable.parameter.handlebars\"\n        },\n        \"7\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#handlebars_attribute\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.handlebars\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escaped-single-quote\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        }\n      ]\n    },\n    \"escaped-single-quote\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\'\"\n    },\n    \"escaped-double-quote\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\\\\"\"\n    },\n    \"partial_and_var\": {\n      \"begin\": \"(\\\\{\\\\{~?\\\\{*(>|!<)*)\\\\s*(@?[-a-zA-Z0-9$_\\\\./]+)*\",\n      \"end\": \"(~?\\\\}\\\\}\\\\}*)\",\n      \"name\": \"meta.function.inline.other.handlebars\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#handlebars_attribute\"\n        }\n      ]\n    },\n    \"handlebars_attribute_name\": {\n      \"begin\": \"\\\\b([-a-zA-Z0-9_\\\\.]+)\\\\b=\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"end\": \"(?='|\\\"|)\",\n      \"name\": \"entity.other.attribute-name.handlebars\"\n    },\n    \"handlebars_attribute_value\": {\n      \"begin\": \"([-a-zA-Z0-9_\\\\./]+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"end\": \"('|\\\"|)\",\n      \"name\": \"entity.other.attribute-value.handlebars\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"handlebars_attribute\": {\n      \"patterns\": [\n        {\n          \"include\": \"#handlebars_attribute_name\"\n        },\n        {\n          \"include\": \"#handlebars_attribute_value\"\n        }\n      ]\n    },\n    \"extends\": {\n      \"patterns\": [\n        {\n          \"end\": \"(\\\\}\\\\})\",\n          \"begin\": \"(\\\\{\\\\{!<)\\\\s([-a-zA-Z0-9_\\\\./]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.handlebars\"\n            },\n            \"2\": {\n              \"name\": \"support.class.handlebars\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.handlebars\"\n            }\n          },\n          \"name\": \"meta.preprocessor.handlebars\"\n        }\n      ]\n    },\n    \"else_token\": {\n      \"begin\": \"(\\\\{\\\\{)(~?else)(@?\\\\s(if)\\\\s([-a-zA-Z0-9_\\\\.\\\\(\\\\s\\\\)/]+))?\",\n      \"end\": \"(~?\\\\}\\\\}\\\\}*)\",\n      \"name\": \"meta.function.inline.else.handlebars\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"2\": {\n          \"name\": \"support.constant.handlebars keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"support.constant.handlebars\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.handlebars\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.constant.handlebars\"\n        }\n      }\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.handlebars\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escaped-double-quote\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    },\n    \"inline_script\": {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?:.*(type)=([\\\"'](?:text/x-handlebars-template|text/x-handlebars|text/template|x-tmpl-handlebars)[\\\"']))(?![^>]*/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"4\": {\n          \"name\": \"string.quoted.double.html\"\n        }\n      },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"source.handlebars.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#block_helper\"\n            },\n            {\n              \"include\": \"#end_block\"\n            },\n            {\n              \"include\": \"#else_token\"\n            },\n            {\n              \"include\": \"#partial_and_var\"\n            },\n            {\n              \"include\": \"#html_tags\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_generic_attribute\": {\n      \"begin\": \"\\\\b([a-zA-Z0-9_-]+)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.generic.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ],\n      \"name\": \"entity.other.attribute-name.html\",\n      \"end\": \"(?<='|\\\"|)\"\n    },\n    \"tag_id_attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?<='|\\\"|)\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag_id_attribute\"\n        },\n        {\n          \"include\": \"#tag_generic_attribute\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#block_comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#block_helper\"\n        },\n        {\n          \"include\": \"#end_block\"\n        },\n        {\n          \"include\": \"#else_token\"\n        },\n        {\n          \"include\": \"#partial_and_var\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/haskell.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"hs\", \"hs-boot\", \"hsig\"],\n  \"keyEquivalent\": \"^~H\",\n  \"name\": \"haskell\",\n  \"patterns\": [\n    {\n      \"include\": \"#liquid_haskell\"\n    },\n    {\n      \"include\": \"#comment_like\"\n    },\n    {\n      \"include\": \"#numeric_literals\"\n    },\n    {\n      \"include\": \"#string_literal\"\n    },\n    {\n      \"include\": \"#char_literal\"\n    },\n    {\n      \"match\": \"(?<!@|#)-\\\\}\",\n      \"name\": \"invalid\"\n    },\n    {\n      \"match\": \"(\\\\()\\\\s*(\\\\))\",\n      \"name\": \"constant.language.unit.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n      \"name\": \"constant.language.unit.unboxed.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()\\\\s*,[\\\\s,]*(\\\\))\",\n      \"name\": \"support.constant.tuple.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\()(#)\\\\s*,[\\\\s,]*(#)(\\\\))\",\n      \"name\": \"support.constant.tuple.unboxed.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\[)\\\\s*(\\\\])\",\n      \"name\": \"constant.language.empty-list.haskell\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(\\\\b(?<!')(module)|^(signature))(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.module.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.signature.haskell\"\n        }\n      },\n      \"end\": \"(?=\\\\b(?<!')where\\\\b(?!'))\",\n      \"name\": \"meta.declaration.module.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        },\n        {\n          \"match\": \"[a-z]+\",\n          \"name\": \"invalid\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#ffi\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)(class)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.class.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of class declaration:\\n         # 'where' keyword\\n   (?=(?<!')\\\\bwhere\\\\b(?!'))  \\n         # Decreasing indentation\\n   |(?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\",\n      \"name\": \"meta.declaration.class.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n  ^(\\\\s*)(data|newtype)(?:\\\\s+(instance))?\\\\s+\\n  # Keep consuming characters until:\\n  ((?:(?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" or \\\"deriving\\\" keywords, or\\n  | (?:\\\\b(?<!')(?:where|deriving)\\\\b(?!'))\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\\n  (?=\\\\b(?<!'')where\\\\b(?!''))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.$2.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.declaration.$2.generalized.haskell\",\n      \"end\": \"(?x) # Detect end of data declaration:\\n         # Deriving clause\\n   (?=(?<!')\\\\bderiving\\\\b(?!'))  \\n         # Decreasing indentation\\n   |(?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"(?x)\\n  (?<!')\\\\b(where)\\n  \\\\s*(\\\\{)(?!-)\",\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.where.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#gadt_constructor\"\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.semicolon.haskell\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<!')(where)\\\\b(?!')\",\n          \"name\": \"keyword.other.where.haskell\"\n        },\n        {\n          \"include\": \"#deriving\"\n        },\n        {\n          \"include\": \"#gadt_constructor\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#role_annotation\"\n    },\n    {\n      \"name\": \"meta.declaration.pattern.type.haskell\",\n      \"begin\": \"^(\\\\s*)(pattern)\\\\s+(.*?)\\\\s+(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.pattern.haskell\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#data_constructor\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of pattern type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.pattern.haskell\",\n      \"begin\": \"^\\\\s*(pattern)\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.pattern.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of pattern type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n  # Data declaration\\n  ^(\\\\s*)(data|newtype)(?:\\\\s+(family|instance))?\\\\s+\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" or \\\"deriving\\\" keywords, or\\n  | (?:\\\\b(?<!')(?:where|deriving)\\\\b(?!'))\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.$2.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.declaration.$2.algebraic.haskell\",\n      \"end\": \"(?x) # Detect end of data declaration: \\n     # Decreasing indentation\\n   (?=\\\\}|;)      # Explicit indentation\\n   |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n       \\\\1\\\\s+\\\\S    # - more indented, or\\n     | \\\\s*        # - starts with whitespace, followed by:\\n       (?: $      #   - the end of the line (i.e. empty line), or\\n       |\\\\{-[^@]   #   - the start of a block comment, or\\n       |--+       #   - the start of a single-line comment.\\n          (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                  # The double dash may not be followed by other operator characters\\n                  # (then it would be an operator, not a comment)\\n     )\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#deriving\"\n        },\n        {\n          \"include\": \"#forall\"\n        },\n        {\n          \"include\": \"#adt_constructor\"\n        },\n        {\n          \"include\": \"#context\"\n        },\n        {\n          \"include\": \"#record_decl\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.family.haskell\",\n      \"begin\": \"(?x)\\n  # Type family\\n  ^(\\\\s*)(type)\\\\s+(family)\\\\b(?!')\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol or the start of a single-line comment, or\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the \\\"where\\\" keyword, or\\n  | \\\\b(?<!')where\\\\b(?!')\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.type.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.family.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#where\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x) # Detect end of type family by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.haskell\",\n      \"begin\": \"(?x)\\n  # Type declaration\\n  ^(\\\\s*)(type)(?:\\\\s+(instance))?\\\\s+\\n  # Keep consuming characters until:\\n  (((?!\\n  # the equals symbol, the start of a single-line comment, or a type signature\\n    (?: \\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n      (?:=|--+|::|∷)\\n      (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\\n    )\\n  # the start of a block comment.\\n  | {-\\n  #\\n  ).)*)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.type.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?x) # Detect end of type definition by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(instance)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.instance.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of instance declaration:\\n  # 'where' keyword\\n  (?=\\\\b(?<!')(where)\\\\b(?!'))\\n  # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"name\": \"meta.declaration.instance.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(import)(\\\\b(?!'))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.import.haskell\"\n        }\n      },\n      \"end\": \"(?x) # Detect end of import\\n  # 'where' keyword\\n  (?=\\\\b(?<!')(where)\\\\b(?!'))\\n  # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"name\": \"meta.import.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#where\"\n        },\n        {\n          \"match\": \"(qualified|as|hiding)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.$1.haskell\"\n            }\n          }\n        },\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#deriving\"\n    },\n    {\n      \"include\": \"#layout_herald\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"match\": \"^\\\\s*(infix[lr]?)\\\\s+(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#integer_literals\"\n            },\n            {\n              \"include\": \"#infix_op\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.fixity-declaration.haskell\"\n    },\n    {\n      \"include\": \"#overloaded_label\"\n    },\n    {\n      \"include\": \"#type_application\"\n    },\n    {\n      \"include\": \"#reserved_symbol\"\n    },\n    {\n      \"include\": \"#fun_decl\"\n    },\n    {\n      \"include\": \"#qualifier\"\n    },\n    {\n      \"include\": \"#data_constructor\"\n    },\n    {\n      \"include\": \"#start_type_signature\"\n    },\n    {\n      \"include\": \"#prefix_op\"\n    },\n    {\n      \"include\": \"#infix_op\"\n    },\n    {\n      \"begin\": \"(\\\\()(#)\\\\s\",\n      \"end\": \"(#)(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.hash.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#quasi_quote\"\n    },\n    {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#record\"\n    }\n  ],\n  \"repository\": {\n    \"block_comment\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\{-\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.haskell\"\n        }\n      },\n      \"end\": \"-\\\\}\",\n      \"name\": \"comment.block.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(--\\\\s[\\\\|\\\\$])\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"end\": \"(?=^(?!\\\\1--+(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])))\",\n          \"name\": \"comment.block.documentation.haskell\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(--\\\\s[\\\\^\\\\*])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.documentation.haskell\"\n        },\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"\\\\{-\\\\s?[\\\\|\\\\$\\\\*\\\\^]\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.haskell\"\n            }\n          },\n          \"end\": \"-\\\\}\",\n          \"name\": \"comment.block.documentation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--+(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.haskell\"\n            }\n          },\n          \"comment\": \"Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.\",\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.haskell\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.haskell\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"comment_like\": {\n      \"patterns\": [\n        {\n          \"include\": \"#cpp\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"cpp\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.preprocessor.c\"\n        }\n      },\n      \"comment\": \"In addition to Haskell's \\\"native\\\" syntax, GHC permits the C preprocessor to be run on a source file.\",\n      \"match\": \"^(#).*$\",\n      \"name\": \"meta.preprocessor.c\"\n    },\n    \"where\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (?<!')\\\\b(where)\\n  \\\\s*(\\\\{)(?!-)\",\n          \"end\": \"(\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.where.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.brace.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.semicolon.haskell\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<!')(where)\\\\b(?!')\",\n          \"name\": \"keyword.other.where.haskell\"\n        }\n      ]\n    },\n    \"layout_herald\": {\n      \"begin\": \"(?x)\\n  (?<!')\\\\b(?:(where|let|m?do)|(of))\\n  \\\\s*(\\\\{)(?!-)\",\n      \"end\": \"(\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.of.haskell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.semicolon.haskell\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"match\": \"\\\\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.$1.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.$2.haskell\"\n        }\n      }\n    },\n    \"deriving\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(deriving)\\\\s+(?:(via|stock|newtype|anyclass)\\\\s+)?\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.deriving.strategy.$3.haskell\"\n            }\n          },\n          \"end\": \"(?x) # Detect end of deriving statement\\n  # Decreasing indentation\\n   (?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"match\": \"(?<!')\\\\b(instance)\\\\b(?!')\",\n              \"name\": \"keyword.other.instance.haskell\"\n            },\n            {\n              \"match\": \"(?<!')\\\\b(via|stock|newtype|anyclass)\\\\b(?!')\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.deriving.strategy.$1.haskell\"\n                }\n              }\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ],\n          \"name\": \"meta.deriving.haskell\"\n        },\n        {\n          \"begin\": \"(deriving)(?:\\\\s+(stock|newtype|anyclass))?\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.deriving.strategy.$2.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"meta.deriving.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n  (deriving)(?:\\\\s+(stock|newtype|anyclass))?\\\\s+\\n    ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n    (\\\\s+(via)\\\\s+(.*)$)?\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.deriving.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.deriving.strategy.$2.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"keyword.other.deriving.strategy.via.haskell\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            }\n          },\n          \"name\": \"meta.deriving.haskell\"\n        },\n        {\n          \"match\": \"(?<!')\\\\b(via)\\\\b(?!')\",\n          \"name\": \"keyword.other.deriving.strategy.via.haskell\"\n        }\n      ]\n    },\n    \"prefix_op\": {\n      \"patterns\": [\n        {\n          \"comment\": \"An operator cannot be composed entirely of '-' characters;  instead, it should be matched as a comment.\\n\",\n          \"match\": \"(?x)\\n  (\\\\()\\\\s*(?!(?:--+|\\\\.\\\\.)\\\\))(\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.infix.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"infix_op\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  ((?:(?<!'')('')?[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*\\\\.)*)\\n    (\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\",\n          \"comment\": \"In case this regex seems overly general, note that Haskell permits  the definition of new operators which can be nearly any string of  punctuation characters, such as $%^&*.\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.infix.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(`)((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*\\\\.)*)([\\\\p{Ll}\\\\p{Lu}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'']*)(`)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#data_constructor\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            }\n          },\n          \"comment\": \"In case this regex seems unusual for an infix operator, note that Haskell\\nallows any ordinary function application (elem 4 [1..10]) to be rewritten\\nas an infix expression (4 `elem` [1..10]).\\n\",\n          \"name\": \"keyword.operator.function.infix.haskell\"\n        }\n      ]\n    },\n    \"module_exports\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"applyEndPatternLast\": 1,\n      \"name\": \"meta.declaration.exports.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"\\\\b(?<!')(module)\\\\b(?!')\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.module.haskell\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#export_constructs\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#record_wildcard\"\n            },\n            {\n              \"include\": \"#export_constructs\"\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"export_constructs\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"\\\\b(?<!')(pattern)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.pattern.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n   # Data constructor\\n   ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n   # Prefix form of symbolic constructor\\n   | (\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(?<!')(type)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.type.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n   # Type name\\n   ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n   # Prefix form of type operator\\n   | (\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<!')\\\\b[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n          \"name\": \"entity.name.function.haskell\"\n        },\n        {\n          \"match\": \"(?<!')\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n          \"name\": \"storage.type.haskell\"\n        },\n        {\n          \"include\": \"#record_wildcard\"\n        },\n        {\n          \"include\": \"#reserved_symbol\"\n        },\n        {\n          \"include\": \"#prefix_op\"\n        }\n      ]\n    },\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.comma.haskell\"\n    },\n    \"module_name\": {\n      \"match\": \"(?<conid>[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(\\\\.\\\\g<conid>)?)\",\n      \"name\": \"entity.name.namespace.haskell\"\n    },\n    \"pragma\": {\n      \"begin\": \"\\\\{-#\",\n      \"end\": \"#-\\\\}\",\n      \"name\": \"meta.preprocessor.haskell\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?xi) \\\\b(?<!')(LANGUAGE)\\\\b(?!')\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\n  (?:No)?\\n  (?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)\",\n              \"name\": \"invalid.deprecated\"\n            },\n            {\n              \"match\": \"(?x)\\n  (\\n  (?:No)?\\n  (?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns)\\n  )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.preprocessor.extension.haskell\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comma\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi)\\n  \\\\b(?<!')(SPECIALI(?:S|Z)E)\\n  (?:\\n  \\\\s*( \\\\[ [^\\\\[\\\\]]* \\\\])?\\\\s*\\n  |\\\\s+\\n  )\\n  (instance)\\\\b(?!')\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_phase\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.other.instance.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?xi)\\n  \\\\b(?<!')(SPECIALI(?:S|Z)E)\\\\b(?!')\\n  (?:\\\\s+(INLINE)\\\\b(?!'))?\\n  (?:\\\\s*(\\\\[ [^\\\\[\\\\]]* \\\\])?)\\n  \\\\s*\",\n          \"end\": \"(?=#-\\\\})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_phase\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi) \\\\b(?<!')\\n  (LANGUAGE|OPTIONS_GHC|INCLUDE\\n  |MINIMAL|UNPACK|OVERLAPS|INCOHERENT\\n  |NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\\n  |NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\\n  |COMPLETE)\\\\b(?!')\",\n          \"name\": \"keyword.other.preprocessor.haskell\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(DEPRECATED|WARNING)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.preprocessor.pragma.haskell\"\n            }\n          },\n          \"end\": \"(?=#-\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_literal\"\n            }\n          ]\n        }\n      ]\n    },\n    \"liquid_haskell\": {\n      \"name\": \"block.liquidhaskell.haskell\",\n      \"begin\": \"\\\\{-@\",\n      \"end\": \"@-\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"context\": {\n      \"match\": \"(?x)\\n  (.*)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n  (=>|⇒)\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.big-arrow.haskell\"\n        }\n      }\n    },\n    \"data_constructor\": {\n      \"match\": \"\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?![\\\\.'\\\\w])\",\n      \"name\": \"constant.other.haskell\"\n    },\n    \"qualifier\": {\n      \"match\": \"\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.\",\n      \"name\": \"entity.name.namespace.haskell\"\n    },\n    \"record_decl\": {\n      \"begin\": \"({)(?!-)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"end\": \"(?<!-)(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"name\": \"meta.record.definition.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#record_decl_field\"\n        }\n      ]\n    },\n    \"record\": {\n      \"begin\": \"({)(?!-)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"end\": \"(?<!-)(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brace.haskell\"\n        }\n      },\n      \"name\": \"meta.record.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#record_field\"\n        }\n      ]\n    },\n    \"record_decl_field\": {\n      \"begin\": \"(?x)\\n  (?:([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n    |(\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\\n  )\\n\",\n      \"end\": \"(,)|(?=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.member.definition.haskell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.paren.haskell\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.member.definition.haskell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.paren.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comma.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        },\n        {\n          \"include\": \"#record_decl_field\"\n        }\n      ]\n    },\n    \"record_wildcard\": {\n      \"match\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n  (\\\\.\\\\.)\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.member.wildcard.haskell\"\n        }\n      }\n    },\n    \"record_field\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (?:([\\\\p{Ll}\\\\p{Lu}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\.']*)\\n    |(\\\\()\\\\s*([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\))\\n  )\\n\",\n          \"end\": \"(,)|(?=})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.member.haskell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#qualifier\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.comma.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#record_wildcard\"\n        }\n      ]\n    },\n    \"role_annotation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(type)\\\\s+(role)\\\\b(?!')\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.other.type.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.role.haskell\"\n            }\n          },\n          \"end\": \"(?x) # Detect end of block by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\",\n          \"name\": \"meta.role-annotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#type_constructor\"\n            },\n            {\n              \"match\": \"\\\\b(?<!')(nominal|representational|phantom)\\\\b(?!')\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.role.$1.haskell\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"fun_decl\": {\n      \"begin\": \"(?x)^(\\\\s*)\\n  (?<fn>\\n    (?:\\n      [\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\#*\\n    | \\\\(\\\\s*\\n        (?!--+\\\\))\\n        [\\\\p{S}\\\\p{P}&&[^(),:;\\\\[\\\\]`{}_\\\"']]\\n        [\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*\\n      \\\\s*\\\\)\\n    )\\n    (?:\\\\s*,\\\\s*\\\\g<fn>)?\\n  )\\n  \\\\s*(?<![\\\\p{S}\\\\p{P}&&[^\\\\),;\\\\]`}_\\\"']])(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\\n\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.function.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#reserved_symbol\"\n            },\n            {\n              \"include\": \"#prefix_op\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      },\n      \"name\": \"meta.function.type-declaration.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ],\n      \"end\": \"(?x)\\n  # End of type annotation:\\n    # To the left of a reserved symbolic keyword such as = or <-\\n  (?= \\n      # non-symbolic character\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      # symbolic keyword except (->)\\n      ((<-|←)|(=)|(-<|↢)|(-<<|⤛))\\n      # non-symbolic character\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n  )\\n  # Decreasing indentation:\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\"\n    },\n    \"adt_constructor\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"begin\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]) # non-symbol\\n  (?:(=)|(\\\\|))\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])  # non-symbol\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.eq.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.pipe.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  (?:\\\\G|^)\\\\s* # Enforce starting condition to avoid catastrophic backtracking (https://github.com/JustusAdam/language-haskell/issues/161)\\n  (?: # Infix data constructor\\n    # First argument\\n    (?:\\n    # Simple type\\n      (?<!')\\\\b((?:[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'\\\\.])+)\\n    # Type inside balanced parentheses\\n    | ('? # Optional promotion tick\\n        (?<paren>\\n          \\\\(          # Opening parenthesis\\n          (?:\\n            [^\\\\(\\\\)]*  # Match non-parentheses\\n          | \\\\g<paren> # or recurse into further depth\\n          )*\\n          \\\\)          # Closing parenthesis\\n        )\\n      )\\n    # Type inside balanced brackets\\n    | ('? # Optional promotion tick\\n        (?<brac>\\n          \\\\(          # Opening bracket\\n          (?:\\n            [^\\\\[\\\\]]*  # Match non-brackets\\n          | \\\\g<brac>  # or recurse into further depth\\n          )*\\n          \\\\]          # Closing bracket\\n        )\\n      )\\n    )        \\n    # Then either\\n    \\\\s*\\n      # - a symbolic infix constructor, or\\n    (?:(?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\n      # - an alphabetic infix constructor\\n    | (`)([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(`)\\n    )\\n\\n  ) # Otherwise, prefix data constructor, either:\\n  | # - an alphabetic data constructor e.g. \\\"Cons_123\\\"\\n    (?:(?<!')\\\\b([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*))\\n  | # - a symbolic (prefix) data constructor\\n    (\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"8\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"10\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"12\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"13\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#forall\"\n            },\n            {\n              \"include\": \"#context\"\n            }\n          ]\n        }\n      ]\n    },\n    \"gadt_constructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n   ^(\\\\s*)\\n      (?:\\n        (\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n      |(\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))\\n      )\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # GADT constructor ends\\n  (?=\\\\b(?<!'')deriving\\\\b(?!'))  \\n        # Decreasing indentation\\n  |(?=\\\\}|;)      # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#double_colon\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\b(?<!')[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}]*) # named constructor\\n |(\\\\()\\\\s*(:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]*)\\\\s*(\\\\))    # prefix operator\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"constant.other.operator.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"include\": \"#deriving\"\n            },\n            {\n              \"include\": \"#double_colon\"\n            },\n            {\n              \"include\": \"#record_decl\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_application\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(')?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(')?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"meta.type-application.haskell\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(?=\\\\\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            }\n          },\n          \"end\": \"(?<=\\\\\\\")\",\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_literal\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[\\\\s,;\\\\[\\\\]{}\\\"])(@)(?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.at.haskell\"\n            }\n          },\n          \"end\": \"(?![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\",\n          \"name\": \"meta.type-application.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_signature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"(')?(\\\\()\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.unit.haskell\"\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n          \"name\": \"support.constant.unit.unboxed.haskell\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(')?(\\\\()\\\\s*,[\\\\s,]*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.tuple.haskell\"\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*(#)(\\\\))\",\n          \"name\": \"support.constant.unit.unboxed.haskell\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\()(#)\\\\s*,[\\\\s,]*(#)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"name\": \"support.constant.tuple.unboxed.haskell\"\n        },\n        {\n          \"match\": \"(')?(\\\\[)\\\\s*(\\\\])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"name\": \"support.constant.empty-list.haskell\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        },\n        {\n          \"match\": \"(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\",\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        },\n        {\n          \"include\": \"#forall\"\n        },\n        {\n          \"match\": \"=>|⇒\",\n          \"name\": \"keyword.operator.big-arrow.haskell\"\n        },\n        {\n          \"include\": \"#string_literal\"\n        },\n        {\n          \"match\": \"'[^']'\",\n          \"name\": \"invalid\"\n        },\n        {\n          \"include\": \"#type_application\"\n        },\n        {\n          \"include\": \"#reserved_symbol\"\n        },\n        {\n          \"include\": \"#type_operator\"\n        },\n        {\n          \"include\": \"#type_constructor\"\n        },\n        {\n          \"begin\": \"(\\\\()(#)\",\n          \"end\": \"(#)(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.hash.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(')?(\\\\()\",\n          \"end\": \"(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(')?(\\\\[)\",\n          \"end\": \"(\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.bracket.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type_variable\"\n        }\n      ]\n    },\n    \"double_colon\": {\n      \"match\": \"\\\\s*(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.double-colon.haskell\"\n        }\n      }\n    },\n    \"start_type_signature\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^(\\\\s*)(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\\\\s*\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.double-colon.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # End type annotation when seeing one of:\\n  (?=\\n    \\\\#?\\\\)                             # closing parenthesis\\n    |\\\\]                               # closing bracket\\n    |,                                # comma\\n    |(?<!')\\\\b(in|then|else|of)\\\\b(?!') # keyword\\n    |                                 # symbolic keyword except (->)\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      (?:\\n         (\\\\\\\\|λ)\\n        |(<-|←)\\n        |(=)\\n        |(-<|↢)\\n        |(-<<|⤛)\\n      )\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n    |(\\\\#|@)-\\\\}                             # End of annotation block (LiquidHaskell or pragma)\\n    # Decreasing indentation:\\n    | (?=\\\\}|;)     # Explicit indentation\\n    |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n        \\\\1\\\\s*\\\\S    # - equally indented, or\\n      | \\\\s*        # - starts with whitespace, followed by:\\n        (?: $      #   - the end of the line (i.e. empty line), or\\n        |\\\\{-[^@]   #   - the start of a block comment, or\\n        |--+       #   - the start of a single-line comment.\\n           (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                   # The double dash may not be followed by other operator characters\\n                   # (then it would be an operator, not a comment)\\n      )\\n  )\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ],\n          \"name\": \"meta.type-declaration.haskell\"\n        },\n        {\n          \"begin\": \"(?<![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])(::|∷)(?![\\\\p{S}\\\\p{P}&&[^\\\\(,;\\\\[`{_\\\"']])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.double-colon.haskell\"\n            }\n          },\n          \"end\": \"(?x)\\n  # End type annotation when seeing one of:\\n  (?=\\n    \\\\#?\\\\)                             # closing parenthesis\\n    |\\\\]                               # closing bracket\\n    |,                                # comma\\n    |\\\\b(?<!')(in|then|else|of)\\\\b(?!') # keyword\\n    |(\\\\#|@)-\\\\}                        # End of annotation block (LiquidHaskell or pragma)\\n    |                                 # symbolic keyword except (->)\\n      (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']])\\n      (?:\\n         (\\\\\\\\|λ)\\n        |(<-|←)\\n        |(=)\\n        |(-<|↢)\\n        |(-<<|⤛)\\n      )\\n      ([(),;\\\\[\\\\]`{}_\\\"']|[^\\\\p{S}\\\\p{P}])\\n    # Indentation \\n    |(?=\\\\}|;)      # Explicit indentation\\n    |$             # End of line\\n  )\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type_variable\": {\n      \"match\": \"\\\\b(?<!')(?!(?:forall|deriving)\\\\b(?!'))[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n      \"name\": \"variable.other.generic-type.haskell\"\n    },\n    \"type_constructor\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Optional qualified name\\n    ((?:\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type constructor proper\\n    (\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Opening parenthesis\\n    (\\\\()\\\\s*\\n  # Optional qualified name\\n    ((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type operator proper\\n    ([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\n  # Closing parenthesis\\n    \\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.paren.haskell\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.operator.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.paren.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"overloaded_label\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) \\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^(,;\\\\[`{]]) # Disallow closing characters\\n  (\\\\#)\\n    (?:\\n    # String\\n    (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")\\n    # Sequence of allowed label identifiers\\n    |[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'\\\\.]+\\n    )\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.hash.haskell\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string_literal\"\n                }\n              ]\n            }\n          },\n          \"name\": \"entity.name.label.haskell\"\n        }\n      ]\n    },\n    \"reserved_symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  (?<![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"'']])\\n  (?:\\n     (\\\\.\\\\.)\\n    |(:)\\n    |(=)\\n    |(\\\\\\\\)     # λ not reserved as it is a letter\\n    |(\\\\|)\\n    |(<-|←)\\n    |(->|→)\\n    |(-<|↢)\\n    |(-<<|⤛)\\n    |(>-|⤚)\\n    |(>>-|⤜)\\n    |(∀)\\n  )\\n  (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"'']])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.double-dot.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.colon.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.eq.haskell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.lambda.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.pipe.haskell\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.arrow.left.haskell\"\n            },\n            \"7\": {\n              \"name\": \"keyword.operator.arrow.haskell\"\n            },\n            \"8\": {\n              \"name\": \"keyword.operator.arrow.left.tail.haskell\"\n            },\n            \"9\": {\n              \"name\": \"keyword.operator.arrow.left.tail.double.haskell\"\n            },\n            \"10\": {\n              \"name\": \"keyword.operator.arrow.tail.haskell\"\n            },\n            \"11\": {\n              \"name\": \"keyword.operator.arrow.tail.double.haskell\"\n            },\n            \"12\": {\n              \"name\": \"keyword.other.forall.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^\\\\#,;\\\\[`{]]) # Require closing characters\\n  (\\\\#+)\\n  (?![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^),;\\\\]`}]])   # Disallow opening character\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.postfix.hash.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\)\\\\}\\\\]]) # Require closing characters\\n  (@)\\n  (?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\(\\\\[\\\\{]) # Require opening character\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.infix.tight.at.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\p{S}\\\\p{P}&&[^(,;\\\\[`{]])  # Disallow closing characters\\n  (?:(~)|(!)|(-)|(\\\\$)|(\\\\$\\\\$))\\n  (?=[\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}\\\\(\\\\{\\\\[]) # Require opening character (non operator symbol)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.prefix.tilde.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prefix.bang.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.prefix.minus.haskell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.prefix.dollar.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.prefix.double-dollar.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"type_operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (?:(?<!')('))?\\n  # Optional qualified name\\n    ((?:\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type operator proper\\n    (?![#@]?-})(\\\\#+|[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+(?<!\\\\#))\\n    #((?:[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']&&[^#@]]|[@#](?!-}))+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.operator.infix.haskell\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n  # Optional promotion tick\\n    (')?\\n  # Opening backtick\\n    (\\\\`)\\n  # Optional qualified name\\n    ((?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\\\\.)*)\\n  # Type constructor proper\\n    ([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\n  # Closing backtick\\n    (`)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.promotion.haskell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.namespace.haskell\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.infix.haskell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.backtick.haskell\"\n            }\n          }\n        }\n      ]\n    },\n    \"forall\": {\n      \"begin\": \"\\\\b(?<!')(forall|∀)\\\\b(?!')\",\n      \"end\": \"(\\\\.)|(->|→)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.forall.haskell\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.period.haskell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.arrow.haskell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"include\": \"#type_variable\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    \"string_literal\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.haskell\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.haskell\"\n        }\n      },\n      \"name\": \"string.quoted.double.haskell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&])\",\n          \"name\": \"constant.character.escape.haskell\"\n        },\n        {\n          \"match\": \"\\\\\\\\o[0-7]+|\\\\\\\\x[0-9A-Fa-f]+|\\\\\\\\[0-9]+\",\n          \"name\": \"constant.character.escape.octal.haskell\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]\",\n          \"name\": \"constant.character.escape.control.haskell\"\n        },\n        {\n          \"begin\": \"\\\\\\\\\\\\s\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\\\\\\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"constant.character.escape.end.haskell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\S+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.haskell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"char_literal\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.haskell\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.octal.haskell\"\n        },\n        \"4\": {\n          \"name\": \"constant.character.escape.hexadecimal.haskell\"\n        },\n        \"5\": {\n          \"name\": \"constant.character.escape.control.haskell\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.end.haskell\"\n        }\n      },\n      \"match\": \"(?x)\\n  (?<![\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}'])\\n  (')\\n  (?:\\n    [\\\\ -\\\\[\\\\]-~]                         # Basic Char\\n  | (\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\\n       |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\\n       |US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\\\\\&]))   # Escapes\\n  | (\\\\\\\\o[0-7]+)                         # Octal Escapes\\n  | (\\\\\\\\x[0-9A-Fa-f]+)                   # Hexadecimal Escapes\\n  | (\\\\\\\\\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_])                 # Control Chars\\n  )\\n  (')\\n\",\n      \"name\": \"string.quoted.single.haskell\"\n    },\n    \"float_literals\": {\n      \"comment\": \"Floats are decimal or hexadecimal\",\n      \"match\": \"(?x)\\n  \\\\b(?<!')\\n  (?:  # Decimal\\n    ([0-9][_0-9]*\\\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\\n    |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\\n    )\\n  |    # Hexadecimal\\n    (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\\n    |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\\n    )\\n  )\\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.floating.decimal.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.floating.hexadecimal.haskell\"\n        }\n      }\n    },\n    \"integer_literals\": {\n      \"match\": \"(?x)\\n  \\\\b(?<!')\\n  (?:\\n    ([0-9][_0-9]*)                    # Decimal integer\\n  | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\\n  | (0[oO]_*[0-7][_0-7]*)             # Octal integer\\n  | (0[bB]_*[01][_01]*)               # Binary integer\\n  )\\n  \\\\b(?!')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.numeric.integral.decimal.haskell\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.integral.hexadecimal.haskell\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.integral.octal.haskell\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.integral.binary.haskell\"\n        }\n      }\n    },\n    \"numeric_literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#float_literals\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        }\n      ]\n    },\n    \"ffi\": {\n      \"begin\": \"^(\\\\s*)(foreign)\\\\s+(import|export)\\\\s+\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.foreign.haskell\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.$3.haskell\"\n        }\n      },\n      \"name\": \"meta.$3.foreign.haskell\",\n      \"end\": \"(?x) # Detect end of FFI block by decreasing indentation:\\n  (?=\\\\}|;)       # Explicit indentation\\n  |^(?!          # Implicit indentation: end match on newline *unless* the new line is either:\\n      \\\\1\\\\s+\\\\S    # - more indented, or\\n    | \\\\s*        # - starts with whitespace, followed by:\\n      (?: $      #   - the end of the line (i.e. empty line), or\\n      |\\\\{-[^@]   #   - the start of a block comment, or\\n      |--+       #   - the start of a single-line comment.\\n         (?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]{}`_\\\"']]).*$) # non-symbol\\n                 # The double dash may not be followed by other operator characters\\n                 # (then it would be an operator, not a comment)\\n    )\\n\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_like\"\n        },\n        {\n          \"match\": \"\\\\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.calling-convention.$1.haskell\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?=\\\")|(?=\\\\b(?<!')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\",\n          \"end\": \"(?=(::|∷)(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_like\"\n            },\n            {\n              \"match\": \"(?x)\\n  \\\\b(?<!')(safe|unsafe|interruptible)\\\\b(?!')\\n  \\\\s*\\n  (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")?\\n  \\\\s*\\n  (?:\\n    (?:\\\\b(?<!'')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\\n   |(?:\\\\(\\\\s*(?!--+\\\\))([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*\\\\))\\n  )\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.safety.$1.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"entity.name.function.haskell\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.infix.haskell\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n  \\\\b(?<!')(safe|unsafe|interruptible)\\\\b(?!')\\n  \\\\s*\\n  (\\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\")?\\n  \\\\s*$\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.safety.$1.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n  \\\"(?:\\\\\\\\\\\"|[^\\\"])*\\\"\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"entity.name.foreign.haskell\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#string_literal\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?x)\\n   (?:\\\\b(?<!'')([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\b(?!'))\\n  |(?:(\\\\()\\\\s*(?!--+\\\\))([\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+)\\\\s*(\\\\)))\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.haskell\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.paren.haskell\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.function.infix.haskell\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.paren.haskell\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    \"inline_phase\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.haskell\"\n        }\n      },\n      \"name\": \"meta.inlining-phase.haskell\",\n      \"patterns\": [\n        {\n          \"match\": \"~\",\n          \"name\": \"punctuation.tilde.haskell\"\n        },\n        {\n          \"include\": \"#integer_literals\"\n        },\n        {\n          \"match\": \"\\\\w*\",\n          \"name\": \"invalid\"\n        }\n      ]\n    },\n    \"quasi_quote\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (e|d|p)?\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\3\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (t)\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\3\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n  (\\\\[)\\n  (?:(\\\\$\\\\$)|(\\\\$))?\\n  ((?:[^\\\\s\\\\p{S}\\\\p{P}]|[\\\\.'_])*)\\n  (\\\\|\\\\|?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.prefix.double-dollar.haskell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.prefix.dollar.haskell\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#qualifier\"\n                }\n              ],\n              \"name\": \"entity.name.quasi-quoter.haskell\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.quasi-quotation.begin.haskell\"\n            }\n          },\n          \"end\": \"\\\\5\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.quasi-quotation.end.haskell\"\n            }\n          },\n          \"name\": \"meta.quasi-quotation.haskell\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.haskell\",\n  \"uuid\": \"5C034675-1F6D-497E-8073-369D37E2FD7D\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/hcl.tmLanguage.json",
    "content": "{\n  \"name\": \"hcl\",\n  \"scopeName\": \"source.hcl\",\n  \"comment\": \"HashiCorp Configuration Language\",\n  \"fileTypes\": [\"tf\", \"tfvars\", \"nomad\", \"hcl\", \"appfile\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constructs\"\n    },\n    {\n      \"include\": \"#variable\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Single line comments with number-sign\",\n          \"match\": \"(#)+(.*)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"comment.line.number-sign.hcl\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Single line comments with double-slash\",\n          \"match\": \"(//)+(.*)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"comment.line.double-slash.hcl\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Multiple line comment block\",\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.hcl\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block.documentation.hcl\"\n            }\n          },\n          \"contentName\": \"comment.block.documentation.hcl\"\n        }\n      ]\n    },\n    \"constructs\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w-]+)\\\\s*\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.function.hcl\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.hcl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([\\\\w-]+)((?:\\\\s*\\\"[^\\\"]*\\\")*)\\\\s*\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.function.hcl\"\n            },\n            \"1\": {\n              \"name\": \"storage.type.hcl\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.hcl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w\\\\.-]+)\\\\s*(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.hcl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.hcl\"\n            }\n          },\n          \"end\": \"(?<!\\\\2)$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.hcl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#variable-type-string\"\n            },\n            {\n              \"include\": \"#variable-type-heredoc\"\n            },\n            {\n              \"include\": \"#variable-type-hexadecimal\"\n            },\n            {\n              \"include\": \"#variable-type-decimal\"\n            },\n            {\n              \"include\": \"#variable-type-constant\"\n            },\n            {\n              \"include\": \"#variable-type-array\"\n            },\n            {\n              \"include\": \"#variable-type-map\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.hcl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.hcl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#variable-interpolation-function\"\n            },\n            {\n              \"include\": \"#variable-interpolation-reference\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-interpolation-function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w-]+)\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.hcl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#variable-interpolation-function\"\n            },\n            {\n              \"include\": \"#variable-interpolation-reference\"\n            },\n            {\n              \"include\": \"#variable-type-hexadecimal\"\n            },\n            {\n              \"include\": \"#variable-type-decimal\"\n            },\n            {\n              \"include\": \"#variable-type-constant\"\n            },\n            {\n              \"include\": \"#variable-type-string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-interpolation-reference\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([\\\\w-]+)((\\\\.[\\\\w-]+)*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.hcl\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.hcl\"\n            }\n          }\n        }\n      ]\n    },\n    \"variable-type-array\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"#variable-type-decimal\"\n            },\n            {\n              \"include\": \"#variable-type-hexadecimal\"\n            },\n            {\n              \"include\": \"#variable-type-constant\"\n            },\n            {\n              \"include\": \"#variable-type-string\"\n            },\n            {\n              \"match\": \"\\\\s*,\\\\s*\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-type-map\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\"[\\\\w\\\\s\\\\.-]+\\\")\\\\s*(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string.quoted.double.hcl\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.hcl\"\n                }\n              },\n              \"end\": \"(?<!\\\\2)\\\\s*($|(?=\\\\}))\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.hcl\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#variable-type-decimal\"\n                },\n                {\n                  \"include\": \"#variable-type-hexadecimal\"\n                },\n                {\n                  \"include\": \"#variable-type-constant\"\n                },\n                {\n                  \"include\": \"#variable-type-string\"\n                },\n                {\n                  \"match\": \"\\\\s*,\\\\s*\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-type-hexadecimal\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Numbers in hexadecimal with optional suffixes\",\n          \"match\": \"0x[0-9A-Fa-f]+([kKmMgG]b?)?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.hcl\"\n            }\n          }\n        }\n      ]\n    },\n    \"variable-type-decimal\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Numbers in decimal with optional suffixes\",\n          \"match\": \"\\\\b[0-9\\\\.]+([kKmMgG]b?)?\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.hcl\"\n            }\n          }\n        }\n      ]\n    },\n    \"variable-type-constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|yes|no|on|off)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.hcl\"\n            }\n          }\n        }\n      ]\n    },\n    \"variable-type-string\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Usual string\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.hcl\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.hcl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#variable-interpolation\"\n            },\n            {\n              \"match\": \"[^\\\"]\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"string.quoted.double.hcl\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-type-heredoc\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Heredoc string\",\n          \"begin\": \"<<(\\\\w+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.section\"\n            }\n          },\n          \"end\": \"^\\\\s*\\\\1$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.section\"\n            }\n          },\n          \"contentName\": \"string.unquoted.here-doc.hcl\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/hlsl.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/tgjones/shaders-tmLanguage/blob/master/grammars/hlsl.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/tgjones/shaders-tmLanguage/commit/87c0dca3a39170dbd7ee7e277db4f915fb2de14a\",\n  \"name\": \"hlsl\",\n  \"scopeName\": \"source.hlsl\",\n  \"patterns\": [\n    {\n      \"name\": \"comment.line.block.hlsl\",\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\"\n    },\n    {\n      \"name\": \"comment.line.double-slash.hlsl\",\n      \"begin\": \"//\",\n      \"end\": \"$\"\n    },\n    {\n      \"name\": \"constant.numeric.decimal.hlsl\",\n      \"match\": \"\\\\b[0-9]+\\\\.[0-9]*(F|f)?\\\\b\"\n    },\n    {\n      \"name\": \"constant.numeric.decimal.hlsl\",\n      \"match\": \"(\\\\.([0-9]+)(F|f)?)\\\\b\"\n    },\n    {\n      \"name\": \"constant.numeric.decimal.hlsl\",\n      \"match\": \"\\\\b([0-9]+(F|f)?)\\\\b\"\n    },\n    {\n      \"name\": \"constant.numeric.hex.hlsl\",\n      \"match\": \"\\\\b(0(x|X)[0-9a-fA-F]+)\\\\b\"\n    },\n    {\n      \"name\": \"constant.language.hlsl\",\n      \"match\": \"\\\\b(false|true)\\\\b\"\n    },\n    {\n      \"name\": \"keyword.preprocessor.hlsl\",\n      \"match\": \"^\\\\s*#\\\\s*(define|elif|else|endif|ifdef|ifndef|if|undef|include|line|error|pragma)\"\n    },\n    {\n      \"name\": \"keyword.control.hlsl\",\n      \"match\": \"\\\\b(break|case|continue|default|discard|do|else|for|if|return|switch|while)\\\\b\"\n    },\n    {\n      \"name\": \"keyword.control.fx.hlsl\",\n      \"match\": \"\\\\b(compile)\\\\b\"\n    },\n    {\n      \"name\": \"keyword.typealias.hlsl\",\n      \"match\": \"\\\\b(typedef)\\\\b\"\n    },\n    {\n      \"name\": \"storage.type.basic.hlsl\",\n      \"match\": \"\\\\b(bool([1-4](x[1-4])?)?|double([1-4](x[1-4])?)?|dword|float([1-4](x[1-4])?)?|half([1-4](x[1-4])?)?|int([1-4](x[1-4])?)?|matrix|min10float([1-4](x[1-4])?)?|min12int([1-4](x[1-4])?)?|min16float([1-4](x[1-4])?)?|min16int([1-4](x[1-4])?)?|min16uint([1-4](x[1-4])?)?|unsigned|uint([1-4](x[1-4])?)?|vector|void)\\\\b\"\n    },\n    {\n      \"name\": \"support.function.hlsl\",\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(?=[\\\\s]*\\\\()\"\n    },\n    {\n      \"name\": \"support.variable.semantic.hlsl\",\n      \"match\": \"(?<=\\\\:\\\\s|\\\\:)(?i:BINORMAL[0-9]*|BLENDINDICES[0-9]*|BLENDWEIGHT[0-9]*|COLOR[0-9]*|NORMAL[0-9]*|POSITIONT|POSITION|PSIZE[0-9]*|TANGENT[0-9]*|TEXCOORD[0-9]*|FOG|TESSFACTOR[0-9]*|VFACE|VPOS|DEPTH[0-9]*)\\\\b\"\n    },\n    {\n      \"name\": \"support.variable.semantic.sm4.hlsl\",\n      \"match\": \"(?<=\\\\:\\\\s|\\\\:)(?i:SV_ClipDistance[0-9]*|SV_CullDistance[0-9]*|SV_Coverage|SV_Depth|SV_DepthGreaterEqual[0-9]*|SV_DepthLessEqual[0-9]*|SV_InstanceID|SV_IsFrontFace|SV_Position|SV_RenderTargetArrayIndex|SV_SampleIndex|SV_StencilRef|SV_Target[0-7]?|SV_VertexID|SV_ViewportArrayIndex)\\\\b\"\n    },\n    {\n      \"name\": \"support.variable.semantic.sm5.hlsl\",\n      \"match\": \"(?<=\\\\:\\\\s|\\\\:)(?i:SV_DispatchThreadID|SV_DomainLocation|SV_GroupID|SV_GroupIndex|SV_GroupThreadID|SV_GSInstanceID|SV_InsideTessFactor|SV_OutputControlPointID|SV_TessFactor)\\\\b\"\n    },\n    {\n      \"name\": \"support.variable.semantic.sm5_1.hlsl\",\n      \"match\": \"(?<=\\\\:\\\\s|\\\\:)(?i:SV_InnerCoverage|SV_StencilRef)\\\\b\"\n    },\n    {\n      \"name\": \"storage.modifier.hlsl\",\n      \"match\": \"\\\\b(column_major|const|export|extern|globallycoherent|groupshared|inline|inout|in|out|precise|row_major|shared|static|uniform|volatile)\\\\b\"\n    },\n    {\n      \"name\": \"storage.modifier.float.hlsl\",\n      \"match\": \"\\\\b(snorm|unorm)\\\\b\"\n    },\n    {\n      \"name\": \"storage.modifier.postfix.hlsl\",\n      \"match\": \"\\\\b(packoffset|register)\\\\b\"\n    },\n    {\n      \"name\": \"storage.modifier.interpolation.hlsl\",\n      \"match\": \"\\\\b(centroid|linear|nointerpolation|noperspective|sample)\\\\b\"\n    },\n    {\n      \"name\": \"storage.modifier.geometryshader.hlsl\",\n      \"match\": \"\\\\b(lineadj|line|point|triangle|triangleadj)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.other.hlsl\",\n      \"match\": \"\\\\b(string)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.object.hlsl\",\n      \"match\": \"\\\\b(AppendStructuredBuffer|Buffer|ByteAddressBuffer|ConstantBuffer|ConsumeStructuredBuffer|InputPatch|OutputPatch)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.object.rasterizerordered.hlsl\",\n      \"match\": \"\\\\b(RasterizerOrderedBuffer|RasterizerOrderedByteAddressBuffer|RasterizerOrderedStructuredBuffer|RasterizerOrderedTexture1D|RasterizerOrderedTexture1DArray|RasterizerOrderedTexture2D|RasterizerOrderedTexture2DArray|RasterizerOrderedTexture3D)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.object.rw.hlsl\",\n      \"match\": \"\\\\b(RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture1D|RWTexture1DArray|RWTexture2D|RWTexture2DArray|RWTexture3D)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.object.geometryshader.hlsl\",\n      \"match\": \"\\\\b(LineStream|PointStream|TriangleStream)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.sampler.legacy.hlsl\",\n      \"match\": \"\\\\b(sampler|sampler1D|sampler2D|sampler3D|samplerCUBE|sampler_state)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.sampler.hlsl\",\n      \"match\": \"\\\\b(SamplerState|SamplerComparisonState)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.texture.legacy.hlsl\",\n      \"match\": \"\\\\b(texture2D|textureCUBE)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.texture.hlsl\",\n      \"match\": \"\\\\b(Texture1D|Texture1DArray|Texture2D|Texture2DArray|Texture2DMS|Texture2DMSArray|Texture3D|TextureCube|TextureCubeArray)\\\\b\"\n    },\n    {\n      \"name\": \"storage.type.structured.hlsl\",\n      \"match\": \"\\\\b(cbuffer|class|interface|namespace|struct|tbuffer)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.hlsl\",\n      \"match\": \"\\\\b(FALSE|TRUE|NULL)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.fx.hlsl\",\n      \"match\": \"\\\\b(BlendState|DepthStencilState|RasterizerState)\\\\b\"\n    },\n    {\n      \"name\": \"storage.type.fx.technique.hlsl\",\n      \"match\": \"\\\\b(technique|Technique|technique10|technique11|pass)\\\\b\"\n    },\n    {\n      \"name\": \"meta.object-literal.key.fx.blendstate.hlsl\",\n      \"match\": \"\\\\b(AlphaToCoverageEnable|BlendEnable|SrcBlend|DestBlend|BlendOp|SrcBlendAlpha|DestBlendAlpha|BlendOpAlpha|RenderTargetWriteMask)\\\\b\"\n    },\n    {\n      \"name\": \"meta.object-literal.key.fx.depthstencilstate.hlsl\",\n      \"match\": \"\\\\b(DepthEnable|DepthWriteMask|DepthFunc|StencilEnable|StencilReadMask|StencilWriteMask|FrontFaceStencilFail|FrontFaceStencilZFail|FrontFaceStencilPass|FrontFaceStencilFunc|BackFaceStencilFail|BackFaceStencilZFail|BackFaceStencilPass|BackFaceStencilFunc)\\\\b\"\n    },\n    {\n      \"name\": \"meta.object-literal.key.fx.rasterizerstate.hlsl\",\n      \"match\": \"\\\\b(FillMode|CullMode|FrontCounterClockwise|DepthBias|DepthBiasClamp|SlopeScaleDepthBias|ZClipEnable|ScissorEnable|MultiSampleEnable|AntiAliasedLineEnable)\\\\b\"\n    },\n    {\n      \"name\": \"meta.object-literal.key.fx.samplerstate.hlsl\",\n      \"match\": \"\\\\b(Filter|AddressU|AddressV|AddressW|MipLODBias|MaxAnisotropy|ComparisonFunc|BorderColor|MinLOD|MaxLOD)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.blend.hlsl\",\n      \"match\": \"\\\\b(?i:ZERO|ONE|SRC_COLOR|INV_SRC_COLOR|SRC_ALPHA|INV_SRC_ALPHA|DEST_ALPHA|INV_DEST_ALPHA|DEST_COLOR|INV_DEST_COLOR|SRC_ALPHA_SAT|BLEND_FACTOR|INV_BLEND_FACTOR|SRC1_COLOR|INV_SRC1_COLOR|SRC1_ALPHA|INV_SRC1_ALPHA)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.blendop.hlsl\",\n      \"match\": \"\\\\b(?i:ADD|SUBTRACT|REV_SUBTRACT|MIN|MAX)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.depthwritemask.hlsl\",\n      \"match\": \"\\\\b(?i:ALL)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.comparisonfunc.hlsl\",\n      \"match\": \"\\\\b(?i:NEVER|LESS|EQUAL|LESS_EQUAL|GREATER|NOT_EQUAL|GREATER_EQUAL|ALWAYS)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.stencilop.hlsl\",\n      \"match\": \"\\\\b(?i:KEEP|REPLACE|INCR_SAT|DECR_SAT|INVERT|INCR|DECR)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.fillmode.hlsl\",\n      \"match\": \"\\\\b(?i:WIREFRAME|SOLID)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.cullmode.hlsl\",\n      \"match\": \"\\\\b(?i:NONE|FRONT|BACK)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.filter.hlsl\",\n      \"match\": \"\\\\b(?i:MIN_MAG_MIP_POINT|MIN_MAG_POINT_MIP_LINEAR|MIN_POINT_MAG_LINEAR_MIP_POINT|MIN_POINT_MAG_MIP_LINEAR|MIN_LINEAR_MAG_MIP_POINT|MIN_LINEAR_MAG_POINT_MIP_LINEAR|MIN_MAG_LINEAR_MIP_POINT|MIN_MAG_MIP_LINEAR|ANISOTROPIC|COMPARISON_MIN_MAG_MIP_POINT|COMPARISON_MIN_MAG_POINT_MIP_LINEAR|COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT|COMPARISON_MIN_POINT_MAG_MIP_LINEAR|COMPARISON_MIN_LINEAR_MAG_MIP_POINT|COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR|COMPARISON_MIN_MAG_LINEAR_MIP_POINT|COMPARISON_MIN_MAG_MIP_LINEAR|COMPARISON_ANISOTROPIC|TEXT_1BIT)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fx.textureaddressmode.hlsl\",\n      \"match\": \"\\\\b(?i:WRAP|MIRROR|CLAMP|BORDER|MIRROR_ONCE)\\\\b\"\n    },\n    {\n      \"name\": \"string.quoted.double.hlsl\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.hlsl\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/html.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2\",\n  \"name\": \"html\",\n  \"scopeName\": \"text.html.basic\",\n  \"injections\": {\n    \"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)\": {\n      \"comment\": \"Uses R: to ensure this matches after any other injections.\",\n      \"patterns\": [\n        {\n          \"match\": \"<\",\n          \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#xml-processing\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#doctype\"\n    },\n    {\n      \"include\": \"#cdata\"\n    },\n    {\n      \"include\": \"#tags-valid\"\n    },\n    {\n      \"include\": \"#tags-invalid\"\n    },\n    {\n      \"include\": \"#entities\"\n    }\n  ],\n  \"repository\": {\n    \"attribute\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\\\w:-])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"HTML5 attributes, not event handlers\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.$1.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute-interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"style(?![\\\\w:-])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"HTML5 style attribute\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.style.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.key-value.html\"\n                }\n              },\n              \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=[^\\\\s=<>`/]|/(?!>))\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"meta.embedded.line.css\",\n                  \"patterns\": [\n                    {\n                      \"captures\": {\n                        \"0\": {\n                          \"name\": \"source.css\"\n                        }\n                      },\n                      \"match\": \"([^\\\\s\\\"'=<>`/]|/(?!>))+\",\n                      \"name\": \"string.unquoted.html\"\n                    },\n                    {\n                      \"begin\": \"\\\"\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.begin.html\"\n                        }\n                      },\n                      \"contentName\": \"source.css\",\n                      \"end\": \"(\\\")\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"source.css-ignored-vscode\"\n                        }\n                      },\n                      \"name\": \"string.quoted.double.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#entities\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"'\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.begin.html\"\n                        }\n                      },\n                      \"contentName\": \"source.css\",\n                      \"end\": \"(')\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"source.css-ignored-vscode\"\n                        }\n                      },\n                      \"name\": \"string.quoted.single.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#entities\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"=\",\n                  \"name\": \"invalid.illegal.unexpected-equals-sign.html\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\\\w:-])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"HTML5 attributes, event handlers\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.event-handler.$1.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.key-value.html\"\n                }\n              },\n              \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=[^\\\\s=<>`/]|/(?!>))\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"meta.embedded.line.js\",\n                  \"patterns\": [\n                    {\n                      \"captures\": {\n                        \"0\": {\n                          \"name\": \"source.js\"\n                        },\n                        \"1\": {\n                          \"patterns\": [\n                            {\n                              \"include\": \"source.js\"\n                            }\n                          ]\n                        }\n                      },\n                      \"match\": \"(([^\\\\s\\\"'=<>`/]|/(?!>))+)\",\n                      \"name\": \"string.unquoted.html\"\n                    },\n                    {\n                      \"begin\": \"\\\"\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.begin.html\"\n                        }\n                      },\n                      \"contentName\": \"source.js\",\n                      \"end\": \"(\\\")\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"source.js-ignored-vscode\"\n                        }\n                      },\n                      \"name\": \"string.quoted.double.html\",\n                      \"patterns\": [\n                        {\n                          \"captures\": {\n                            \"0\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.js\"\n                                }\n                              ]\n                            }\n                          },\n                          \"match\": \"([^\\\\n\\\"/]|/(?![/*]))+\"\n                        },\n                        {\n                          \"begin\": \"//\",\n                          \"beginCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.js\"\n                            }\n                          },\n                          \"end\": \"(?=\\\")|\\\\n\",\n                          \"name\": \"comment.line.double-slash.js\"\n                        },\n                        {\n                          \"begin\": \"/\\\\*\",\n                          \"beginCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.begin.js\"\n                            }\n                          },\n                          \"end\": \"(?=\\\")|\\\\*/\",\n                          \"endCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.end.js\"\n                            }\n                          },\n                          \"name\": \"comment.block.js\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"'\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.begin.html\"\n                        }\n                      },\n                      \"contentName\": \"source.js\",\n                      \"end\": \"(')\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.definition.string.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"source.js-ignored-vscode\"\n                        }\n                      },\n                      \"name\": \"string.quoted.single.html\",\n                      \"patterns\": [\n                        {\n                          \"captures\": {\n                            \"0\": {\n                              \"patterns\": [\n                                {\n                                  \"include\": \"source.js\"\n                                }\n                              ]\n                            }\n                          },\n                          \"match\": \"([^\\\\n'/]|/(?![/*]))+\"\n                        },\n                        {\n                          \"begin\": \"//\",\n                          \"beginCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.js\"\n                            }\n                          },\n                          \"end\": \"(?=')|\\\\n\",\n                          \"name\": \"comment.line.double-slash.js\"\n                        },\n                        {\n                          \"begin\": \"/\\\\*\",\n                          \"beginCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.begin.js\"\n                            }\n                          },\n                          \"end\": \"(?=')|\\\\*/\",\n                          \"endCaptures\": {\n                            \"0\": {\n                              \"name\": \"punctuation.definition.comment.end.js\"\n                            }\n                          },\n                          \"name\": \"comment.block.js\"\n                        }\n                      ]\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"=\",\n                  \"name\": \"invalid.illegal.unexpected-equals-sign.html\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(data-[a-z\\\\-]+)(?![\\\\w:-])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"HTML5 attributes, data-*\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.data-x.$1.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute-interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(align|bgcolor|border)(?![\\\\w:-])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"invalid.deprecated.entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"HTML attributes, deprecated\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.$1.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute-interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([^\\\\x{0020}\\\"'<>/=\\\\x{0000}-\\\\x{001F}\\\\x{007F}-\\\\x{009F}\\\\x{FDD0}-\\\\x{FDEF}\\\\x{FFFE}\\\\x{FFFF}\\\\x{1FFFE}\\\\x{1FFFF}\\\\x{2FFFE}\\\\x{2FFFF}\\\\x{3FFFE}\\\\x{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.attribute-name.html\"\n            }\n          },\n          \"comment\": \"Anything else that is valid\",\n          \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n          \"name\": \"meta.attribute.unrecognized.$1.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute-interior\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s>]+\",\n          \"name\": \"invalid.illegal.character-not-allowed-here.html\"\n        }\n      ]\n    },\n    \"attribute-interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            }\n          },\n          \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n          \"patterns\": [\n            {\n              \"match\": \"([^\\\\s\\\"'=<>`/]|/(?!>))+\",\n              \"name\": \"string.unquoted.html\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.html\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.html\"\n                }\n              },\n              \"name\": \"string.quoted.double.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#entities\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.html\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.html\"\n                }\n              },\n              \"name\": \"string.quoted.single.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#entities\"\n                }\n              ]\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"invalid.illegal.unexpected-equals-sign.html\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cdata\": {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        }\n      },\n      \"contentName\": \"string.other.inline-data.html\",\n      \"end\": \"]]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.metadata.cdata.html\"\n    },\n    \"comment\": {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"-->\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G-?>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"<!--(?!>)|<!-(?=-->)\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        },\n        {\n          \"match\": \"--!>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.html\"\n        }\n      ]\n    },\n    \"core-minus-invalid\": {\n      \"comment\": \"This should be the root pattern array includes minus #tags-invalid\",\n      \"patterns\": [\n        {\n          \"include\": \"#xml-processing\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#doctype\"\n        },\n        {\n          \"include\": \"#cdata\"\n        },\n        {\n          \"include\": \"#tags-valid\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"doctype\": {\n      \"begin\": \"<!(?=(?i:DOCTYPE\\\\s))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.metadata.doctype.html\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?i:DOCTYPE)\",\n          \"name\": \"entity.name.tag.html\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.html\"\n        },\n        {\n          \"match\": \"[^\\\\s>]+\",\n          \"name\": \"entity.other.attribute-name.html\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"912\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"comment\": \"Yes this is a bit ridiculous, there are quite a lot of these\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(&)\\t(?=[a-zA-Z])\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\\n\\t\\t\\t\\t\\t\\t  | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\\n\\t\\t\\t\\t\\t\\t  | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\\n\\t\\t\\t\\t\\t\\t  | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\\n\\t\\t\\t\\t\\t\\t  | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\\n\\t\\t\\t\\t\\t\\t  | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\\n\\t\\t\\t\\t\\t\\t  | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\\n\\t\\t\\t\\t\\t\\t  | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\\n\\t\\t\\t\\t\\t\\t  | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\\n\\t\\t\\t\\t\\t\\t  | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\\n\\t\\t\\t\\t\\t\\t  | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\\n\\t\\t\\t\\t\\t\\t  | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\\n\\t\\t\\t\\t\\t\\t  | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\\n\\t\\t\\t\\t\\t\\t  | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\\n\\t\\t\\t\\t\\t\\t  | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\\n\\t\\t\\t\\t\\t\\t  | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\\n\\t\\t\\t\\t\\t\\t  | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\\n\\t\\t\\t\\t\\t\\t  | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\\n\\t\\t\\t\\t\\t\\t  | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\\n\\t\\t\\t\\t\\t\\t  | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\\n\\t\\t\\t\\t\\t\\t  | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\\n\\t\\t\\t\\t\\t\\t  | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\\n\\t\\t\\t\\t\\t\\t  | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\\n\\t\\t\\t\\t\\t\\t  | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\\n\\t\\t\\t\\t\\t\\t  | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\\n\\t\\t\\t\\t\\t\\t  | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(;)\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.character.entity.named.$2.html\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)#[0-9]+(;)\",\n          \"name\": \"constant.character.entity.numeric.decimal.html\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)#[xX][0-9a-fA-F]+(;)\",\n          \"name\": \"constant.character.entity.numeric.hexadecimal.html\"\n        },\n        {\n          \"match\": \"&(?=[a-zA-Z0-9]+;)\",\n          \"name\": \"invalid.illegal.ambiguous-ampersand.html\"\n        }\n      ]\n    },\n    \"math\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(<)(math)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.structure.$2.start.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.structure.$2.end.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.element.structure.$2.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!>)\\\\G\",\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.tag.structure.start.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#tags\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"attribute\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\\\w:-])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.other.attribute-name.html\"\n                }\n              },\n              \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n              \"name\": \"meta.attribute.$1.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-interior\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"([^\\\\x{0020}\\\"'<>/=\\\\x{0000}-\\\\x{001F}\\\\x{007F}-\\\\x{009F}\\\\x{FDD0}-\\\\x{FDEF}\\\\x{FFFE}\\\\x{FFFF}\\\\x{1FFFE}\\\\x{1FFFF}\\\\x{2FFFE}\\\\x{2FFFF}\\\\x{3FFFE}\\\\x{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.other.attribute-name.html\"\n                }\n              },\n              \"comment\": \"Anything else that is valid\",\n              \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n              \"name\": \"meta.attribute.unrecognized.$1.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-interior\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[^\\\\s>]+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.html\"\n            }\n          ]\n        },\n        \"tags\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#cdata\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.math.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.structure.math.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.math.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.math.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.structure.math.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.structure.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.math.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.inline.math.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.math.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.math.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.inline.math.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.inline.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.math.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(mglyph)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.object.math.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(mglyph)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.math.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.math.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.object.math.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.object.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(([\\\\w:]+))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.other.invalid.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)((\\\\w[^\\\\s>]*))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.other.invalid.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.other.invalid.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#tags-invalid\"\n            }\n          ]\n        }\n      }\n    },\n    \"svg\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(<)(svg)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.structure.$2.start.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.tag.structure.$2.end.html\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.element.structure.$2.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!>)\\\\G\",\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.tag.structure.start.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#tags\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"attribute\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\\\w:-])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.other.attribute-name.html\"\n                }\n              },\n              \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n              \"name\": \"meta.attribute.$1.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-interior\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"([^\\\\x{0020}\\\"'<>/=\\\\x{0000}-\\\\x{001F}\\\\x{007F}-\\\\x{009F}\\\\x{FDD0}-\\\\x{FDEF}\\\\x{FFFE}\\\\x{FFFF}\\\\x{1FFFE}\\\\x{1FFFF}\\\\x{2FFFE}\\\\x{2FFFF}\\\\x{3FFFE}\\\\x{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.other.attribute-name.html\"\n                }\n              },\n              \"comment\": \"Anything else that is valid\",\n              \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n              \"name\": \"meta.attribute.unrecognized.$1.html\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-interior\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[^\\\\s>]+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.html\"\n            }\n          ]\n        },\n        \"tags\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#cdata\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.svg.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.metadata.svg.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.svg.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.svg.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.metadata.svg.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.metadata.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.svg.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.structure.svg.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.svg.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.structure.svg.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.structure.svg.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.structure.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.svg.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.inline.svg.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.svg.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.inline.svg.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.inline.svg.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.inline.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.svg.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.object.svg.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.svg.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.object.svg.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.object.svg.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.object.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.svg.$2.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.deprecated.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.other.svg.$2.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.svg.$2.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.deprecated.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.svg.$2.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.deprecated.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.other.svg.$2.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.other.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.void.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"match\": \"(?i)(<)(([\\\\w:]+))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(/>))\",\n              \"name\": \"meta.element.other.invalid.html\"\n            },\n            {\n              \"begin\": \"(?i)(<)((\\\\w[^\\\\s>]*))(?=\\\\s|/?>)(?:(([^\\\"'>]|\\\"[^\\\"]*\\\"|'[^']*')*)(>))?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"end\": \"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.other.invalid.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.unrecognized-tag.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.element.other.invalid.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<!>)\\\\G\",\n                  \"end\": \"(?=/>)|>\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"name\": \"meta.tag.other.invalid.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#tags\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#tags-invalid\"\n            }\n          ]\n        }\n      }\n    },\n    \"tags-invalid\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(</?)((\\\\w[^\\\\s>]*))(?<!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.unrecognized-tag.html\"\n            }\n          },\n          \"end\": \"((?: ?/)?>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.other.$2.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tags-valid\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=<(?i:style)\\\\b(?!-))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.html\"\n            }\n          },\n          \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?i)(<)(style)(?=\\\\s|/?>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.style.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                }\n              },\n              \"end\": \"(?i)((<)/)(style)\\\\s*(>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.style.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"source.css-ignored-vscode\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.embedded.block.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.tag.end.html\"\n                    }\n                  },\n                  \"end\": \"(>)\",\n                  \"name\": \"meta.tag.metadata.style.start.html\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attribute\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?!\\\\G)\",\n                  \"end\": \"(?=</(?i:style))\",\n                  \"name\": \"source.css\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.css\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=<(?i:script)\\\\b(?!-))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.embedded.leading.html\"\n            }\n          },\n          \"end\": \"(?!\\\\G)([ \\\\t]*$\\\\n?)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.embedded.trailing.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(<)((?i:script))\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.script.start.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                }\n              },\n              \"end\": \"(/)((?i:script))(>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.tag.metadata.script.end.html\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.html\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.tag.html\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.html\"\n                }\n              },\n              \"name\": \"meta.embedded.block.html\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G\",\n                  \"end\": \"(?=/)\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"(>)\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"meta.tag.metadata.script.start.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.end.html\"\n                        }\n                      },\n                      \"end\": \"((<))(?=/(?i:script))\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"meta.tag.metadata.script.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.begin.html\"\n                        },\n                        \"2\": {\n                          \"name\": \"source.js-ignored-vscode\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"begin\": \"\\\\G\",\n                          \"end\": \"(?=</(?i:script))\",\n                          \"name\": \"source.js\",\n                          \"patterns\": [\n                            {\n                              \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n                              \"beginCaptures\": {\n                                \"1\": {\n                                  \"name\": \"punctuation.whitespace.comment.leading.js\"\n                                }\n                              },\n                              \"end\": \"(?!\\\\G)\",\n                              \"patterns\": [\n                                {\n                                  \"begin\": \"//\",\n                                  \"beginCaptures\": {\n                                    \"0\": {\n                                      \"name\": \"punctuation.definition.comment.js\"\n                                    }\n                                  },\n                                  \"end\": \"(?=</script)|\\\\n\",\n                                  \"name\": \"comment.line.double-slash.js\"\n                                }\n                              ]\n                            },\n                            {\n                              \"begin\": \"/\\\\*\",\n                              \"captures\": {\n                                \"0\": {\n                                  \"name\": \"punctuation.definition.comment.js\"\n                                }\n                              },\n                              \"end\": \"\\\\*/|(?=</script)\",\n                              \"name\": \"comment.block.js\"\n                            },\n                            {\n                              \"include\": \"source.js\"\n                            }\n                          ]\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"\\\\G\",\n                      \"end\": \"(?ix:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?=>\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Tag without type attribute\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | type(?=[\\\\s=])\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  \\t(?!\\\\s*=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t''\\t\\t\\t\\t\\t\\t\\t\\t# Empty\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | \\\"\\\"\\t\\t\\t\\t\\t\\t\\t\\t\\t#   Values\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | ('|\\\"|)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttext/\\t\\t\\t\\t\\t\\t\\t# Text mime-types\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tjavascript(1\\\\.[0-5])?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | x-javascript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | jscript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | livescript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (x-)?ecmascript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | babel\\t\\t\\t\\t\\t\\t# Javascript variant currently\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t#   recognized as such\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  \\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | application/\\t\\t\\t\\t\\t# Application mime-types\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  \\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(x-)?javascript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (x-)?ecmascript\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | module\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  \\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\s\\\"'>]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\",\n                      \"name\": \"meta.tag.metadata.script.start.html\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#attribute\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?ix:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?=\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttype\\\\s*=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t('|\\\"|)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttext/\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx-handlebars\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (x-(handlebars-)?|ng-)?template\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | html\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\s\\\"'>]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\",\n                      \"end\": \"((<))(?=/(?i:script))\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"meta.tag.metadata.script.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.begin.html\"\n                        },\n                        \"2\": {\n                          \"name\": \"text.html.basic\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"begin\": \"\\\\G\",\n                          \"end\": \"(>)\",\n                          \"endCaptures\": {\n                            \"1\": {\n                              \"name\": \"punctuation.definition.tag.end.html\"\n                            }\n                          },\n                          \"name\": \"meta.tag.metadata.script.start.html\",\n                          \"patterns\": [\n                            {\n                              \"include\": \"#attribute\"\n                            }\n                          ]\n                        },\n                        {\n                          \"begin\": \"(?!\\\\G)\",\n                          \"end\": \"(?=</(?i:script))\",\n                          \"name\": \"text.html.basic\",\n                          \"patterns\": [\n                            {\n                              \"include\": \"text.html.basic\"\n                            }\n                          ]\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?=(?i:type))\",\n                      \"end\": \"(<)(?=/(?i:script))\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"meta.tag.metadata.script.end.html\"\n                        },\n                        \"1\": {\n                          \"name\": \"punctuation.definition.tag.begin.html\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"begin\": \"\\\\G\",\n                          \"end\": \"(>)\",\n                          \"endCaptures\": {\n                            \"1\": {\n                              \"name\": \"punctuation.definition.tag.end.html\"\n                            }\n                          },\n                          \"name\": \"meta.tag.metadata.script.start.html\",\n                          \"patterns\": [\n                            {\n                              \"include\": \"#attribute\"\n                            }\n                          ]\n                        },\n                        {\n                          \"begin\": \"(?!\\\\G)\",\n                          \"end\": \"(?=</(?i:script))\",\n                          \"name\": \"source.unknown\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(base|link|meta)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.metadata.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(noscript|title)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.metadata.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)(noscript|title)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.metadata.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(col|hr|input)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.structure.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.structure.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.structure.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(area|br|wbr)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.inline.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.inline.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.inline.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(embed|img|param|source|track)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((basefont|isindex))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.metadata.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((center|frameset|noembed|noframes))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.structure.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)((center|frameset|noembed|noframes))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.structure.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.inline.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.inline.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((frame))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.void.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((applet))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)((applet))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.deprecated.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.object.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.no-longer-supported.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.other.$2.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.no-longer-supported.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.other.$2.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#math\"\n        },\n        {\n          \"include\": \"#svg\"\n        },\n        {\n          \"begin\": \"(<)([a-zA-Z][.0-9_a-zA-Z\\\\x{00B7}\\\\x{00C0}-\\\\x{00D6}\\\\x{00D8}-\\\\x{00F6}\\\\x{00F8}-\\\\x{037D}\\\\x{037F}-\\\\x{1FFF}\\\\x{200C}-\\\\x{200D}\\\\x{203F}-\\\\x{2040}\\\\x{2070}-\\\\x{218F}\\\\x{2C00}-\\\\x{2FEF}\\\\x{3001}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFFD}\\\\x{10000}-\\\\x{EFFFF}]*-[\\\\-.0-9_a-zA-Z\\\\x{00B7}\\\\x{00C0}-\\\\x{00D6}\\\\x{00D8}-\\\\x{00F6}\\\\x{00F8}-\\\\x{037D}\\\\x{037F}-\\\\x{1FFF}\\\\x{200C}-\\\\x{200D}\\\\x{203F}-\\\\x{2040}\\\\x{2070}-\\\\x{218F}\\\\x{2C00}-\\\\x{2FEF}\\\\x{3001}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFFD}\\\\x{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"/?>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.custom.start.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(</)([a-zA-Z][.0-9_a-zA-Z\\\\x{00B7}\\\\x{00C0}-\\\\x{00D6}\\\\x{00D8}-\\\\x{00F6}\\\\x{00F8}-\\\\x{037D}\\\\x{037F}-\\\\x{1FFF}\\\\x{200C}-\\\\x{200D}\\\\x{203F}-\\\\x{2040}\\\\x{2070}-\\\\x{218F}\\\\x{2C00}-\\\\x{2FEF}\\\\x{3001}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFFD}\\\\x{10000}-\\\\x{EFFFF}]*-[\\\\-.0-9_a-zA-Z\\\\x{00B7}\\\\x{00C0}-\\\\x{00D6}\\\\x{00D8}-\\\\x{00F6}\\\\x{00F8}-\\\\x{037D}\\\\x{037F}-\\\\x{1FFF}\\\\x{200C}-\\\\x{200D}\\\\x{203F}-\\\\x{2040}\\\\x{2070}-\\\\x{218F}\\\\x{2C00}-\\\\x{2FEF}\\\\x{3001}-\\\\x{D7FF}\\\\x{F900}-\\\\x{FDCF}\\\\x{FDF0}-\\\\x{FFFD}\\\\x{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"name\": \"meta.tag.custom.end.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        }\n      ]\n    },\n    \"xml-processing\": {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.metadata.processing.xml.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ini.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/ini.tmbundle/blob/master/Syntaxes/Ini.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/ini.tmbundle/commit/2af0cbb0704940f967152616f2f1ff0aae6287a6\",\n  \"name\": \"ini\",\n  \"scopeName\": \"source.ini\",\n  \"patterns\": [\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ini\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ini\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.ini\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ini\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \";\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ini\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.semicolon.ini\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.definition.ini\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.ini\"\n        }\n      },\n      \"match\": \"\\\\b([a-zA-Z0-9_.-]+)\\\\b\\\\s*(=)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.ini\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.ini\"\n        }\n      },\n      \"match\": \"^(\\\\[)(.*?)(\\\\])\",\n      \"name\": \"entity.name.section.group-title.ini\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ini\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ini\"\n        }\n      },\n      \"name\": \"string.quoted.single.ini\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.ini\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ini\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ini\"\n        }\n      },\n      \"name\": \"string.quoted.double.ini\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/java.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-java/commit/29f977dc42a7e2568b39bb6fb34c4ef108eb59b3\",\n  \"name\": \"java\",\n  \"scopeName\": \"source.java\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(package)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.package.java\"\n        }\n      },\n      \"end\": \"\\\\s*(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.java\"\n        }\n      },\n      \"name\": \"meta.package.java\",\n      \"contentName\": \"storage.modifier.package.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!_)_(?=\\\\s*(\\\\.|;))|\\\\b\\\\d+|-+\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"[A-Z]+\",\n          \"name\": \"invalid.deprecated.package_name_not_lowercase.java\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?<!\\\\$)\\n(abstract|assert|boolean|break|byte|case|catch|char|class|\\nconst|continue|default|do|double|else|enum|extends|final|\\nfinally|float|for|goto|if|implements|import|instanceof|int|\\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\\nthrow|throws|transient|try|void|volatile|while|yield|\\ntrue|false|null)\\\\b\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.java\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(import)\\\\b\\\\s*\\\\b(static)?\\\\b\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.java\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.java\"\n        }\n      },\n      \"end\": \"\\\\s*(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.java\"\n        }\n      },\n      \"name\": \"meta.import.java\",\n      \"contentName\": \"storage.modifier.import.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\s*\\\\*\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?<!_)_(?=\\\\s*(\\\\.|;))|\\\\b\\\\d+|-+\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"(?x)\\\\b(?<!\\\\$)\\n(abstract|assert|boolean|break|byte|case|catch|char|class|\\nconst|continue|default|do|double|else|enum|extends|final|\\nfinally|float|for|goto|if|implements|import|instanceof|int|\\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\\nthrow|throws|transient|try|void|volatile|while|yield|\\ntrue|false|null)\\\\b\",\n          \"name\": \"invalid.illegal.character_not_allowed_here.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.java\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"variable.language.wildcard.java\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#comments-javadoc\"\n    },\n    {\n      \"include\": \"#code\"\n    },\n    {\n      \"include\": \"#module\"\n    }\n  ],\n  \"repository\": {\n    \"all-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#primitive-types\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)\\\\s*([^\\\\s(]+))(\\\\()\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.annotation.java\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.java\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.java\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.java\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(@)(interface)\\\\s+(\\\\w*)|((@)\\\\s*(\\\\w+))\",\n          \"name\": \"meta.declaration.annotation.java\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.annotation.java\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.annotation.java\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.annotation.java\"\n            }\n          }\n        }\n      ]\n    },\n    \"anonymous-block-and-instance-initializer\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.bracket.curly.java\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.bracket.curly.java\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"anonymous-classes-and-new\": {\n      \"begin\": \"\\\\bnew\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.new.java\"\n        }\n      },\n      \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"begin\": \"(?<=\\\\))\",\n          \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.inner-class.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.inner-class.end.bracket.curly.java\"\n                }\n              },\n              \"name\": \"meta.inner-class.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#class-body\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\])\",\n          \"end\": \"(?=;|\\\\)|\\\\]|\\\\.|,|\\\\?|:|}|\\\\+|\\\\-|\\\\*|\\\\/(?!\\\\/|\\\\*)|%|!|&|\\\\||\\\\^|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.array-initializer.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.array-initializer.end.bracket.curly.java\"\n                }\n              },\n              \"name\": \"meta.array-initializer.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens\"\n        }\n      ]\n    },\n    \"assertions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(assert)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.assert.java\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.declaration.assertion.java\",\n          \"patterns\": [\n            {\n              \"match\": \":\",\n              \"name\": \"keyword.operator.assert.expression-separator.java\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s-]*\\\\b(?:class|(?<!@)interface|enum)\\\\s+[\\\\w$]+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.class.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.java\"\n            }\n          },\n          \"match\": \"(class|(?<!@)interface|enum)\\\\s+([\\\\w$]+)\",\n          \"name\": \"meta.class.identifier.java\"\n        },\n        {\n          \"begin\": \"extends\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.extends.java\"\n            }\n          },\n          \"end\": \"(?={|implements|permits)\",\n          \"name\": \"meta.definition.class.inherited.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|permits|\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(permits)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.permits.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*extends|implements|\\\\{)\",\n          \"name\": \"meta.definition.class.permits.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.class.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.class.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments-javadoc\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#enums\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#static-initializer\"\n        },\n        {\n          \"include\": \"#class-fields-and-methods\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#member-variables\"\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"class-fields-and-methods\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\=)\",\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#methods\"\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#enums\"\n        },\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#record\"\n        },\n        {\n          \"include\": \"#anonymous-block-and-instance-initializer\"\n        },\n        {\n          \"include\": \"#try-catch-finally\"\n        },\n        {\n          \"include\": \"#assertions\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#constants-and-special-vars\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#anonymous-classes-and-new\"\n        },\n        {\n          \"include\": \"#lambda-expression\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#method-call\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#variables-local\"\n        },\n        {\n          \"include\": \"#objects\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.java\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.java\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.java\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.java\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.java\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-javadoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.java\"\n            }\n          },\n          \"name\": \"comment.block.javadoc.java\",\n          \"patterns\": [\n            {\n              \"match\": \"@(author|deprecated|return|see|serial|since|version)\\\\b\",\n              \"name\": \"keyword.other.documentation.javadoc.java\"\n            },\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.java\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:exception|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.java\"\n                }\n              }\n            },\n            {\n              \"match\": \"{(@link)\\\\s+(\\\\S+)?#([\\\\w$]+\\\\s*\\\\([^\\\\(\\\\)]*\\\\)).*?}\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.javadoc.java\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.java\"\n                },\n                \"3\": {\n                  \"name\": \"variable.parameter.java\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"constants-and-special-vars\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.java\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"variable.language.this.java\"\n        },\n        {\n          \"match\": \"\\\\bsuper\\\\b\",\n          \"name\": \"variable.language.java\"\n        }\n      ]\n    },\n    \"enums\": {\n      \"begin\": \"^\\\\s*([\\\\w\\\\s]*)(enum)\\\\s+(\\\\w+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#storage-modifiers\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.enum.java\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.enum.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.enum.java\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(extends)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.java\"\n            }\n          },\n          \"end\": \"(?={|\\\\bimplements\\\\b)\",\n          \"name\": \"meta.definition.class.inherited.classes.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(implements)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?={|\\\\bextends\\\\b)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.enum.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<={)\",\n              \"end\": \"(?=;|})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments-javadoc\"\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"\\\\b(\\\\w+)\\\\b\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"constant.other.enum.java\"\n                    }\n                  },\n                  \"end\": \"(,)|(?=;|})\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.separator.delimiter.java\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comments-javadoc\"\n                    },\n                    {\n                      \"include\": \"#comments\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.round.java\"\n                        }\n                      },\n                      \"end\": \"\\\\)\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.round.java\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#code\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"{\",\n                      \"beginCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.curly.java\"\n                        }\n                      },\n                      \"end\": \"}\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"punctuation.bracket.curly.java\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#class-body\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#class-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call\": {\n      \"begin\": \"([A-Za-z_$][\\\\w$]*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.java\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n        }\n      },\n      \"name\": \"meta.function-call.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"generics\": {\n      \"begin\": \"<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.angle.java\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.bracket.angle.java\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(extends|super)\\\\b\",\n          \"name\": \"storage.modifier.$1.java\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\\\s*<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_][a-zA-Z0-9$_]*\",\n          \"name\": \"storage.type.generic.java\"\n        },\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"storage.type.generic.wildcard.java\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"punctuation.separator.types.java\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bthrow\\\\b\",\n          \"name\": \"keyword.control.throw.java\"\n        },\n        {\n          \"match\": \"\\\\?|:\",\n          \"name\": \"keyword.control.ternary.java\"\n        },\n        {\n          \"match\": \"\\\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\\\b\",\n          \"name\": \"keyword.control.java\"\n        },\n        {\n          \"match\": \"\\\\b(instanceof)\\\\b\",\n          \"name\": \"keyword.operator.instanceof.java\"\n        },\n        {\n          \"match\": \"(<<|>>>?|~|\\\\^)\",\n          \"name\": \"keyword.operator.bitwise.java\"\n        },\n        {\n          \"match\": \"((&|\\\\^|\\\\||<<|>>>?)=)\",\n          \"name\": \"keyword.operator.assignment.bitwise.java\"\n        },\n        {\n          \"match\": \"(===?|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.java\"\n        },\n        {\n          \"match\": \"([+*/%-]=)\",\n          \"name\": \"keyword.operator.assignment.arithmetic.java\"\n        },\n        {\n          \"match\": \"(=)\",\n          \"name\": \"keyword.operator.assignment.java\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.java\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.java\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.java\"\n        },\n        {\n          \"match\": \"(\\\\||&)\",\n          \"name\": \"keyword.operator.bitwise.java\"\n        },\n        {\n          \"match\": \"\\\\b(const|goto)\\\\b\",\n          \"name\": \"keyword.reserved.java\"\n        }\n      ]\n    },\n    \"lambda-expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"->\",\n          \"name\": \"storage.type.function.arrow.java\"\n        }\n      ]\n    },\n    \"member-variables\": {\n      \"begin\": \"(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\",\n      \"end\": \"(?=\\\\=|;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#primitive-arrays\"\n        },\n        {\n          \"include\": \"#object-types\"\n        }\n      ]\n    },\n    \"method-call\": {\n      \"begin\": \"(\\\\.)\\\\s*([A-Za-z_$][\\\\w$]*)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.java\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.java\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n        }\n      },\n      \"name\": \"meta.method-call.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"methods\": {\n      \"begin\": \"(?!new)(?=[\\\\w<].*\\\\s+)(?=([^=/]|/(?!/))+\\\\()\",\n      \"end\": \"(})|(?=;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.method.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.method.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"begin\": \"(\\\\w+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.method.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameters\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"begin\": \"(?=\\\\w.*\\\\s+\\\\w+\\\\s*\\\\()\",\n          \"end\": \"(?=\\\\s+\\\\w+\\\\s*\\\\()\",\n          \"name\": \"meta.method.return-type.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#all-types\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#throws\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.method.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"module\": {\n      \"begin\": \"((open)\\\\s)?(module)\\\\s+(\\\\w+)\",\n      \"end\": \"}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.java\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.module.java\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.module.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.module.java\",\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.module.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.module.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#comments-javadoc\"\n            },\n            {\n              \"match\": \"\\\\b(requires|transitive|exports|opens|to|uses|provides|with)\\\\b\",\n              \"name\": \"keyword.module.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\\\b(?<!\\\\$)\\n0(x|X)\\n(\\n  (?<!\\\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\\\.)\\n  |\\n  (\\n    [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\\\.?\\n    |\\n    ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\n  )\\n  [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\\n)\\n\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.hex.java\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.binary.java\"\n        },\n        {\n          \"match\": \"\\\\b(?<!\\\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\\\b(?!\\\\$)\",\n          \"name\": \"constant.numeric.octal.java\"\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)\\n(\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.\\\\B(?!\\\\.)\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?\\\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\\\b\\n  |\\n  (?<!\\\\.)\\\\B\\\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\\\b\\n  |\\n  \\\\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\\\b\\n  |\\n  \\\\b(0|[1-9]([0-9_]*[0-9])?)(?!\\\\.)[Ll]?\\\\b\\n)\\n(?!\\\\$)\",\n          \"name\": \"constant.numeric.decimal.java\"\n        }\n      ]\n    },\n    \"object-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*)([A-Z_]\\\\w*)\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"storage.type.object.array.java\"\n            }\n          },\n          \"end\": \"(?!\\\\s*\\\\[)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#parens\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\s*(?=<)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b((?:[A-Za-z_]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\b((?=\\\\s*[A-Za-z$_\\\\n])|(?=\\\\s*\\\\.\\\\.\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[A-Za-z_]\\\\w*\",\n                  \"name\": \"storage.type.java\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.period.java\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"object-types-inherited\": {\n      \"patterns\": [\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"match\": \"\\\\b(?:[A-Z]\\\\w*\\\\s*(\\\\.)\\\\s*)*[A-Z]\\\\w*\\\\b\",\n          \"name\": \"entity.other.inherited-class.java\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        }\n      ]\n    },\n    \"objects\": {\n      \"match\": \"(?<![\\\\w$])[a-zA-Z_$][\\\\w$]*(?=\\\\s*\\\\.\\\\s*[\\\\w$]+)\",\n      \"name\": \"variable.other.object.java\"\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bfinal\\\\b\",\n          \"name\": \"storage.modifier.java\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"\\\\w+\",\n          \"name\": \"variable.parameter.java\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"\\\\.\\\\.\\\\.\",\n          \"name\": \"punctuation.definition.parameters.varargs.java\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.round.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.square.java\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.square.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.curly.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.bracket.curly.java\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primitive-arrays\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b\\\\s*(?=\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.primitive.array.java\"\n            }\n          },\n          \"end\": \"(?!\\\\s*\\\\[)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primitive-types\": {\n      \"match\": \"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b\",\n      \"name\": \"storage.type.primitive.java\"\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\.)\\\\s*([a-zA-Z_$][\\\\w$]*)(?=\\\\s*\\\\.\\\\s*[a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.java\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([a-zA-Z_$][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.property.java\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\.)\\\\s*([0-9][\\\\w$]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.period.java\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.identifier.java\"\n            }\n          }\n        }\n      ]\n    },\n    \"record\": {\n      \"begin\": \"(?=\\\\w?[\\\\w\\\\s]*\\\\b(?:record)\\\\s+[\\\\w$]+)\",\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.record.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#generics\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(record)\\\\s+([\\\\w$]+)(<[\\\\w$]+>)?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.java\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.record.java\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#generics\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n            }\n          },\n          \"name\": \"meta.record.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(implements)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*\\\\{)\",\n          \"name\": \"meta.definition.class.implemented.interfaces.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-types-inherited\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#record-body\"\n        }\n      ]\n    },\n    \"record-body\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.class.begin.bracket.curly.java\"\n        }\n      },\n      \"end\": \"(?=})\",\n      \"name\": \"meta.record.body.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#record-constructor\"\n        },\n        {\n          \"include\": \"#class-body\"\n        }\n      ]\n    },\n    \"record-constructor\": {\n      \"begin\": \"(?!new)(?=[\\\\w<].*\\\\s+)(?=([^\\\\(=/]|/(?!/))+(?={))\",\n      \"end\": \"(})|(?=;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.method.end.bracket.curly.java\"\n        }\n      },\n      \"name\": \"meta.method.java\",\n      \"patterns\": [\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"begin\": \"(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.java\"\n            }\n          },\n          \"end\": \"(?=\\\\s*{)\",\n          \"name\": \"meta.method.identifier.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.method.begin.bracket.curly.java\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"contentName\": \"meta.method.body.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"static-initializer\": {\n      \"patterns\": [\n        {\n          \"include\": \"#anonymous-block-and-instance-initializer\"\n        },\n        {\n          \"match\": \"static\",\n          \"name\": \"storage.modifier.java\"\n        }\n      ]\n    },\n    \"storage-modifiers\": {\n      \"match\": \"\\\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\\\b\",\n      \"name\": \"storage.modifier.java\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.java\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.java\"\n            }\n          },\n          \"name\": \"string.quoted.double.java\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.java\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.java\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.java\"\n            }\n          },\n          \"name\": \"string.quoted.single.java\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"throws\": {\n      \"begin\": \"throws\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"storage.modifier.java\"\n        }\n      },\n      \"end\": \"(?={|;)\",\n      \"name\": \"meta.throwables.java\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.java\"\n        },\n        {\n          \"match\": \"[a-zA-Z$_][\\\\.a-zA-Z0-9$_]*\",\n          \"name\": \"storage.type.java\"\n        }\n      ]\n    },\n    \"try-catch-finally\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\btry\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.try.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.try.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.try.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.resources.begin.bracket.round.java\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.resources.end.bracket.round.java\"\n                }\n              },\n              \"name\": \"meta.try.resources.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.try.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.try.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(catch)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.catch.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.catch.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.catch.java\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.bracket.round.java\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.bracket.round.java\"\n                }\n              },\n              \"contentName\": \"meta.catch.parameters.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#storage-modifiers\"\n                },\n                {\n                  \"begin\": \"[a-zA-Z$_][\\\\.a-zA-Z0-9$_]*\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"storage.type.java\"\n                    }\n                  },\n                  \"end\": \"(\\\\|)|(?=\\\\))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.catch.separator.java\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#comments\"\n                    },\n                    {\n                      \"match\": \"\\\\w+\",\n                      \"captures\": {\n                        \"0\": {\n                          \"name\": \"variable.parameter.java\"\n                        }\n                      }\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.catch.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.catch.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bfinally\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.finally.java\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.finally.end.bracket.curly.java\"\n            }\n          },\n          \"name\": \"meta.finally.java\",\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.finally.begin.bracket.curly.java\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.finally.body.java\",\n              \"patterns\": [\n                {\n                  \"include\": \"#code\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"begin\": \"(?x)\\n(?=\\n  \\\\b\\n  (\\n    (void|boolean|byte|char|short|int|float|long|double)\\n    |\\n    (?>(\\\\w+\\\\.)*[A-Z_]+\\\\w*) # e.g. `javax.ws.rs.Response`, or `String`\\n  )\\n  \\\\b\\n  \\\\s*\\n  (\\n    <[\\\\w<>,\\\\.?\\\\s\\\\[\\\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\\n  )?\\n  \\\\s*\\n  (\\n    (\\\\[\\\\])* # int[][]\\n  )?\\n  \\\\s+\\n  [A-Za-z_$][\\\\w$]* # At least one identifier after space\\n  ([\\\\w\\\\[\\\\],$][\\\\w\\\\[\\\\],\\\\s]*)? # possibly primitive array or additional identifiers\\n  \\\\s*(=|:|;)\\n)\",\n      \"end\": \"(?=\\\\=|:|;)\",\n      \"name\": \"meta.definition.variable.java\",\n      \"patterns\": [\n        {\n          \"match\": \"([A-Za-z$_][\\\\w$]*)(?=\\\\s*(\\\\[\\\\])*\\\\s*(;|:|=|,))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.definition.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"variables-local\": {\n      \"begin\": \"(?=\\\\b(var)\\\\b\\\\s+[A-Za-z_$][\\\\w$]*\\\\s*(=|:|;))\",\n      \"end\": \"(?=\\\\=|:|;)\",\n      \"name\": \"meta.definition.variable.local.java\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bvar\\\\b\",\n          \"name\": \"storage.type.local.java\"\n        },\n        {\n          \"match\": \"([A-Za-z$_][\\\\w$]*)(?=\\\\s*(\\\\[\\\\])*\\\\s*(=|:|;))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.definition.java\"\n            }\n          }\n        },\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/javascript.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/TypeScript-TmLanguage/commit/0dfae8cc4807fecfbf8f1add095d9817df824c95\",\n  \"name\": \"javascript\",\n  \"scopeName\": \"source.js\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#shebang\"\n    }\n  ],\n  \"repository\": {\n    \"shebang\": {\n      \"name\": \"comment.line.shebang.js\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.js\"\n        }\n      }\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        },\n        {\n          \"name\": \"storage.modifier.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.loop.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.js\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.switch.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#paren-expression-possibly-arrow\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#instanceof-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.js\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.js\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.js\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.js\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.js\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.js\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-variable\"\n                },\n                {\n                  \"include\": \"#var-single-variable\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var.expr.js\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.js\"\n            }\n          },\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.js\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.js\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.js\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-const\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.js\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-const\"\n                },\n                {\n                  \"include\": \"#var-single-const\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js entity.name.function.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.constant.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.readwrite.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.constant.js entity.name.function.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js variable.other.constant.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructuring-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.js\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element-const\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#array-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.js variable.other.readwrite.js\"\n        }\n      }\n    },\n    \"destructuring-variable-rest-const\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.js variable.other.constant.js\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"object-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element-const\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element-const\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.js\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.js\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.js\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.js\",\n      \"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        }\n      },\n      \"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.definition.property.js entity.name.function.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.definiteassignment.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.definition.property.js variable.object.property.js\",\n          \"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.js\",\n          \"match\": \"\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.definiteassignment.js\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.function.js\"\n        },\n        \"5\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        },\n        \"6\": {\n          \"name\": \"meta.definition.function.js entity.name.function.js\"\n        }\n      },\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.js entity.name.function.js\"\n        }\n      },\n      \"end\": \"(?=;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"name\": \"meta.definition.function.js entity.name.function.js\",\n      \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.js\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.new.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.property.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.js\",\n      \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.js entity.name.function.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.js\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.js\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.js\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.js\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.js\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.modifier.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.js\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.expression.in.js\"\n        }\n      },\n      \"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.type.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.optional.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.js\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#parameter-type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.class.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.interface.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#async-modifier\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"async-modifier\": {\n      \"name\": \"storage.modifier.async.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.enum.js\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.enum.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.js\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.js\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.namespace.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.type.js\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.alias.js\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.intrinsic.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.js\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.require.js\"\n            },\n            \"8\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.js\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.js\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.js\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.js\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.js\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.import.js\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.type.js\"\n        }\n      },\n      \"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n          \"end\": \"\\\\bfrom\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.from.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.default.js\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.js\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.js\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-assert-clause\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-assert-clause\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(assert)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.assert.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"meta.object-literal.key.js\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n        },\n        {\n          \"name\": \"punctuation.separator.key-value.js\",\n          \"match\": \":\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.default.js\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.import-export-all.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.readwrite.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.default.js\"\n            },\n            \"7\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.js\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.js\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\btype)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.alias.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"switch-expression.expr.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.js\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.js\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.js\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.js\"\n                }\n              },\n              \"end\": \"(?=:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(:)\\\\s*(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"case-clause.expr.js punctuation.definition.section.case-statement.js\"\n                },\n                \"2\": {\n                  \"name\": \"meta.block.js punctuation.definition.block.js\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.block.js punctuation.definition.block.js\"\n                }\n              },\n              \"contentName\": \"meta.block.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"#statements\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(:)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"case-clause.expr.js punctuation.definition.section.case-statement.js\"\n                }\n              }\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"keyword.control.loop.js\",\n          \"match\": \"await\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#var-expr\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n          \"end\": \"(?=;|$|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.js\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.regexp.js\",\n              \"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.js\"\n                }\n              },\n              \"end\": \"(/)([dgimsuy]*)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.js\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#regexp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.js\",\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.js meta.object-literal.key.js\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js meta.object-literal.key.js\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js meta.object-literal.key.js\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numeric-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js punctuation.separator.key-value.js\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js\"\n                }\n              },\n              \"end\": \"(?<=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.js\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.js\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-inside-possibly-arrow-parens\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js\"\n                }\n              },\n              \"end\": \"(?<=\\\\>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.js\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.js\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#paren-expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.js\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call-target\": {\n      \"patterns\": [\n        {\n          \"include\": \"#support-function-call-identifiers\"\n        },\n        {\n          \"name\": \"entity.name.function.js\",\n          \"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"function-call-optionals\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.js punctuation.accessor.optional.js\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.function-call.js keyword.operator.definiteassignment.js\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"support-function-call-identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.js\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.js\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"instanceof-expr\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.instanceof.js\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<))\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#possibly-arrow-return-type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow-with-typeparameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-inside-possibly-arrow-parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-inside-possibly-arrow-parens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.js\"\n            }\n          },\n          \"end\": \"\\\\*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js\"\n            }\n          },\n          \"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+)|(\\\\s+\\\\<))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.js\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.js\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.js\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.js\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.js\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.js\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.js\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.js\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.js\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.js\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.js\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n          \"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.expression.typeof.js\"\n        }\n      },\n      \"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.js\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.binary.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.octal.js\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.js\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"8\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"9\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"10\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"11\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"12\": {\n              \"name\": \"meta.delimiter.decimal.period.js\"\n            },\n            \"13\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            },\n            \"14\": {\n              \"name\": \"storage.type.numeric.bigint.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.promise.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.importmeta.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.target.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.js\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.js\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.js\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.js\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.js\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.js\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.js\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?=[,)])|(?==[^>])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.js\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.js\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.js\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.js\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"possibly-arrow-return-type\": {\n      \"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"contentName\": \"meta.arrow.js meta.return.type.arrow.js\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"arrow-return-type-body\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.js\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.js\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js\",\n          \"match\": \"(=)(?!>)\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"name\": \"meta.type.parameters.js\",\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.js\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-arguments-body\"\n        }\n      ]\n    },\n    \"type-arguments-body\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.js\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.js\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.rest.js\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.js\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            }\n          },\n          \"end\": \"(?<=:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.js\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.js\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.js\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.constructor.js storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.constructor.js keyword.control.new.js\"\n            }\n          },\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.constructor.js\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.new.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.js\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.js\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.js\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"include\": \"#type-infer\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.js\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n        }\n      ]\n    },\n    \"type-infer\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n          \"name\": \"meta.type.infer.js\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.expression.infer.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.js\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.expression.extends.js\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.expression.is.js\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.js\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js variable.language.this.js\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.type.asserts.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.is.js\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            },\n            \"4\": {\n              \"name\": \"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.js punctuation.definition.typeparameters.end.js\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.js\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.js punctuation.definition.typeparameters.end.js\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.js\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.js\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.js\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.js\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.js\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.js\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.js\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.js\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-call\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.js\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#support-function-call-identifiers\"\n                },\n                {\n                  \"name\": \"entity.name.function.tagged-template.js\",\n                  \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js\"\n            }\n          },\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.js\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.js\"\n    },\n    \"type-string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template-type\"\n        }\n      ]\n    },\n    \"template-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.js\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.js\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-type-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-type-substitution-element\": {\n      \"name\": \"meta.template.expression.js\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.js\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.js\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.js\",\n          \"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.js\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.js\",\n          \"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.js\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            },\n            \"5\": {\n              \"name\": \"meta.assertion.look-behind.regexp\"\n            },\n            \"6\": {\n              \"name\": \"meta.assertion.negative-look-behind.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.js\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.js\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.js\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.js\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.js\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.js\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.js\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.js\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.js\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.js\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.js\"\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.js\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.js\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.js\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.js\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.js\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.js\",\n              \"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.js\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.js\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.js\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        },\n        {\n          \"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes-in-expression\"\n        },\n        {\n          \"include\": \"#jsx-tag-in-expression\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes-in-expression\": {\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes\": {\n      \"name\": \"meta.tag.without-attributes.js\",\n      \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"end\": \"(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.js\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.js\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.js\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.js\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"contentName\": \"meta.jsx.children.js\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-children\"\n        }\n      ]\n    },\n    \"jsx-tag-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"name\": \"meta.tag.js\",\n      \"begin\": \"(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.js\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.js\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.js\"\n        },\n        \"6\": {\n          \"name\": \"support.class.component.js\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.tag.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.js\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.js\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.js\"\n            },\n            \"5\": {\n              \"name\": \"support.class.component.js\"\n            }\n          },\n          \"end\": \"(?=[/]?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.js\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"contentName\": \"meta.jsx.children.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-children\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-children\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        },\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-evaluated-code\": {\n      \"contentName\": \"meta.embedded.expression.js\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.js\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.js\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.js\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.js\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes\": {\n      \"name\": \"meta.tag.attributes.js\",\n      \"begin\": \"\\\\s+\",\n      \"end\": \"(?=[/]?>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-name\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-assignment\"\n        },\n        {\n          \"include\": \"#jsx-string-double-quoted\"\n        },\n        {\n          \"include\": \"#jsx-string-single-quoted\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-tag-attributes-illegal\"\n        }\n      ]\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"(?x)\\n  \\\\s*\\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\\n  ([_$[:alpha:]][-_$[:alnum:]]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.namespace.js\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.js\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.js\"\n        }\n      }\n    },\n    \"jsx-tag-attribute-assignment\": {\n      \"name\": \"keyword.operator.assignment.js\",\n      \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n    },\n    \"jsx-string-double-quoted\": {\n      \"name\": \"string.quoted.double.js\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-string-single-quoted\": {\n      \"name\": \"string.quoted.single.js\",\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes-illegal\": {\n      \"name\": \"invalid.illegal.attribute.js\",\n      \"match\": \"\\\\S+\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jinja-html.tmLanguage.json",
    "content": "{\n  \"name\": \"jinja-html\",\n  \"scopeName\": \"text.html.jinja\",\n  \"comment\": \"Jinja HTML Templates\",\n  \"firstLineMatch\": \"^{% extends [\\\"'][^\\\"']+[\\\"'] %}\",\n  \"foldingStartMarker\": \"(<(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\\\\b.*?>|{%\\\\s*(block|filter|for|if|macro|raw))\",\n  \"foldingStopMarker\": \"(</(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\\\\b.*?>|{%\\\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\\\s*%})\",\n  \"patterns\": [\n    {\n      \"include\": \"source.jinja\"\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jinja.tmLanguage.json",
    "content": "{\n  \"name\": \"jinja\",\n  \"scopeName\": \"source.jinja\",\n  \"comment\": \"Jinja Templates\",\n  \"foldingStartMarker\": \"({%\\\\s*(block|filter|for|if|macro|raw))\",\n  \"foldingStopMarker\": \"({%\\\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\\\s*%})\",\n  \"patterns\": [\n    {\n      \"begin\": \"({%)\\\\s*(raw)\\\\s*(%})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.jinja.delimiter.tag\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.jinja\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.jinja.delimiter.tag\"\n        }\n      },\n      \"end\": \"({%)\\\\s*(endraw)\\\\s*(%})\",\n      \"name\": \"comment.block.jinja.raw\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"begin\": \"{{-?\",\n      \"captures\": [\n        {\n          \"name\": \"entity.other.jinja.delimiter.variable\"\n        }\n      ],\n      \"end\": \"-?}}\",\n      \"name\": \"meta.scope.jinja.variable\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"{%-?\",\n      \"captures\": [\n        {\n          \"name\": \"entity.other.jinja.delimiter.tag\"\n        }\n      ],\n      \"end\": \"-?%}\",\n      \"name\": \"meta.scope.jinja.tag\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"begin\": \"{#-?\",\n      \"captures\": [\n        {\n          \"name\": \"entity.other.jinja.delimiter.comment\"\n        }\n      ],\n      \"end\": \"-?#}\",\n      \"name\": \"comment.block.jinja\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\x[0-9A-F]{2}\",\n      \"name\": \"constant.character.escape.hex.jinja\"\n    },\n    \"escaped_unicode_char\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.unicode.16-bit-hex.jinja\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.unicode.32-bit-hex.jinja\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.unicode.name.jinja\"\n        }\n      },\n      \"match\": \"(\\\\\\\\U[0-9A-Fa-f]{8})|(\\\\\\\\u[0-9A-Fa-f]{4})|(\\\\\\\\N\\\\{[a-zA-Z ]+\\\\})\"\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.jinja\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.jinja.block\"\n            }\n          },\n          \"match\": \"\\\\s*\\\\b(block)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.jinja\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.jinja.filter\"\n            }\n          },\n          \"match\": \"\\\\s*\\\\b(filter)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.jinja\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.jinja.test\"\n            }\n          },\n          \"match\": \"\\\\s*\\\\b(is)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.jinja\"\n            }\n          },\n          \"match\": \"(?<=\\\\{\\\\%-|\\\\{\\\\%)\\\\s*\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?!\\\\s*[,=])\"\n        },\n        {\n          \"match\": \"\\\\b(and|else|if|in|import|not|or|recursive|with(out)?\\\\s+context)\\\\b\",\n          \"name\": \"keyword.control.jinja\"\n        },\n        {\n          \"match\": \"\\\\b(true|false|none)\\\\b\",\n          \"name\": \"constant.language.jinja\"\n        },\n        {\n          \"match\": \"\\\\b(loop|super|self|varargs|kwargs)\\\\b\",\n          \"name\": \"variable.language.jinja\"\n        },\n        {\n          \"match\": \"[a-zA-Z_][a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.jinja\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|\\\\*\\\\*|\\\\*|//|/|%)\",\n          \"name\": \"keyword.operator.arithmetic.jinja\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.other.jinja\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.jinja.filter\"\n            }\n          },\n          \"match\": \"(\\\\|)([a-zA-Z_][a-zA-Z0-9_]*)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.other.jinja\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.jinja.attribute\"\n            }\n          },\n          \"match\": \"(\\\\.)([a-zA-Z_][a-zA-Z0-9_]*)\"\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"captures\": [\n            {\n              \"name\": \"punctuation.other.jinja\"\n            }\n          ],\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": [\n            {\n              \"name\": \"punctuation.other.jinja\"\n            }\n          ],\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": [\n            {\n              \"name\": \"punctuation.other.jinja\"\n            }\n          ],\n          \"end\": \"\\\\}\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(\\\\.|:|\\\\||,)\",\n          \"name\": \"punctuation.other.jinja\"\n        },\n        {\n          \"match\": \"(==|<=|=>|<|>|!=)\",\n          \"name\": \"keyword.operator.comparison.jinja\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.jinja\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.begin.jinja\"\n            }\n          ],\n          \"end\": \"\\\"\",\n          \"endCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.end.jinja\"\n            }\n          ],\n          \"name\": \"string.quoted.double.jinja\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.begin.jinja\"\n            }\n          ],\n          \"end\": \"'\",\n          \"endCaptures\": [\n            {\n              \"name\": \"punctuation.definition.string.end.jinja\"\n            }\n          ],\n          \"name\": \"string.quoted.single.jinja\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@/\",\n          \"beginCaptures\": [\n            {\n              \"name\": \"punctuation.definition.regexp.begin.jinja\"\n            }\n          ],\n          \"end\": \"/\",\n          \"endCaptures\": [\n            {\n              \"name\": \"punctuation.definition.regexp.end.jinja\"\n            }\n          ],\n          \"name\": \"string.regexp.jinja\",\n          \"patterns\": [\n            {\n              \"include\": \"#simple_escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"simple_escapes\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.newline.jinja\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.backlash.jinja\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.double-quote.jinja\"\n        },\n        \"4\": {\n          \"name\": \"constant.character.escape.single-quote.jinja\"\n        },\n        \"5\": {\n          \"name\": \"constant.character.escape.bell.jinja\"\n        },\n        \"6\": {\n          \"name\": \"constant.character.escape.backspace.jinja\"\n        },\n        \"7\": {\n          \"name\": \"constant.character.escape.formfeed.jinja\"\n        },\n        \"8\": {\n          \"name\": \"constant.character.escape.linefeed.jinja\"\n        },\n        \"9\": {\n          \"name\": \"constant.character.escape.return.jinja\"\n        },\n        \"10\": {\n          \"name\": \"constant.character.escape.tab.jinja\"\n        },\n        \"11\": {\n          \"name\": \"constant.character.escape.vertical-tab.jinja\"\n        }\n      },\n      \"match\": \"(\\\\\\\\\\\\n)|(\\\\\\\\\\\\\\\\)|(\\\\\\\\\\\\\\\")|(\\\\\\\\')|(\\\\\\\\a)|(\\\\\\\\b)|(\\\\\\\\f)|(\\\\\\\\n)|(\\\\\\\\r)|(\\\\\\\\t)|(\\\\\\\\v)\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#simple_escapes\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#escaped_unicode_char\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/json.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70\",\n  \"name\": \"json\",\n  \"scopeName\": \"source.json\",\n  \"patterns\": [\n    {\n      \"include\": \"#value\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.json\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.json\"\n        }\n      },\n      \"name\": \"meta.structure.array.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.json\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.json\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.json\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.json\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.json\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.json\"\n    },\n    \"number\": {\n      \"match\": \"(?x)        # turn on extended mode\\n  -?        # an optional minus\\n  (?:\\n    0       # a zero\\n    |       # ...or...\\n    [1-9]   # a 1-9 character\\n    \\\\d*     # followed by zero or more digits\\n  )\\n  (?:\\n    (?:\\n      \\\\.    # a period\\n      \\\\d+   # followed by one or more digits\\n    )?\\n    (?:\\n      [eE]  # an e character\\n      [+-]? # followed by an option +/-\\n      \\\\d+   # followed by one or more digits\\n    )?      # make exponent optional\\n  )?        # make decimal portion optional\",\n      \"name\": \"constant.numeric.json\"\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.json\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.json\"\n        }\n      },\n      \"name\": \"meta.structure.dictionary.json\",\n      \"patterns\": [\n        {\n          \"comment\": \"the JSON object key\",\n          \"include\": \"#objectkey\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.dictionary.key-value.json\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dictionary.pair.json\"\n            }\n          },\n          \"name\": \"meta.structure.dictionary.value.json\",\n          \"patterns\": [\n            {\n              \"comment\": \"the JSON object value\",\n              \"include\": \"#value\"\n            },\n            {\n              \"match\": \"[^\\\\s,]\",\n              \"name\": \"invalid.illegal.expected-dictionary-separator.json\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s\\\\}]\",\n          \"name\": \"invalid.illegal.expected-dictionary-separator.json\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.json\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.json\"\n        }\n      },\n      \"name\": \"string.quoted.double.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"objectkey\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.begin.json\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.end.json\"\n        }\n      },\n      \"name\": \"string.json support.type.property-name.json\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"stringcontent\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)                # turn on extended mode\\n  \\\\\\\\                # a literal backslash\\n  (?:               # ...followed by...\\n    [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n    |               # ...or...\\n    u               # a u\\n    [0-9a-fA-F]{4}) # and four hex digits\",\n          \"name\": \"constant.character.escape.json\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json\"\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jsonc.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70\",\n  \"name\": \"jsonc\",\n  \"scopeName\": \"source.json.comments\",\n  \"patterns\": [\n    {\n      \"include\": \"#value\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.json.comments\"\n        }\n      },\n      \"name\": \"meta.structure.array.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.array.json.comments\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]\",\n          \"name\": \"invalid.illegal.expected-array-separator.json.comments\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation.json.comments\"\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.json.comments\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.json.comments\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.js\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"match\": \"\\\\b(?:true|false|null)\\\\b\",\n      \"name\": \"constant.language.json.comments\"\n    },\n    \"number\": {\n      \"match\": \"(?x)        # turn on extended mode\\n  -?        # an optional minus\\n  (?:\\n    0       # a zero\\n    |       # ...or...\\n    [1-9]   # a 1-9 character\\n    \\\\d*     # followed by zero or more digits\\n  )\\n  (?:\\n    (?:\\n      \\\\.    # a period\\n      \\\\d+   # followed by one or more digits\\n    )?\\n    (?:\\n      [eE]  # an e character\\n      [+-]? # followed by an option +/-\\n      \\\\d+   # followed by one or more digits\\n    )?      # make exponent optional\\n  )?        # make decimal portion optional\",\n      \"name\": \"constant.numeric.json.comments\"\n    },\n    \"object\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dictionary.end.json.comments\"\n        }\n      },\n      \"name\": \"meta.structure.dictionary.json.comments\",\n      \"patterns\": [\n        {\n          \"comment\": \"the JSON object key\",\n          \"include\": \"#objectkey\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.dictionary.key-value.json.comments\"\n            }\n          },\n          \"end\": \"(,)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dictionary.pair.json.comments\"\n            }\n          },\n          \"name\": \"meta.structure.dictionary.value.json.comments\",\n          \"patterns\": [\n            {\n              \"comment\": \"the JSON object value\",\n              \"include\": \"#value\"\n            },\n            {\n              \"match\": \"[^\\\\s,]\",\n              \"name\": \"invalid.illegal.expected-dictionary-separator.json.comments\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s\\\\}]\",\n          \"name\": \"invalid.illegal.expected-dictionary-separator.json.comments\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.json.comments\"\n        }\n      },\n      \"name\": \"string.quoted.double.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"objectkey\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.begin.json.comments\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.support.type.property-name.end.json.comments\"\n        }\n      },\n      \"name\": \"string.json.comments support.type.property-name.json.comments\",\n      \"patterns\": [\n        {\n          \"include\": \"#stringcontent\"\n        }\n      ]\n    },\n    \"stringcontent\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)                # turn on extended mode\\n  \\\\\\\\                # a literal backslash\\n  (?:               # ...followed by...\\n    [\\\"\\\\\\\\/bfnrt]     # one of these characters\\n    |               # ...or...\\n    u               # a u\\n    [0-9a-fA-F]{4}) # and four hex digits\",\n          \"name\": \"constant.character.escape.json.comments\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-string-escape.json.comments\"\n        }\n      ]\n    },\n    \"value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jsonnet.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"jsonnet\",\n  \"patterns\": [\n    {\n      \"include\": \"#expression\"\n    },\n    {\n      \"include\": \"#keywords\"\n    }\n  ],\n  \"repository\": {\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](filter|floor|force|length|log|makeArray|mantissa)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](objectFields|objectHas|pow|sin|sqrt|tan|type|thisFile)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](abs|assertEqual|escapeString(Bash|Dollars|Json|Python))\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](filterMap|flattenArrays|foldl|foldr|format|join)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](lines|manifest(Ini|Python(Vars)?)|map|max|min|mod)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](set|set(Diff|Inter|Member|Union)|sort)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\bstd[.](range|split|stringChars|substr|toString|uniq)\\\\b\",\n          \"name\": \"support.function.jsonnet\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.jsonnet\"\n        },\n        {\n          \"match\": \"//.*$\",\n          \"name\": \"comment.line.jsonnet\"\n        },\n        {\n          \"match\": \"#.*$\",\n          \"name\": \"comment.block.jsonnet\"\n        }\n      ]\n    },\n    \"double-quoted-strings\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.jsonnet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\([\\\"\\\\\\\\/bfnrt]|(u[0-9a-fA-F]{4}))\",\n          \"name\": \"constant.character.escape.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\\\\\[^\\\"\\\\\\\\/bfnrtu]\",\n          \"name\": \"invalid.illegal.jsonnet\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literals\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#single-quoted-strings\"\n        },\n        {\n          \"include\": \"#double-quoted-strings\"\n        },\n        {\n          \"include\": \"#triple-quoted-strings\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#functions\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b([a-zA-Z_][a-z0-9A-Z_]*)\\\\s*\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.jsonnet\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.function\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"[!:~\\\\+\\\\-&\\\\|\\\\^=<>\\\\*\\\\/%]\",\n          \"name\": \"keyword.operator.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\$\",\n          \"name\": \"keyword.other.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b(self|super|import|importstr|local|tailstrict)\\\\b\",\n          \"name\": \"keyword.other.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b(if|then|else|for|in|error|assert)\\\\b\",\n          \"name\": \"keyword.control.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b(function)\\\\b\",\n          \"name\": \"storage.type.jsonnet\"\n        },\n        {\n          \"match\": \"[a-zA-Z_][a-z0-9A-Z_]*\\\\s*(:::|\\\\+:::)\",\n          \"name\": \"variable.parameter.jsonnet\"\n        },\n        {\n          \"match\": \"[a-zA-Z_][a-z0-9A-Z_]*\\\\s*(::|\\\\+::)\",\n          \"name\": \"entity.name.type\"\n        },\n        {\n          \"match\": \"[a-zA-Z_][a-z0-9A-Z_]*\\\\s*(:|\\\\+:)\",\n          \"name\": \"variable.parameter.jsonnet\"\n        }\n      ]\n    },\n    \"literals\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null)\\\\b\",\n          \"name\": \"constant.language.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d+([Ee][+-]?\\\\d+)?)\\\\b\",\n          \"name\": \"constant.numeric.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d+[.]\\\\d*([Ee][+-]?\\\\d+)?\\\\b\",\n          \"name\": \"constant.numeric.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\b[.]\\\\d+([Ee][+-]?\\\\d+)?\\\\b\",\n          \"name\": \"constant.numeric.jsonnet\"\n        }\n      ]\n    },\n    \"single-quoted-strings\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.double.jsonnet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(['\\\\\\\\/bfnrt]|(u[0-9a-fA-F]{4}))\",\n          \"name\": \"constant.character.escape.jsonnet\"\n        },\n        {\n          \"match\": \"\\\\\\\\[^'\\\\\\\\/bfnrtu]\",\n          \"name\": \"invalid.illegal.jsonnet\"\n        }\n      ]\n    },\n    \"triple-quoted-strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\|\\\\|\\\\|\",\n          \"end\": \"\\\\|\\\\|\\\\|\",\n          \"name\": \"string.quoted.triple.jsonnet\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.jsonnet\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jssm.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"jssm\", \"jssm_state\"],\n  \"name\": \"jssm\",\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.mn\"\n        }\n      },\n      \"comment\": \"block comment\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.jssm\"\n    },\n    {\n      \"begin\": \"//\",\n      \"comment\": \"block comment\",\n      \"end\": \"$\",\n      \"name\": \"comment.line.jssm\"\n    },\n    {\n      \"begin\": \"\\\\${\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"entity.name.function\"\n        }\n      },\n      \"comment\": \"js outcalls\",\n      \"end\": \"}\",\n      \"name\": \"keyword.other\"\n    },\n    {\n      \"comment\": \"semver\",\n      \"match\": \"([0-9]*)(\\\\.)([0-9]*)(\\\\.)([0-9]*)\",\n      \"name\": \"constant.numeric\"\n    },\n    {\n      \"comment\": \"jssm language tokens\",\n      \"match\": \"graph_layout(\\\\s*)(:)\",\n      \"name\": \"constant.language.jssmLanguage\"\n    },\n    {\n      \"comment\": \"jssm language tokens\",\n      \"match\": \"machine_name(\\\\s*)(:)\",\n      \"name\": \"constant.language.jssmLanguage\"\n    },\n    {\n      \"comment\": \"jssm language tokens\",\n      \"match\": \"machine_version(\\\\s*)(:)\",\n      \"name\": \"constant.language.jssmLanguage\"\n    },\n    {\n      \"comment\": \"jssm language tokens\",\n      \"match\": \"jssm_version(\\\\s*)(:)\",\n      \"name\": \"constant.language.jssmLanguage\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<->\",\n      \"name\": \"keyword.control.transition.jssmArrow.legal_legal\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<-\",\n      \"name\": \"keyword.control.transition.jssmArrow.legal_none\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"->\",\n      \"name\": \"keyword.control.transition.jssmArrow.none_legal\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<=>\",\n      \"name\": \"keyword.control.transition.jssmArrow.main_main\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"=>\",\n      \"name\": \"keyword.control.transition.jssmArrow.none_main\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<=\",\n      \"name\": \"keyword.control.transition.jssmArrow.main_none\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<~>\",\n      \"name\": \"keyword.control.transition.jssmArrow.forced_forced\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"~>\",\n      \"name\": \"keyword.control.transition.jssmArrow.none_forced\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<~\",\n      \"name\": \"keyword.control.transition.jssmArrow.forced_none\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<-=>\",\n      \"name\": \"keyword.control.transition.jssmArrow.legal_main\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<=->\",\n      \"name\": \"keyword.control.transition.jssmArrow.main_legal\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<-~>\",\n      \"name\": \"keyword.control.transition.jssmArrow.legal_forced\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<~->\",\n      \"name\": \"keyword.control.transition.jssmArrow.forced_legal\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<=~>\",\n      \"name\": \"keyword.control.transition.jssmArrow.main_forced\"\n    },\n    {\n      \"comment\": \"transitions\",\n      \"match\": \"<~=>\",\n      \"name\": \"keyword.control.transition.jssmArrow.forced_main\"\n    },\n    {\n      \"comment\": \"edge probability annotation\",\n      \"match\": \"([0-9]+)%\",\n      \"name\": \"constant.numeric.jssmProbability\"\n    },\n    {\n      \"comment\": \"action annotation\",\n      \"match\": \"\\\\'[^']*\\\\'\",\n      \"name\": \"constant.character.jssmAction\"\n    },\n    {\n      \"comment\": \"jssm label annotation\",\n      \"match\": \"\\\\\\\"[^\\\"]*\\\\\\\"\",\n      \"name\": \"entity.name.tag.jssmLabel.doublequoted\"\n    },\n    {\n      \"comment\": \"jssm label annotation\",\n      \"match\": \"([a-zA-Z0-9_.+&()#@!?,])\",\n      \"name\": \"entity.name.tag.jssmLabel.atom\"\n    }\n  ],\n  \"scopeName\": \"source.jssm\",\n  \"uuid\": \"2bb22b55-e811-4383-9929-ae6d0ab92aca\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/jsx.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/TypeScript-TmLanguage/commit/0dfae8cc4807fecfbf8f1add095d9817df824c95\",\n  \"name\": \"jsx\",\n  \"scopeName\": \"source.js.jsx\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#shebang\"\n    }\n  ],\n  \"repository\": {\n    \"shebang\": {\n      \"name\": \"comment.line.shebang.js.jsx\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.js.jsx\"\n        }\n      }\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        },\n        {\n          \"name\": \"storage.modifier.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.loop.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.js.jsx\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.switch.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#paren-expression-possibly-arrow\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#instanceof-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.js.jsx\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.js.jsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.js.jsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.js.jsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.js.jsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-variable\"\n                },\n                {\n                  \"include\": \"#var-single-variable\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var.expr.js.jsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.js.jsx\"\n            }\n          },\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.js.jsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.js.jsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-const\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.js.jsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-const\"\n                },\n                {\n                  \"include\": \"#var-single-const\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.js.jsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js.jsx entity.name.function.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js.jsx\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js.jsx variable.other.constant.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js.jsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.js.jsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.js.jsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.js.jsx variable.other.constant.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.js.jsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.js.jsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructuring-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.js.jsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.js.jsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element-const\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.js.jsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#array-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\"\n        }\n      }\n    },\n    \"destructuring-variable-rest-const\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.js.jsx variable.other.constant.js.jsx\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"object-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element-const\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element-const\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.js.jsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.js.jsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.js.jsx\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.js.jsx\",\n      \"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        }\n      },\n      \"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.definition.property.js.jsx entity.name.function.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.definiteassignment.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.definition.property.js.jsx variable.object.property.js.jsx\",\n          \"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.js.jsx\",\n          \"match\": \"\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.definiteassignment.js.jsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.async.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.function.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.generator.asterisk.js.jsx\"\n        },\n        \"6\": {\n          \"name\": \"meta.definition.function.js.jsx entity.name.function.js.jsx\"\n        }\n      },\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.js.jsx entity.name.function.js.jsx\"\n        }\n      },\n      \"end\": \"(?=;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"name\": \"meta.definition.function.js.jsx entity.name.function.js.jsx\",\n      \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.js.jsx\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.js.jsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js.jsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.new.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js.jsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.property.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.js.jsx\",\n      \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.js.jsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.js.jsx entity.name.function.js.jsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.js.jsx\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.js.jsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.js.jsx\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.js.jsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js.jsx\"\n            }\n          },\n          \"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.js.jsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.js.jsx\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.js.jsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.modifier.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.expression.in.js.jsx\"\n        }\n      },\n      \"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.type.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.optional.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.js.jsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#parameter-type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js.jsx\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.class.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.interface.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#async-modifier\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"async-modifier\": {\n      \"name\": \"storage.modifier.async.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.enum.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.enum.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.js.jsx\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.js.jsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.namespace.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.js.jsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.type.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.alias.js.jsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.intrinsic.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.require.js.jsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.js.jsx\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.js.jsx\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.js.jsx\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.import.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.type.js.jsx\"\n        }\n      },\n      \"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n          \"end\": \"\\\\bfrom\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.from.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.default.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.js.jsx\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-assert-clause\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-assert-clause\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(assert)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.assert.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"meta.object-literal.key.js.jsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n        },\n        {\n          \"name\": \"punctuation.separator.key-value.js.jsx\",\n          \"match\": \":\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.js.jsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.default.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.import-export-all.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.readwrite.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.default.js.jsx\"\n            },\n            \"7\": {\n              \"name\": \"variable.other.readwrite.alias.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.js.jsx\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.js.jsx\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\btype)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.alias.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"switch-expression.expr.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.js.jsx\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.js.jsx\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.js.jsx\"\n                }\n              },\n              \"end\": \"(?=:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(:)\\\\s*(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.block.js.jsx punctuation.definition.block.js.jsx\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.block.js.jsx punctuation.definition.block.js.jsx\"\n                }\n              },\n              \"contentName\": \"meta.block.js.jsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"#statements\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(:)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\"\n                }\n              }\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"keyword.control.loop.js.jsx\",\n          \"match\": \"await\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#var-expr\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n          \"end\": \"(?=;|$|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.regexp.js.jsx\",\n              \"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.js.jsx\"\n                }\n              },\n              \"end\": \"(/)([dgimsuy]*)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.js.jsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#regexp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.js.jsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.js.jsx\",\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.js.jsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx meta.object-literal.key.js.jsx\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx meta.object-literal.key.js.jsx\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx meta.object-literal.key.js.jsx\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numeric-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.js.jsx\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js.jsx\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js.jsx\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js.jsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.js.jsx\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js.jsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.js.jsx\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.js.jsx\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-inside-possibly-arrow-parens\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js.jsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.js.jsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.js.jsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.js.jsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#paren-expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.js.jsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call-target\": {\n      \"patterns\": [\n        {\n          \"include\": \"#support-function-call-identifiers\"\n        },\n        {\n          \"name\": \"entity.name.function.js.jsx\",\n          \"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"function-call-optionals\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"support-function-call-identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.js.jsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.js.jsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"instanceof-expr\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.instanceof.js.jsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<))\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#possibly-arrow-return-type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow-with-typeparameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-inside-possibly-arrow-parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-inside-possibly-arrow-parens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js.jsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.generator.asterisk.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.js.jsx\"\n            }\n          },\n          \"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+)|(\\\\s+\\\\<))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.js.jsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.js.jsx\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.js.jsx\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.js.jsx\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.js.jsx\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.js.jsx\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.js.jsx\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.js.jsx\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js.jsx\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.js.jsx\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.js.jsx\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.js.jsx\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n          \"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.expression.typeof.js.jsx\"\n        }\n      },\n      \"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.js.jsx\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.js.jsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.binary.js.jsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.octal.js.jsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.js.jsx\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"9\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"10\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"11\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"12\": {\n              \"name\": \"meta.delimiter.decimal.period.js.jsx\"\n            },\n            \"13\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            },\n            \"14\": {\n              \"name\": \"storage.type.numeric.bigint.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.promise.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.importmeta.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.target.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.js.jsx\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.js.jsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.js.jsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.js.jsx\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js.jsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.js.jsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js.jsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.js.jsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js.jsx\"\n            }\n          },\n          \"end\": \"(?=[,)])|(?==[^>])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.js.jsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js.jsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.js.jsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.js.jsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.js.jsx\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.js.jsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"possibly-arrow-return-type\": {\n      \"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"contentName\": \"meta.arrow.js.jsx meta.return.type.arrow.js.jsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"arrow-return-type-body\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.js.jsx\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.js.jsx\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.js.jsx\",\n          \"match\": \"(=)(?!>)\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"name\": \"meta.type.parameters.js.jsx\",\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-arguments-body\"\n        }\n      ]\n    },\n    \"type-arguments-body\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.js.jsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.js.jsx\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.rest.js.jsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.js.jsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.js.jsx\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.js.jsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.js.jsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js.jsx variable.language.this.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.js.jsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.constructor.js.jsx storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.constructor.js.jsx keyword.control.new.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.constructor.js.jsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.new.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.js.jsx\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.js.jsx\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.js.jsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.js.jsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.js.jsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"include\": \"#type-infer\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js.jsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.js.jsx\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.js.jsx\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n        }\n      ]\n    },\n    \"type-infer\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n          \"name\": \"meta.type.infer.js.jsx\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.expression.infer.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.expression.extends.js.jsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js.jsx variable.language.this.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.expression.is.js.jsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.js.jsx variable.language.this.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.type.asserts.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.is.js.jsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.js.jsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.js.jsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.js.jsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.js.jsx\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.js.jsx\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.js.jsx\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.js.jsx\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js.jsx\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.js.jsx\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js.jsx\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.js.jsx\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.js.jsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.js.jsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-call\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.js.jsx\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#support-function-call-identifiers\"\n                },\n                {\n                  \"name\": \"entity.name.function.tagged-template.js.jsx\",\n                  \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.js.jsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js.jsx\"\n            }\n          },\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.js.jsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.js.jsx\"\n    },\n    \"type-string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template-type\"\n        }\n      ]\n    },\n    \"template-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.js.jsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.js.jsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-type-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-type-substitution-element\": {\n      \"name\": \"meta.template.expression.js.jsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.js.jsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.js.jsx\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.js.jsx\",\n          \"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.js.jsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.js.jsx\",\n          \"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.js.jsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            },\n            \"5\": {\n              \"name\": \"meta.assertion.look-behind.regexp\"\n            },\n            \"6\": {\n              \"name\": \"meta.assertion.negative-look-behind.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.js.jsx\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.js.jsx\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js.jsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.js.jsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.js.jsx\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.js.jsx\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.js.jsx\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.js.jsx\"\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.js.jsx\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.js.jsx\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.js.jsx\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.js.jsx\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.js.jsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.js.jsx\",\n              \"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.js.jsx\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.js.jsx\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.js.jsx\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        },\n        {\n          \"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes-in-expression\"\n        },\n        {\n          \"include\": \"#jsx-tag-in-expression\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes-in-expression\": {\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes\": {\n      \"name\": \"meta.tag.without-attributes.js.jsx\",\n      \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"end\": \"(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.js.jsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.js.jsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.js.jsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.js.jsx\"\n        }\n      },\n      \"contentName\": \"meta.jsx.children.js.jsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-children\"\n        }\n      ]\n    },\n    \"jsx-tag-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"name\": \"meta.tag.js.jsx\",\n      \"begin\": \"(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.js.jsx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.js.jsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.js.jsx\"\n        },\n        \"6\": {\n          \"name\": \"support.class.component.js.jsx\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.tag.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.js.jsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.js.jsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.js.jsx\"\n            },\n            \"5\": {\n              \"name\": \"support.class.component.js.jsx\"\n            }\n          },\n          \"end\": \"(?=[/]?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.js.jsx\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"contentName\": \"meta.jsx.children.js.jsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-children\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-children\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        },\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-evaluated-code\": {\n      \"contentName\": \"meta.embedded.expression.js.jsx\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.js.jsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.js.jsx\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.js.jsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.js.jsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.js.jsx\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes\": {\n      \"name\": \"meta.tag.attributes.js.jsx\",\n      \"begin\": \"\\\\s+\",\n      \"end\": \"(?=[/]?>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-name\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-assignment\"\n        },\n        {\n          \"include\": \"#jsx-string-double-quoted\"\n        },\n        {\n          \"include\": \"#jsx-string-single-quoted\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-tag-attributes-illegal\"\n        }\n      ]\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"(?x)\\n  \\\\s*\\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\\n  ([_$[:alpha:]][-_$[:alnum:]]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.namespace.js.jsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.js.jsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.js.jsx\"\n        }\n      }\n    },\n    \"jsx-tag-attribute-assignment\": {\n      \"name\": \"keyword.operator.assignment.js.jsx\",\n      \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n    },\n    \"jsx-string-double-quoted\": {\n      \"name\": \"string.quoted.double.js.jsx\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js.jsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-string-single-quoted\": {\n      \"name\": \"string.quoted.single.js.jsx\",\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.js.jsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.js.jsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes-illegal\": {\n      \"name\": \"invalid.illegal.attribute.js.jsx\",\n      \"match\": \"\\\\S+\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/julia.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/JuliaEditorSupport/atom-language-julia/blob/master/grammars/julia_vscode.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/JuliaEditorSupport/atom-language-julia/commit/7b7801f41ce4ac1303bd17e057dbe677e24f597f\",\n  \"name\": \"julia\",\n  \"scopeName\": \"source.julia\",\n  \"comment\": \"This grammar is used by Atom (Oniguruma), GitHub (PCRE), and VSCode (Oniguruma),\\nso all regexps must be compatible with both engines.\\n\\nSpecs:\\n- https://github.com/kkos/oniguruma/blob/master/doc/RE\\n- https://www.pcre.org/current/doc/html/\",\n  \"patterns\": [\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#array\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#parentheses\"\n    },\n    {\n      \"include\": \"#bracket\"\n    },\n    {\n      \"include\": \"#function_decl\"\n    },\n    {\n      \"include\": \"#function_call\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"include\": \"#number\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#type_decl\"\n    },\n    {\n      \"include\": \"#symbol\"\n    }\n  ],\n  \"repository\": {\n    \"array\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"(\\\\])((?:\\\\.)?'*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transpose.julia\"\n            }\n          },\n          \"name\": \"meta.array.julia\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bbegin\\\\b\",\n              \"name\": \"constant.numeric.julia\"\n            },\n            {\n              \"match\": \"\\\\bend\\\\b\",\n              \"name\": \"constant.numeric.julia\"\n            },\n            {\n              \"match\": \"\\\\bfor\\\\b\",\n              \"name\": \"keyword.control.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"(\\\\))((?:\\\\.)?'*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transpose.julia\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bracket\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}|,|;)(?!('|(?:\\\\.'))*\\\\.?')\",\n          \"name\": \"meta.bracket.julia\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.julia\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.julia\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.julia\"\n            }\n          },\n          \"end\": \"=#\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.julia\"\n            }\n          },\n          \"name\": \"comment.block.number-sign-equals.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_block\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\\\.?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            },\n            \"3\": {\n              \"name\": \"meta.bracket.julia\"\n            }\n          },\n          \"end\": \"\\\\)(('|(\\\\.'))*\\\\.?')?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.julia\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.transposed-func.julia\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bfor\\\\b\",\n              \"name\": \"keyword.control.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_decl\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            }\n          },\n          \"match\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?(?=\\\\([^#]*\\\\)(::[^\\\\s]+)?(\\\\s*\\\\bwhere\\\\b\\\\s+.+?)?\\\\s*?=(?![=>]))\",\n          \"comment\": \"first group is function name\\nSecond group is type parameters (e.g. {T<:Number, S})\\nThen open parens\\nThen a lookahead ensures that we are followed by:\\n  - anything (function argumnets)\\n  - 0 or more spaces\\n  - Finally an equal sign\\nNegative lookahead ensures we don't have another equal sign (not `==`)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.dots.julia\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.julia\"\n            },\n            \"4\": {\n              \"name\": \"support.type.julia\"\n            }\n          },\n          \"match\": \"\\\\b(function|macro)(?:\\\\s+(?:(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*(\\\\.))?((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\\\s*)(?=\\\\()\",\n          \"comment\": \"similar regex to previous, but with keyword not 1-line syntax\"\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?<![:_\\\\.])(?:function|mutable\\\\s+struct|struct|macro|quote|abstract\\\\s+type|primitive\\\\s+type|module|baremodule|where)\\\\b\",\n          \"name\": \"keyword.other.julia\"\n        },\n        {\n          \"comment\": \"special case for blocks to support tokenizing outer properly\",\n          \"begin\": \"\\\\b(for)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.julia\"\n            }\n          },\n          \"end\": \"(?<!,|\\\\s)(\\\\s*\\\\n)\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\bouter\\\\b\",\n              \"name\": \"keyword.other.julia\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:if|else|elseif|while|begin|let|do|try|catch|finally|return|break|continue)\\\\b\",\n          \"name\": \"keyword.control.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])end\\\\b\",\n          \"name\": \"keyword.control.end.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:global|local|const)\\\\b\",\n          \"name\": \"keyword.storage.modifier.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:export)\\\\b\",\n          \"name\": \"keyword.control.export.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:import)\\\\b\",\n          \"name\": \"keyword.control.import.julia\"\n        },\n        {\n          \"match\": \"\\\\b(?<![:_])(?:using)\\\\b\",\n          \"name\": \"keyword.control.using.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\w\\\\s)\\\\b(as)\\\\b(?=\\\\s\\\\w)\",\n          \"name\": \"keyword.control.as.julia\"\n        },\n        {\n          \"match\": \"(@(\\\\.|(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*))\",\n          \"name\": \"support.function.macro.julia\"\n        }\n      ]\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))(?:(?:\\\\b0(?:x|X)[0-9a-fA-F](?:_?[0-9a-fA-F])*)|(?:\\\\b0o[0-7](?:_?[0-7])*)|(?:\\\\b0b[0-1](?:_?[0-1])*)|(?:(?:\\\\b[0-9](?:_?[0-9])*\\\\.?(?!\\\\.)(?:[_0-9]*))|(?:\\\\b\\\\.[0-9](?:_?[0-9])*))(?:[efE][+-]?[0-9](?:_?[0-9])*)?(?:im\\\\b|Inf(?:16|32|64)?\\\\b|NaN(?:16|32|64)?\\\\b|π\\\\b|pi\\\\b|ℯ\\\\b)?|\\\\b[0-9]+|\\\\bInf(?:16|32|64)?\\\\b|\\\\bNaN(?:16|32|64)?\\\\b|\\\\bπ\\\\b|\\\\bpi\\\\b|\\\\bℯ\\\\b))('*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.conjugate-number.julia\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\bARGS\\\\b|\\\\bC_NULL\\\\b|\\\\bDEPOT_PATH\\\\b|\\\\bENDIAN_BOM\\\\b|\\\\bENV\\\\b|\\\\bLOAD_PATH\\\\b|\\\\bPROGRAM_FILE\\\\b|\\\\bstdin\\\\b|\\\\bstdout\\\\b|\\\\bstderr\\\\b|\\\\bVERSION\\\\b|\\\\bdevnull\\\\b\",\n          \"name\": \"constant.global.julia\"\n        },\n        {\n          \"match\": \"\\\\btrue\\\\b|\\\\bfalse\\\\b|\\\\bnothing\\\\b|\\\\bmissing\\\\b\",\n          \"name\": \"constant.language.julia\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:->|<-|-->|=>)\",\n          \"name\": \"keyword.operator.arrow.julia\"\n        },\n        {\n          \"match\": \"(?::=|\\\\+=|-=|\\\\*=|//=|/=|\\\\.//=|\\\\./=|\\\\.\\\\*=|\\\\\\\\=|\\\\.\\\\\\\\=|\\\\^=|\\\\.\\\\^=|%=|\\\\.%=|÷=|\\\\.÷=|\\\\|=|&=|\\\\.&=|⊻=|\\\\.⊻=|\\\\$=|<<=|>>=|>>>=|=(?!=))\",\n          \"name\": \"keyword.operator.update.julia\"\n        },\n        {\n          \"match\": \"(?:<<|>>>|>>|\\\\.>>>|\\\\.>>|\\\\.<<)\",\n          \"name\": \"keyword.operator.shift.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\s*(::|>:|<:)\\\\s*((?:(?:Union)?\\\\([^)]*\\\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:\\\".+?(?<!\\\\\\\\)\\\"))?)))(?:\\\\.\\\\.\\\\.)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.relation.types.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.type.julia\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:===|∈|\\\\.∈|∉|\\\\.∉|∋|\\\\.∋|∌|\\\\.∌|≈|\\\\.≈|≉|\\\\.≉|≠|\\\\.≠|≡|\\\\.≡|≢|\\\\.≢|⊆|\\\\.⊆|⊇|\\\\.⊇|⊈|\\\\.⊈|⊉|\\\\.⊉|⊊|\\\\.⊊|⊋|\\\\.⊋|\\\\.==|!==|!=|\\\\.>=|\\\\.>|\\\\.<=|\\\\.<|\\\\.≤|\\\\.≥|==|\\\\.!=|\\\\.=|\\\\.!|<:|>:|:>|(?<!>)>=|(?<!<)<=|>|<|≥|≤)\",\n          \"name\": \"keyword.operator.relation.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?:\\\\?)(?=\\\\s)\",\n          \"name\": \"keyword.operator.ternary.julia\"\n        },\n        {\n          \"match\": \"(?<=\\\\s)(?:\\\\:)(?=\\\\s)\",\n          \"name\": \"keyword.operator.ternary.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\|\\\\||&&|(?<!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))!)\",\n          \"name\": \"keyword.operator.boolean.julia\"\n        },\n        {\n          \"match\": \"(?<=[[:word:]⁺-ₜ!′∇\\\\)\\\\]\\\\}])(?::)\",\n          \"name\": \"keyword.operator.range.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\|>)\",\n          \"name\": \"keyword.operator.applies.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\||\\\\.\\\\||\\\\&|\\\\.\\\\&|~|\\\\.~|⊻|\\\\.⊻)\",\n          \"name\": \"keyword.operator.bitwise.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\+\\\\+|--|\\\\+|\\\\.\\\\+|-|\\\\.\\\\-|\\\\*|\\\\.\\\\*|//(?!=)|\\\\.//(?!=)|/|\\\\./|%|\\\\.%|\\\\\\\\|\\\\.\\\\\\\\|\\\\^|\\\\.\\\\^|÷|\\\\.÷|⋅|\\\\.⋅|∩|\\\\.∩|∪|\\\\.∪|×|√|∛)\",\n          \"name\": \"keyword.operator.arithmetic.julia\"\n        },\n        {\n          \"match\": \"(?:∘)\",\n          \"name\": \"keyword.operator.compose.julia\"\n        },\n        {\n          \"match\": \"(?:::|(?<=\\\\s)isa(?=\\\\s))\",\n          \"name\": \"keyword.operator.isa.julia\"\n        },\n        {\n          \"match\": \"(?:(?<=\\\\s)in(?=\\\\s))\",\n          \"name\": \"keyword.operator.relation.in.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\.(?=(?:@|_|\\\\p{L}))|\\\\.\\\\.+)\",\n          \"name\": \"keyword.operator.dots.julia\"\n        },\n        {\n          \"match\": \"(?:\\\\$)(?=.+)\",\n          \"name\": \"keyword.operator.interpolation.julia\"\n        },\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-variable.julia\"\n            }\n          },\n          \"match\": \"((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(('|(\\\\.'))*\\\\.?')\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"bracket.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-matrix.julia\"\n            }\n          },\n          \"match\": \"(\\\\])((?:'|(?:\\\\.'))*\\\\.?')\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"bracket.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.transposed-parens.julia\"\n            }\n          },\n          \"match\": \"(\\\\))((?:'|(?:\\\\.'))*\\\\.?')\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(@doc)\\\\s((?:doc)?\\\"\\\"\\\")|(doc\\\"\\\"\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\") ?(->)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arrow.julia\"\n            }\n          },\n          \"name\": \"string.docstring.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(i?cxx)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.cxx.julia\",\n          \"contentName\": \"meta.embedded.inline.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp#root_context\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(py)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"([\\\\s\\\\w]*)(\\\"\\\"\\\")\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.python.julia\",\n          \"contentName\": \"meta.embedded.inline.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(js)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.js.julia\",\n          \"contentName\": \"meta.embedded.inline.javascript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(R)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.R.julia\",\n          \"contentName\": \"meta.embedded.inline.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(raw)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"name\": \"string.quoted.other.julia\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(raw)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.other.julia\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(sql)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"embed.sql.julia\",\n          \"contentName\": \"meta.embedded.inline.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"var\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"\",\n          \"name\": \"constant.other.symbol.julia\"\n        },\n        {\n          \"begin\": \"var\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"constant.other.symbol.julia\"\n        },\n        {\n          \"begin\": \"^\\\\s?(doc)?(\\\"\\\"\\\")\\\\s?$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"string.docstring.julia\",\n          \"comment\": \"This only matches docstrings that start and end with triple quotes on\\ntheir own line in the void\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"'(?!')\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"name\": \"string.quoted.single.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.multiline.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.multiline.end.julia\"\n            }\n          },\n          \"name\": \"string.quoted.triple.double.julia\",\n          \"comment\": \"multi-line string with triple double quotes\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.double.julia\",\n          \"begin\": \"\\\"(?!\\\"\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            }\n          },\n          \"comment\": \"String with single pair of double quotes. Regex matches isolated double quote\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            },\n            {\n              \"include\": \"#string_dollar_sign_interpolate\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"r\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")([imsx]{0,4})?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.regexp.end.julia\"\n            },\n            \"2\": {\n              \"comment\": \"I took this scope name from python regex grammar\",\n              \"name\": \"keyword.other.option-toggle.regexp.julia\"\n            }\n          },\n          \"name\": \"string.regexp.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"r\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.regexp.begin.julia\"\n            }\n          },\n          \"end\": \"(\\\")([imsx]{0,4})?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.regexp.end.julia\"\n            },\n            \"2\": {\n              \"comment\": \"I took this scope name from python regex grammar\",\n              \"name\": \"keyword.other.option-toggle.regexp.julia\"\n            }\n          },\n          \"name\": \"string.regexp.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(\\\"\\\"\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.quoted.other.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(?<![^\\\\\\\\]\\\\\\\\)(\\\")((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.quoted.other.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?```\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(```)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.julia\"\n            },\n            \"1\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"end\": \"(?<![^\\\\\\\\]\\\\\\\\)(`)((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.julia\"\n            },\n            \"2\": {\n              \"name\": \"support.function.macro.julia\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\\\\\|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)\",\n          \"name\": \"constant.character.escape.julia\"\n        }\n      ]\n    },\n    \"string_dollar_sign_interpolate\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*\",\n          \"name\": \"variable.interpolation.julia\"\n        },\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"variable.interpolation.julia\",\n          \"comment\": \"`punctuation.section.embedded`, `constant.escape`,\\n& `meta.embedded.line` were considered but appear to have even spottier\\nsupport among popular syntaxes.\",\n          \"patterns\": [\n            {\n              \"include\": \"#parentheses\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"symbol\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![[:word:]⁺-ₜ!′∇\\\\)\\\\]\\\\}]):(?:(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(?!(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿]))(?![\\\"`])\",\n          \"name\": \"constant.other.symbol.julia\",\n          \"comment\": \"This is string.quoted.symbol.julia in tpoisot's package\"\n        }\n      ]\n    },\n    \"type_decl\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.julia\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.julia\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.inheritance.julia\"\n            }\n          },\n          \"match\": \"(?>!:_)(?:struct|mutable\\\\s+struct|abstract\\\\s+type|primitive\\\\s+type)\\\\s+((?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*)(\\\\s*(<:)\\\\s*(?:[[:alpha:]_\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{So}←-⇿])(?:[[:word:]_!\\\\p{Lu}\\\\p{Ll}\\\\p{Lt}\\\\p{Lm}\\\\p{Lo}\\\\p{Nl}\\\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\\\P{Mn}\\u0001-¡]|[^\\\\P{Mc}\\u0001-¡]|[^\\\\P{Nd}\\u0001-¡]|[^\\\\P{Pc}\\u0001-¡]|[^\\\\P{Sk}\\u0001-¡]|[^\\\\P{Me}\\u0001-¡]|[^\\\\P{No}\\u0001-¡]|[′-‷⁗]|[^\\\\P{So}←-⇿])*(?:{.*})?)?\",\n          \"name\": \"meta.type.julia\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/kotlin.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"kt\", \"kts\"],\n  \"foldingStartMarker\": \"(\\\\{\\\\s*(//.*)?$|^\\\\s*// \\\\{\\\\{\\\\{)\",\n  \"foldingStopMarker\": \"^\\\\s*(\\\\}|// \\\\}\\\\}\\\\}$)\",\n  \"name\": \"kotlin\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.kotlin\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.package.kotlin\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\b(?:\\\\s*([^ ;$]+)\\\\s*)?\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.kotlin\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.import.java\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.kotlin\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type\"\n        }\n      },\n      \"match\": \"^\\\\s*(import)\\\\s+([^ $.]+(?:\\\\.(?:[`][^$`]+[`]|[^` $.]+))+)(?:\\\\s+(as)\\\\s+([`][^$`]+[`]|[^` $.]+))?\",\n      \"name\": \"meta.import.kotlin\"\n    },\n    {\n      \"include\": \"#code\"\n    }\n  ],\n  \"repository\": {\n    \"annotations\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(@[^ (]+)(\\\\()?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.annotation.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.annotation-arguments.begin.kotlin\"\n            }\n          },\n          \"end\": \"(\\\\)|\\\\s|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.annotation-arguments.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.declaration.annotation.kotlin\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.other.key.kotlin\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.kotlin\"\n                }\n              },\n              \"match\": \"(\\\\w*)\\\\s*(=)\"\n            },\n            {\n              \"include\": \"#code\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.seperator.property.kotlin\"\n            }\n          ]\n        },\n        {\n          \"match\": \"@\\\\w*\",\n          \"name\": \"storage.type.annotation.kotlin\"\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(apply|also|let|takeIf|run|takeUnless|with|print|println)\\\\b\\\\s*(?={|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.kotlin\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(mutableListOf|listOf|mutableMapOf|mapOf|mutableSetOf|setOf)\\\\b\\\\s*(?={|\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.kotlin\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"match\": \"/\\\\*\\\\*/\",\n          \"name\": \"comment.block.empty.kotlin\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        }\n      ]\n    },\n    \"comments-inline\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.kotlin\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.double-slash.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.kotlin\"\n            }\n          },\n          \"match\": \"\\\\s*((//).*$\\\\n?)\"\n        }\n      ]\n    },\n    \"class-literal\": {\n      \"begin\": \"(?=\\\\b(?:class|interface|object)\\\\s+\\\\w+)\\\\b\",\n      \"end\": \"(?=\\\\}|$)\",\n      \"name\": \"meta.class.kotlin\",\n      \"patterns\": [\n        {\n          \"include\": \"#keyword-literal\"\n        },\n        {\n          \"begin\": \"\\\\b(class|object|interface)\\\\b\\\\s+(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.kotlin\"\n            }\n          },\n          \"end\": \"(?=\\\\{|\\\\(|:|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-literal\"\n            },\n            {\n              \"include\": \"#annotations\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.kotlin\"\n            }\n          },\n          \"end\": \"(?={|=|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#braces\"\n        },\n        {\n          \"include\": \"#parens\"\n        }\n      ]\n    },\n    \"literal-functions\": {\n      \"begin\": \"(?=\\\\b(?:fun)\\\\b)\",\n      \"end\": \"(?=$|=|\\\\})\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(fun)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.kotlin\"\n            }\n          },\n          \"end\": \"(?=\\\\()\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"entity.name.function.kotlin\"\n                }\n              },\n              \"match\": \"([\\\\.<\\\\?>\\\\w]+\\\\.)?(\\\\w+|(`[^`]*`))\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            }\n          },\n          \"end\": \"(?={|=|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.declaration.kotlin\"\n            }\n          },\n          \"end\": \"(?=,|=|\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\w+(?=:)\",\n          \"name\": \"variable.parameter.function.kotlin\"\n        },\n        {\n          \"include\": \"#keyword-literal\"\n        }\n      ]\n    },\n    \"keyword-literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\!in|\\\\!is|as\\\\?)\",\n          \"name\": \"keyword.operator.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(in|is|as|assert)\\\\b\",\n          \"name\": \"keyword.operator.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(const)\\\\b\",\n          \"name\": \"storage.modifier.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(val|var)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\_)\\\\b\",\n          \"name\": \"punctuation.definition.variable.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(data|inline|tailrec|operator|infix|typealias|reified)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(external|public|private|protected|internal|abstract|final|sealed|enum|open|annotation|override|vararg|typealias|expect|actual|suspend|yield|out|in)\\\\b\",\n          \"name\": \"storage.modifier.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(try|catch|finally|throw)\\\\b\",\n          \"name\": \"keyword.control.catch-exception.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(if|else|when)\\\\b\",\n          \"name\": \"keyword.control.conditional.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(while|for|do|return|break|continue)\\\\b\",\n          \"name\": \"keyword.control.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(constructor|init)\\\\b\",\n          \"name\": \"entity.name.function.constructor\"\n        },\n        {\n          \"match\": \"\\\\b(companion|object)\\\\b\",\n          \"name\": \"storage.type.kotlin\"\n        }\n      ]\n    },\n    \"keyword-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(and|or|not|inv)\\\\b\",\n          \"name\": \"keyword.operator.bitwise.kotlin\"\n        },\n        {\n          \"match\": \"(==|!=|===|!==|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.kotlin\"\n        },\n        {\n          \"match\": \"(=)\",\n          \"name\": \"keyword.operator.assignment.kotlin\"\n        },\n        {\n          \"match\": \"(:(?!:))\",\n          \"name\": \"keyword.operator.declaration.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\?:)\",\n          \"name\": \"keyword.operator.elvis.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\-\\\\-|\\\\+\\\\+)\",\n          \"name\": \"keyword.operator.increment-decrement.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\+\\\\=|\\\\-\\\\=|\\\\*\\\\=|\\\\/\\\\=)\",\n          \"name\": \"keyword.operator.arithmetic.assign.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\!|\\\\&\\\\&|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.logical.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\.\\\\.)\",\n          \"name\": \"keyword.operator.range.kotlin\"\n        }\n      ]\n    },\n    \"keyword-punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(::)\",\n          \"name\": \"punctuation.accessor.reference.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\?\\\\.)\",\n          \"name\": \"punctuation.accessor.dot.safe.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\.)\",\n          \"name\": \"punctuation.accessor.dot.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\,)\",\n          \"name\": \"punctuation.seperator.kotlin\"\n        },\n        {\n          \"match\": \"(\\\\;)\",\n          \"name\": \"punctuation.terminator.kotlin\"\n        }\n      ]\n    },\n    \"keyword-constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(true|false|null|class)\\\\b\",\n          \"name\": \"constant.language.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(0(x|X)[0-9A-Fa-f_]*)[L]?\\\\b\",\n          \"name\": \"constant.numeric.hex.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(0(b|B)[0-1_]*)[L]?\\\\b\",\n          \"name\": \"constant.numeric.binary.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b([0-9][0-9_]*\\\\.[0-9][0-9_]*[fFL]?)\\\\b\",\n          \"name\": \"constant.numeric.float.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b([0-9][0-9_]*[fFL]?)\\\\b\",\n          \"name\": \"constant.numeric.integer.kotlin\"\n        }\n      ]\n    },\n    \"literal-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.kotlin\"\n            }\n          },\n          \"name\": \"string.quoted.double.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literal-raw-string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.kotlin\"\n            }\n          },\n          \"name\": \"string.quoted.triple.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-content\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-content\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.newline.kotlin\",\n          \"match\": \"\\\\\\\\\\\\s*\\\\n\"\n        },\n        {\n          \"name\": \"constant.character.escape.kotlin\",\n          \"match\": \"\\\\\\\\(x[\\\\da-fA-F]{2}|u[\\\\da-fA-F]{4}|.)\"\n        },\n        {\n          \"begin\": \"(\\\\$)(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.keyword.kotlin\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.block.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.kotlin\"\n            }\n          },\n          \"name\": \"entity.string.template.element.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(Nothing|Any|Unit|String|CharSequence|Int|Boolean|Char|Long|Double|Float|Short|Byte|Array|List|Map|Set|dynamic)\\\\b(\\\\?)?\",\n          \"name\": \"support.class.kotlin\"\n        },\n        {\n          \"match\": \"\\\\b(IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\\\\b(\\\\?)?\",\n          \"name\": \"support.class.kotlin\"\n        },\n        {\n          \"match\": \"((?:[a-zA-Z]\\\\w*\\\\.)*[A-Z]+\\\\w*[a-z]+\\\\w*)(\\\\?)\",\n          \"name\": \"entity.name.type.class.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-punctuation\"\n            },\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(?:[a-z]\\\\w*(\\\\.))*[A-Z]+\\\\w*\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.kotlin\"\n            }\n          },\n          \"name\": \"entity.name.type.class.kotlin\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#types\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#keyword-punctuation\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.group.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#keyword-punctuation\"\n            },\n            {\n              \"include\": \"#parameters\"\n            },\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.block.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.begin.kotlin\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.end.kotlin\"\n            }\n          },\n          \"name\": \"meta.brackets.kotlin\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ]\n        }\n      ]\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#comments-inline\"\n        },\n        {\n          \"include\": \"#annotations\"\n        },\n        {\n          \"include\": \"#class-literal\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#braces\"\n        },\n        {\n          \"include\": \"#brackets\"\n        },\n        {\n          \"include\": \"#keyword-literal\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#keyword-operator\"\n        },\n        {\n          \"include\": \"#keyword-constant\"\n        },\n        {\n          \"include\": \"#keyword-punctuation\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#literal-functions\"\n        },\n        {\n          \"include\": \"#builtin-classes\"\n        },\n        {\n          \"include\": \"#literal-raw-string\"\n        },\n        {\n          \"include\": \"#literal-string\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.kotlin\",\n  \"uuid\": \"d9380650-5edc-447d-8dbd-98838c7d0adf\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/latex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/LaTeX.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/6fc051150e918f8e5df7b102977d8d72eedf66f6\",\n  \"name\": \"latex\",\n  \"scopeName\": \"text.tex.latex\",\n  \"patterns\": [\n    {\n      \"comment\": \"This scope identifies partially typed commands such as `\\\\tab`. We use this to trigger “Command Completion” only when it makes sense.\",\n      \"match\": \"(?<=\\\\\\\\[\\\\w@]|\\\\\\\\[\\\\w@]{2}|\\\\\\\\[\\\\w@]{3}|\\\\\\\\[\\\\w@]{4}|\\\\\\\\[\\\\w@]{5}|\\\\\\\\[\\\\w@]{6})\\\\s\",\n      \"name\": \"meta.space-after-command.latex\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:usepackage|documentclass))((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.preamble.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"contentName\": \"support.class.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.preamble.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:include|input))(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.include.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.include.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\\\*)?)((?:\\\\[[^\\\\[]*?\\\\]){0,2})(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.section.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"comment\": \"this works OK with all kinds of crazy stuff as long as section is one line\",\n      \"contentName\": \"entity.name.section.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.section.$3.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.function.environment.songs.latex\",\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{songs\\\\}\\\\{.*\\\\})\",\n      \"end\": \"(\\\\\\\\end\\\\{songs\\\\}(?:\\\\s*\\\\n)?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"meta.data.environment.songs.latex\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.chord.block.latex support.class.chord.block.environment.latex\",\n          \"begin\": \"\\\\\\\\\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.chord.block.latex support.class.chord.block.environment.latex\",\n          \"match\": \"\\\\^\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=\\\\\\\\begin\\\\{(lstlisting|minted|pyglist)\\\\})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.latex\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:c|cpp)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.cpp.embedded.latex\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp.embedded.latex\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:asy|asymptote)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.asy\",\n          \"patterns\": [\n            {\n              \"include\": \"source.asy\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:css)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:hs|haskell)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.haskell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.haskell\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:html)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:xml)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:java)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:lua)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:jl|julia)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:rb|ruby)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:js|javascript)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:ts|typescript)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:py|python)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{minted\\\\}(?:\\\\[.*\\\\])?\\\\{(?:yaml)\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"source.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ],\n          \"end\": \"(\\\\\\\\end\\\\{minted\\\\})\"\n        },\n        {\n          \"begin\": \"(\\\\\\\\begin\\\\{(?:lstlisting|minted|pyglist)\\\\}(?:\\\\[.*\\\\])?)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#begin-env-tokenizer\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"meta.function.embedded.latex\",\n          \"end\": \"(\\\\\\\\end\\\\{(?:lstlisting|minted|pyglist)\\\\})\",\n          \"name\": \"meta.embedded.block.generic.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:cppcode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.cpp.embedded.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cpp.embedded.latex\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:hscode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.haskell\",\n      \"patterns\": [\n        {\n          \"include\": \"source.haskell\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:luacode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.julia\",\n      \"patterns\": [\n        {\n          \"include\": \"source.julia\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.julia\",\n      \"patterns\": [\n        {\n          \"include\": \"source.julia\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.python\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.python\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.python\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.python\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:scalacode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.scala\",\n      \"patterns\": [\n        {\n          \"include\": \"source.scala\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:asy|asycode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.asymptote\",\n      \"patterns\": [\n        {\n          \"include\": \"source.asymptote\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:dot2tex|dotcode)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.dot\",\n      \"patterns\": [\n        {\n          \"include\": \"source.dot\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:gnuplot)\\\\*?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"source.gnuplot\",\n      \"patterns\": [\n        {\n          \"include\": \"source.gnuplot\"\n        }\n      ],\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((?:\\\\s*)\\\\\\\\begin\\\\{([a-z]*code(?:\\\\*)?)\\\\}(?:\\\\[.*\\\\])?(?:\\\\{.*\\\\})?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)addplot)(?:\\\\+?)((?:\\\\[[^\\\\[]*\\\\]))*\\\\s*(gnuplot)\\\\s*((?:\\\\[[^\\\\[]*\\\\]))*\\\\s*(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.latex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.latex\"\n        },\n        {\n          \"include\": \"source.gnuplot\"\n        }\n      ],\n      \"end\": \"\\\\s*(\\\\};)\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{((?:fboxv|boxedv|V|v|spv)erbatim\\\\*?)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{VerbatimOut\\\\}\\\\{[^\\\\}]*\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"(\\\\\\\\end\\\\{\\\\VerbatimOut\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{alltt\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"markup.raw.verbatim.latex\",\n      \"end\": \"(\\\\\\\\end\\\\{alltt\\\\})\",\n      \"name\": \"meta.function.alltt.latex\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.function.latex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)[A-Za-z]+\",\n          \"name\": \"support.function.general.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{([Cc]omment)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"punctuation.definition.comment.latex\",\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\})\",\n      \"name\": \"meta.function.verbatim.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.url.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"markup.underline.link.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"match\": \"(?:\\\\s*)((\\\\\\\\)(?:url|href))(\\\\{)([^}]*)(\\\\})\",\n      \"name\": \"meta.function.link.url.latex\"\n    },\n    {\n      \"comment\": \"These two patterns match the \\\\begin{document} and \\\\end{document} commands, so that the environment matching pattern following them will ignore those commands.\",\n      \"match\": \"(\\\\s*\\\\\\\\begin\\\\{document\\\\})\",\n      \"name\": \"meta.function.begin-document.latex\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"match\": \"(\\\\s*\\\\\\\\end\\\\{document\\\\})\",\n      \"name\": \"meta.function.end-document.latex\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"(?:\\\\s*)((\\\\\\\\)begin)(\\\\{)((?:array|equation|(?:IEEE)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|cases|(?:display)?math|[a-zA-Z]*matrix|[pbBvV]?NiceMatrix|[pbBvV]?NiceArray|(?:(?:arg)?(?:mini|maxi)))(?:\\\\*|!)?)(\\\\})(\\\\s*\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"contentName\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"end\": \"(?:\\\\s*)((\\\\\\\\)end)(\\\\{)(\\\\4)(\\\\})(?:\\\\s*\\\\n)?\",\n      \"name\": \"meta.function.environment.math.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.equation.align.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.equation.newline.latex\"\n        },\n        {\n          \"include\": \"#definition-label\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:\\\\s*)(\\\\\\\\begin\\\\{empheq\\\\}(?:\\\\[.*\\\\])?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"end\": \"(?:\\\\s*)(\\\\\\\\end\\\\{empheq\\\\})\",\n      \"name\": \"meta.function.environment.math.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.equation.align.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.equation.newline.latex\"\n        },\n        {\n          \"include\": \"#definition-label\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{(tabular[xy*]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[X*]?)\\\\}(\\\\s*\\\\n)?)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"contentName\": \"meta.data.environment.tabular.latex\",\n      \"end\": \"(\\\\s*\\\\\\\\end\\\\{(\\\\2)\\\\}(?:\\\\s*\\\\n)?)\",\n      \"name\": \"meta.function.environment.tabular.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\\\\\)&\",\n          \"name\": \"keyword.control.table.cell.latex\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"keyword.control.table.newline.latex\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{(itemize|enumerate|description|list)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\",\n      \"name\": \"meta.function.environment.list.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{tikzpicture\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{tikzpicture\\\\}(?:\\\\s*\\\\n)?)\",\n      \"name\": \"meta.function.environment.latex.tikz\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{frame\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{frame\\\\})\",\n      \"name\": \"meta.function.environment.frame.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{(mpost\\\\*?)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\",\n      \"name\": \"meta.function.environment.latex.mpost\"\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{markdown\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{markdown\\\\})\",\n      \"contentName\": \"meta.embedded.markdown_latex_combined\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex.markdown_latex_combined\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(\\\\s*\\\\\\\\begin\\\\{(\\\\w+\\\\*?)\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#begin-env-tokenizer\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\\\\\end\\\\{\\\\2\\\\}(?:\\\\s*\\\\n)?)\",\n      \"name\": \"meta.function.environment.general.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"support.function.general.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.end.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\\\*?({)((\\\\\\\\)[^}]*)(})\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)marginpar)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.marginpar.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.marginpar.begin.latex\"\n        }\n      },\n      \"contentName\": \"meta.paragraph.margin.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.marginpar.end.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)footnote)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.footnote.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.footnote.begin.latex\"\n        }\n      },\n      \"contentName\": \"entity.name.footnote.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.footnote.end.latex\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)emph)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.emph.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.emph.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.italic.emph.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.emph.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.emph.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)textit)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.textit.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.textit.begin.latex\"\n        }\n      },\n      \"comment\": \"We put the keyword in a capture and name this capture, so that disabling spell checking for “keyword” won't be inherited by the argument to \\\\textit{...}.\\n\\nPut specific matches for particular LaTeX keyword.functions before the last two more general functions\",\n      \"contentName\": \"markup.italic.textit.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.textit.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.textit.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)textbf)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.textbf.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.textbf.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.bold.textbf.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.textbf.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.textbf.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)texttt)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.texttt.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.texttt.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.texttt.latex\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.texttt.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.texttt.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#braces\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.other.item.latex\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)item\\\\b\",\n      \"name\": \"meta.scope.item.latex\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:[aA]uto|foot|full|no|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\\\*?)((?:(?:\\\\([^\\\\)]*\\\\)){0,2}(?:\\\\[[^\\\\]]*\\\\]){0,2}\\\\{[\\\\w:.]*\\\\})*)(?:([<\\\\[])[^\\\\]<>]*([>\\\\]]))?(?:(\\\\[)[^\\\\]]*(\\\\]))?(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cite.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#autocites-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.citation.latex\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.percentage.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"match\": \"((%).*)$\"\n        },\n        {\n          \"match\": \"[\\\\w:.-]+\",\n          \"name\": \"constant.other.reference.citation.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)bibentry)(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cite.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.citation.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\w:.]+\",\n          \"name\": \"constant.other.reference.citation.latex\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:\\\\w*[rR]ef\\\\*?))(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.ref.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.reference.label.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z0-9\\\\.,:/*!^_-]\",\n          \"name\": \"constant.other.reference.label.latex\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#definition-label\"\n    },\n    {\n      \"begin\": \"((\\\\\\\\)(?:verb|Verb|spverb)\\\\*?)\\\\s*((\\\\\\\\)scantokens)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.begin.latex\"\n        }\n      },\n      \"contentName\": \"markup.raw.verb.latex\",\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.end.latex\"\n        }\n      },\n      \"name\": \"meta.function.verb.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"4\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:verb|Verb|spverb)\\\\*?)\\\\s*((?<=\\\\s)\\\\S|[^a-zA-Z])(.*?)(\\\\3|$)\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"10\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:mint|mintinline))((?:\\\\[[^\\\\[]*?\\\\])?)(\\\\{)[a-zA-Z]*(\\\\})(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\6))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"markup.raw.verb.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)[a-z]+inline)((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"source.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.verb.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"5\": {\n          \"name\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        },\n        \"8\": {\n          \"name\": \"source.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.verb.latex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)(?:jl|julia)[cv]?)((?:\\\\[[^\\\\[]*?\\\\])?)(?:(?:([^a-zA-Z\\\\{])(.*?)(\\\\4))|(?:(\\\\{)(.*?)(\\\\})))\",\n      \"name\": \"meta.function.verb.latex\"\n    },\n    {\n      \"match\": \"\\\\\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\\\b)\",\n      \"name\": \"keyword.control.layout.latex\"\n    },\n    {\n      \"begin\": \"\\\\\\\\\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\\\\\\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\$\\\\$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\$\\\\$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.latex\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tex\"\n        }\n      },\n      \"end\": \"\\\\$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tex\"\n        }\n      },\n      \"name\": \"meta.math.block.tex support.class.math.block.tex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.latex\"\n        },\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\\\\\\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\\\\\\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.latex\"\n        }\n      },\n      \"name\": \"meta.math.block.latex support.class.math.block.environment.latex\",\n      \"patterns\": [\n        {\n          \"include\": \"text.tex#math\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.latex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\\\\b\",\n      \"name\": \"constant.character.latex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.column-specials.begin.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.column-specials.end.latex\"\n        }\n      },\n      \"match\": \"(?:<|>)(\\\\{)\\\\$(\\\\})\",\n      \"name\": \"meta.column-specials.latex\"\n    },\n    {\n      \"include\": \"text.tex\"\n    }\n  ],\n  \"repository\": {\n    \"optional-arg\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.optional.arguments.begin.latex\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.latex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.optional.arguments.end.latex\"\n            }\n          },\n          \"match\": \"(\\\\[)([^\\\\[]*?)(\\\\])\",\n          \"name\": \"meta.parameter.optional.latex\"\n        }\n      ]\n    },\n    \"autocites-arg\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.arguments.begin.latex\"\n            },\n            \"6\": {\n              \"name\": \"constant.other.reference.citation.latex\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.arguments.end.latex\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#autocites-arg\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(?:(\\\\()[^\\\\)]*(\\\\))){0,2}(?:(\\\\[)[^\\\\]]*(\\\\])){0,2}(\\\\{)([\\\\w:.]+)(\\\\})(.*)\"\n        }\n      ]\n    },\n    \"begin-env-tokenizer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.be.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.function.latex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.arguments.optional.begin.latex\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.arguments.optional.end.latex\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        },\n        \"10\": {\n          \"name\": \"variable.parameter.function.latex\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"match\": \"\\\\s*((\\\\\\\\)(?:begin|end))(\\\\{)([a-zA-Z]*\\\\*?)(\\\\})(?:(\\\\[)(.*)(\\\\]))?(?:(\\\\{)([^{}]*)(\\\\}))?\"\n    },\n    \"definition-label\": {\n      \"begin\": \"((\\\\\\\\)label)((?:\\\\[[^\\\\[]*?\\\\])*)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.label.latex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.latex\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#optional-arg\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.arguments.begin.latex\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arguments.end.latex\"\n        }\n      },\n      \"name\": \"meta.definition.label.latex\",\n      \"patterns\": [\n        {\n          \"match\": \"[a-zA-Z0-9\\\\.,:/*!^_-]\",\n          \"name\": \"variable.parameter.definition.label.latex\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/less.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-less/blob/master/grammars/less.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-less/commit/87d4d59e8de6796b506b81a16e1dc1fafc99d30f\",\n  \"name\": \"less\",\n  \"scopeName\": \"source.css.less\",\n  \"patterns\": [\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.class.mixin.css\"\n        }\n      },\n      \"match\": \"(\\\\.[_a-zA-Z][a-zA-Z0-9_-]*(?=\\\\())\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.interpolation.less\"\n        }\n      },\n      \"match\": \"((\\\\.)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)\"\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"entity.other.attribute-name.parent-selector.css\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        }\n      },\n      \"match\": \"(&)[a-zA-Z0-9_-]*\"\n    },\n    {\n      \"begin\": \"(format|local|url|attr|counter|counters)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.misc.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\d{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^'\\\") \\\\t]+\",\n          \"name\": \"variable.parameter.misc.css\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b(?!.*?(?<!@){)\",\n      \"name\": \"constant.other.rgb-value.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.interpolation.less\"\n        }\n      },\n      \"match\": \"((#)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)\",\n      \"name\": \"meta.selector.css\"\n    },\n    {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    {\n      \"include\": \"source.css#numeric-values\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.begin.entity.css\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.attribute.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.operator.css\"\n        },\n        \"4\": {\n          \"name\": \"string.unquoted.attribute-value.css\"\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.attribute-value.css\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.css\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.end.css\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.end.entity.css\"\n        }\n      },\n      \"match\": \"(?i)(\\\\[)\\\\s*(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)(?:\\\\s*([~|^$*]?=)\\\\s*(?:(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)|((?>(['\\\"])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(\\\\])\",\n      \"name\": \"meta.attribute-selector.css\"\n    },\n    {\n      \"begin\": \"((@)import\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.import.less\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.less\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.at-rule.import.css\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\(|,|\\\\s)\\\\b(reference|optional|once|multiple|less|inline)\\\\b(?=\\\\)|,)\",\n          \"name\": \"keyword.control.import.option.less\"\n        },\n        {\n          \"include\": \"#brace_round\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#strings\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.fontface.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)font-face\\\\b)\",\n      \"name\": \"meta.at-rule.fontface.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.media.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.css\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)media\\\\b)\",\n      \"name\": \"meta.at-rule.media.css\"\n    },\n    {\n      \"include\": \"source.css#media-features\"\n    },\n    {\n      \"match\": \"\\\\b(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)\\\\b\",\n      \"name\": \"support.constant.media-type.media.css\"\n    },\n    {\n      \"match\": \"\\\\b(portrait|landscape)\\\\b\",\n      \"name\": \"support.constant.property-value.media-property.media.css\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.less\"\n        }\n      },\n      \"match\": \"(\\\\.[a-zA-Z0-9_-]+)\\\\s*(;|\\\\()\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.less\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.less\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.less\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(@|\\\\-\\\\-)[\\\\w-]+(?=\\\\s*)\",\n      \"name\": \"variable.other.less\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.less\"\n        }\n      }\n    },\n    {\n      \"include\": \"#variable_interpolation\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.css\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"source.css#pseudo-classes\"\n        },\n        {\n          \"include\": \"source.css#tag-names\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#variable_interpolation\"\n        },\n        {\n          \"include\": \"source.css#property-names\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\!\\\\s*important\",\n      \"name\": \"keyword.other.important.css\"\n    },\n    {\n      \"match\": \"\\\\*|\\\\/|\\\\-|\\\\+|~|=|<=|>=|<|>\",\n      \"name\": \"keyword.operator.less\"\n    },\n    {\n      \"match\": \"\\\\b(not|and|when)\\\\b\",\n      \"name\": \"keyword.control.logical.operator.less\"\n    },\n    {\n      \"include\": \"source.css#tag-names\"\n    },\n    {\n      \"match\": \"(?<![\\\\w-])[a-z][\\\\w&&[^A-Z]]*+-[\\\\w-&&[^A-Z]]+\",\n      \"name\": \"entity.name.tag.custom.css\"\n    },\n    {\n      \"include\": \"source.css#pseudo-elements\"\n    },\n    {\n      \"include\": \"source.css#pseudo-classes\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.property-list.begin.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.property-list.end.css\"\n        }\n      },\n      \"match\": \"(\\\\{)(\\\\})\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"match\": \"\\\\{|\\\\}\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"include\": \"#brace_round\"\n    },\n    {\n      \"match\": \"\\\\[|\\\\]\",\n      \"name\": \"meta.brace.square.less\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.rule.css\"\n    },\n    {\n      \"match\": \":\",\n      \"name\": \"punctuation.separator.key-value.css\"\n    },\n    {\n      \"match\": \"\\\\btrue\\\\b\",\n      \"name\": \"constant.language.boolean.less\"\n    },\n    {\n      \"match\": \"\\\\bdefault\\\\b\",\n      \"name\": \"support.function.default.less\"\n    },\n    {\n      \"match\": \"\\\\b(isurl|isstring|isnumber|iskeyword|iscolor)\\\\b\",\n      \"name\": \"support.function.type-checking.less\"\n    },\n    {\n      \"match\": \"\\\\b(isunit|ispixel|ispercentage|isem)\\\\b\",\n      \"name\": \"support.function.unit-checking.less\"\n    },\n    {\n      \"include\": \"source.css#property-keywords\"\n    },\n    {\n      \"include\": \"source.css#color-keywords\"\n    },\n    {\n      \"include\": \"source.css#commas\"\n    },\n    {\n      \"include\": \"#less_builtin_functions\"\n    },\n    {\n      \"include\": \"source.css#functions\"\n    }\n  ],\n  \"repository\": {\n    \"variable_interpolation\": {\n      \"match\": \"@{[a-zA-Z0-9_-]+}\",\n      \"name\": \"variable.other.interpolation.less\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([0-9A-Fa-f]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            },\n            {\n              \"include\": \"#variable_interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([0-9A-Fa-f]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            },\n            {\n              \"include\": \"#variable_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brace_round\": {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"meta.brace.round.css\"\n    },\n    \"property_values\": {\n      \"begin\": \"(?<!&)(:)\\\\s*(?!(\\\\s*{))(?!.*(?<!@){)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        }\n      },\n      \"end\": \"\\\\s*(;)|\\\\s*(?=})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"contentName\": \"meta.property-value.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"url(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.css\"\n            }\n          },\n          \"name\": \"support.function.any-method.builtin.url.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"match\": \"(\\\\b|\\\\.{0,2}/)[^)]*\\\\b\",\n              \"name\": \"string.url.css\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css#property-keywords\"\n        },\n        {\n          \"include\": \"source.css#color-keywords\"\n        },\n        {\n          \"include\": \"source.css#commas\"\n        },\n        {\n          \"include\": \"#less_builtin_functions\"\n        },\n        {\n          \"include\": \"source.css#functions\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"less_builtin_functions\": {\n      \"match\": \"\\\\b(abs|acos|alpha|argb|asin|atan|average|blue|calc|ceil|color|contrast|convert|convert|cos|darken|data-uri|desaturate|difference|e|escape|exclusion|extract|fade|fadein|fadeout|floor|format|green|greyscale|hardlight|hsl|hsla|hsv|hsva|hsvhue|hsvsaturation|hsvvalue|hue|length|lighten|lightness|luma|max|min|mix|mod|multiply|negation|overlay|percentage|pi|pow|red|replace|round|saturate|saturation|screen|sin|softlight|spin|sqrt|tan|unit)\\\\b\",\n      \"name\": \"support.function.any-method.builtin.less\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/liquid.tmLanguage.json",
    "content": "{\n  \"name\": \"liquid\",\n  \"scopeName\": \"text.html.liquid\",\n  \"fileTypes\": [\"liquid\"],\n  \"foldingStartMarker\": \"(?x)\\n{%\\n  -?\\n  \\\\s*\\n  (capture|case|comment|for|form|if|javascript|paginate|schema|style)\\n  [^(%})]+\\n%}\\n\",\n  \"foldingStopMarker\": \"(?x)\\n{%\\n  \\\\s*\\n  (endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\\n  [^(%})]+\\n%}\\n\",\n  \"injections\": {\n    \"L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted\": {\n      \"patterns\": [\n        {\n          \"include\": \"#injection\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#core\"\n    }\n  ],\n  \"repository\": {\n    \"core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#raw_tag\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_inline\"\n        },\n        {\n          \"include\": \"#style_codefence\"\n        },\n        {\n          \"include\": \"#json_codefence\"\n        },\n        {\n          \"include\": \"#javascript_codefence\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#tag\"\n        },\n        {\n          \"include\": \"text.html.basic\"\n        }\n      ]\n    },\n    \"injection\": {\n      \"patterns\": [\n        {\n          \"include\": \"#raw_tag\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_inline\"\n        },\n        {\n          \"include\": \"#object\"\n        },\n        {\n          \"include\": \"#tag_injection\"\n        }\n      ]\n    },\n    \"raw_tag\": {\n      \"begin\": \"{%-?\\\\s*(raw)\\\\s*-?%}\",\n      \"end\": \"{%-?\\\\s*(endraw)\\\\s*-?%}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.liquid\"\n        }\n      },\n      \"name\": \"meta.entity.tag.raw.liquid\",\n      \"contentName\": \"string.unquoted.liquid\",\n      \"patterns\": [\n        {\n          \"match\": \"(.(?!{%-?\\\\s*endraw\\\\s*-?%}))*.\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"begin\": \"{%-?\\\\s*comment\\\\s*-?%}\",\n      \"end\": \"{%-?\\\\s*endcomment\\\\s*-?%}\",\n      \"name\": \"comment.block.liquid\",\n      \"patterns\": [\n        {\n          \"match\": \"(.(?!{%-?\\\\s*endcomment\\\\s*-?%}))*.\"\n        }\n      ]\n    },\n    \"comment_inline\": {\n      \"begin\": \"{%-?\\\\s*#\",\n      \"end\": \"-?%}\",\n      \"name\": \"comment.line.number-sign.liquid\"\n    },\n    \"style_codefence\": {\n      \"begin\": \"({%-?)\\\\s*(style)\\\\s*(-?%})\",\n      \"end\": \"({%-?)\\\\s*(endstyle)\\\\s*(-?%})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.style.start.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.style.end.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"name\": \"meta.block.style.liquid\",\n      \"contentName\": \"meta.embedded.block.css\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    \"json_codefence\": {\n      \"begin\": \"({%-?)\\\\s*(schema)\\\\s*(-?%})\",\n      \"end\": \"({%-?)\\\\s*(endschema)\\\\s*(-?%})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.schema.start.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.schema.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.schema.end.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.schema.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"name\": \"meta.block.schema.liquid\",\n      \"contentName\": \"meta.embedded.block.json\",\n      \"patterns\": [\n        {\n          \"include\": \"source.json\"\n        }\n      ]\n    },\n    \"javascript_codefence\": {\n      \"begin\": \"({%-?)\\\\s*(javascript)\\\\s*(-?%})\",\n      \"end\": \"({%-?)\\\\s*(endjavascript)\\\\s*(-?%})\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.javascript.start.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.javascript.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.tag.metadata.javascript.end.liquid\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.javascript.liquid\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"name\": \"meta.block.javascript.liquid\",\n      \"contentName\": \"meta.embedded.block.js\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"tag\": {\n      \"begin\": \"(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?\",\n      \"end\": \"-?%}\",\n      \"name\": \"meta.tag.liquid\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag_body\"\n        }\n      ]\n    },\n    \"tag_injection\": {\n      \"begin\": \"(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?(?!-?\\\\s*(endstyle|endjavascript|endcomment|endraw))\",\n      \"end\": \"-?%}\",\n      \"name\": \"meta.tag.liquid\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag_body\"\n        }\n      ]\n    },\n    \"tag_body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag_liquid\"\n        },\n        {\n          \"include\": \"#tag_assign\"\n        },\n        {\n          \"include\": \"#tag_case\"\n        },\n        {\n          \"include\": \"#tag_conditional\"\n        },\n        {\n          \"include\": \"#tag_for\"\n        },\n        {\n          \"include\": \"#tag_paginate\"\n        },\n        {\n          \"include\": \"#tag_render\"\n        },\n        {\n          \"include\": \"#tag_tablerow\"\n        },\n        {\n          \"include\": \"#tag_expression\"\n        }\n      ]\n    },\n    \"tag_liquid\": {\n      \"name\": \"meta.entity.tag.liquid.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(liquid)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.liquid.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_comment_liquid\"\n        },\n        {\n          \"include\": \"#tag_assign_liquid\"\n        },\n        {\n          \"include\": \"#tag_case_liquid\"\n        },\n        {\n          \"include\": \"#tag_conditional_liquid\"\n        },\n        {\n          \"include\": \"#tag_for_liquid\"\n        },\n        {\n          \"include\": \"#tag_paginate_liquid\"\n        },\n        {\n          \"include\": \"#tag_render_liquid\"\n        },\n        {\n          \"include\": \"#tag_tablerow_liquid\"\n        },\n        {\n          \"include\": \"#tag_expression_liquid\"\n        }\n      ]\n    },\n    \"tag_comment_liquid\": {\n      \"name\": \"comment.block.liquid\",\n      \"begin\": \"(?:^\\\\s*)(comment)\\\\b\",\n      \"end\": \"(?:^\\\\s*)(endcomment)\\\\b\"\n    },\n    \"tag_tablerow\": {\n      \"name\": \"meta.entity.tag.tablerow.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(tablerow)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tablerow.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_tablerow_body\"\n        }\n      ]\n    },\n    \"tag_tablerow_liquid\": {\n      \"name\": \"meta.entity.tag.tablerow.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(tablerow)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tablerow.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_tablerow_body\"\n        }\n      ]\n    },\n    \"tag_tablerow_body\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in)\\\\b\",\n          \"name\": \"keyword.control.liquid\"\n        },\n        {\n          \"match\": \"\\\\b(cols|offset|limit):\",\n          \"name\": \"keyword.control.liquid\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_for\": {\n      \"name\": \"meta.entity.tag.for.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(for)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.for.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_for_body\"\n        }\n      ]\n    },\n    \"tag_for_liquid\": {\n      \"name\": \"meta.entity.tag.for.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(for)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.for.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_for_body\"\n        }\n      ]\n    },\n    \"tag_for_body\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|reversed)\\\\b\",\n          \"name\": \"keyword.control.liquid\"\n        },\n        {\n          \"match\": \"\\\\b(offset|limit):\",\n          \"name\": \"keyword.control.liquid\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_assign\": {\n      \"name\": \"meta.entity.tag.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(assign|echo)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#filter\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_assign_liquid\": {\n      \"name\": \"meta.entity.tag.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(assign|echo)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#filter\"\n        },\n        {\n          \"include\": \"#attribute_liquid\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_render\": {\n      \"name\": \"meta.entity.tag.render.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(render)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.render.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_render_special_keywords\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_render_liquid\": {\n      \"name\": \"meta.entity.tag.render.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(render)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.render.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_render_special_keywords\"\n        },\n        {\n          \"include\": \"#attribute_liquid\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_render_special_keywords\": {\n      \"match\": \"\\\\b(with|as|for)\\\\b\",\n      \"name\": \"keyword.control.other.liquid\"\n    },\n    \"tag_paginate\": {\n      \"name\": \"meta.entity.tag.paginate.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(paginate)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.paginate.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_paginate_body\"\n        }\n      ]\n    },\n    \"tag_paginate_liquid\": {\n      \"name\": \"meta.entity.tag.paginate.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(paginate)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.paginate.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_paginate_body\"\n        }\n      ]\n    },\n    \"tag_paginate_body\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(by)\\\\b\",\n          \"name\": \"keyword.control.liquid\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_conditional\": {\n      \"name\": \"meta.entity.tag.conditional.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(if|elsif|unless)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_conditional_liquid\": {\n      \"name\": \"meta.entity.tag.conditional.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(if|elsif|unless)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_case\": {\n      \"name\": \"meta.entity.tag.case.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(case|when)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.case.liquid\"\n        }\n      },\n      \"end\": \"(?=%})\",\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_case_liquid\": {\n      \"name\": \"meta.entity.tag.case.liquid\",\n      \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(case|when)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.case.liquid\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"tag_expression_without_arguments\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(endunless|endif)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.conditional.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(endfor|endtablerow|endpaginate)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(endcase)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(capture|case|comment|for|form|if|javascript|paginate|schema|style)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.other.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.other.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(else|break|continue)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.other.liquid\"\n            }\n          }\n        }\n      ]\n    },\n    \"tag_expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag_expression_without_arguments\"\n        },\n        {\n          \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.liquid\"\n            }\n          },\n          \"end\": \"(?=%})\",\n          \"name\": \"meta.entity.tag.liquid\",\n          \"patterns\": [\n            {\n              \"include\": \"#value_expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_expression_liquid\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag_expression_without_arguments\"\n        },\n        {\n          \"begin\": \"(?:(?:(?<={%)|(?<={%-)|^)\\\\s*)(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.liquid\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"meta.entity.tag.liquid\",\n          \"patterns\": [\n            {\n              \"include\": \"#value_expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object\": {\n      \"begin\": \"(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){{-?\",\n      \"end\": \"-?}}\",\n      \"name\": \"meta.object.liquid\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#filter\"\n        },\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"invalid_range\": {\n      \"match\": \"\\\\((.(?!\\\\.\\\\.))+\\\\)\",\n      \"name\": \"invalid.illegal.range.liquid\"\n    },\n    \"range\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.range.liquid\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.begin.liquid\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.parens.end.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\.\\\\.\",\n          \"name\": \"punctuation.range.liquid\"\n        },\n        {\n          \"include\": \"#variable_lookup\"\n        },\n        {\n          \"include\": \"#number\"\n        }\n      ]\n    },\n    \"number\": {\n      \"match\": \"((-|\\\\+)\\\\s*)?[0-9]+(\\\\.[0-9]+)?\",\n      \"name\": \"constant.numeric.liquid\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        }\n      ]\n    },\n    \"string_double\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.liquid\"\n    },\n    \"string_single\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.liquid\"\n    },\n    \"operator\": {\n      \"match\": \"(?:(?<=\\\\s)|\\\\b)(\\\\=\\\\=|!\\\\=|\\\\>|\\\\<|\\\\>\\\\=|\\\\<\\\\=|or|and|contains)(?:(?=\\\\s)|\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.liquid\"\n        }\n      }\n    },\n    \"language_constant\": {\n      \"match\": \"\\\\b(false|true|nil|blank)\\\\b|empty(?!\\\\?)\",\n      \"name\": \"constant.language.liquid\"\n    },\n    \"attribute\": {\n      \"begin\": \"\\\\w+:\",\n      \"end\": \"(?=,|%}|}}|\\\\|)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.other.attribute-name.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"attribute_liquid\": {\n      \"begin\": \"\\\\w+:\",\n      \"end\": \"(?=,|\\\\|)|$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.other.attribute-name.liquid\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#value_expression\"\n        }\n      ]\n    },\n    \"filter\": {\n      \"match\": \"\\\\|\\\\s*((?![\\\\.0-9])[a-zA-Z0-9_-]+\\\\:?)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.liquid\"\n        }\n      }\n    },\n    \"value_expression\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\[)(\\\\|)(?=[^\\\\]]*)(?=\\\\])\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"invalid.illegal.filter.liquid\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.filter.liquid\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<=\\\\s)(\\\\+|\\\\-|\\\\/|\\\\*)(?=\\\\s)\",\n          \"name\": \"invalid.illegal.filter.liquid\"\n        },\n        {\n          \"include\": \"#language_constant\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#invalid_range\"\n        },\n        {\n          \"include\": \"#range\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#variable_lookup\"\n        }\n      ]\n    },\n    \"variable_lookup\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(additional_checkout_buttons|address|all_country_option_tags|all_products|article|articles|block|blog|blogs|canonical_url|cart|checkout|collection|collections|comment|content_for_additional_checkout_buttons|content_for_header|content_for_index|content_for_layout|country_option_tags|currency|current_page|current_tags|customer|customer_address|discount_allocation|discount_application|external_video|font|forloop|form|fulfillment|gift_card|handle|image|images|line_item|link|linklist|linklists|location|localization|metafield|model|model_source|order|page|page_description|page_image|page_title|pages|paginate|part|policy|powered_by_link|predictive_search|product|product_option|product_variant|recommendations|request|routes|script|scripts|search|section|selling_plan|selling_plan_allocation|selling_plan_group|settings|shipping_method|shop|shop_locale|store_availability|tablerow|tax_line|template|theme|transaction|unit_price_measurement|variant|video|video_source)\\\\b\",\n          \"name\": \"variable.language.liquid\"\n        },\n        {\n          \"match\": \"((?<=\\\\w\\\\:\\\\s)\\\\w+)\",\n          \"name\": \"variable.parameter.liquid\"\n        },\n        {\n          \"begin\": \"(?<=\\\\w)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.begin.liquid\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.end.liquid\"\n            }\n          },\n          \"name\": \"meta.brackets.liquid\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=(\\\\w|\\\\])\\\\.)([-\\\\w]+\\\\??)\",\n          \"name\": \"variable.other.member.liquid\"\n        },\n        {\n          \"match\": \"(?<=\\\\w)\\\\.(?=\\\\w)\",\n          \"name\": \"punctuation.accessor.liquid\"\n        },\n        {\n          \"match\": \"(?i)[a-z_](\\\\w|(?:-(?!\\\\}\\\\})))*\",\n          \"name\": \"variable.other.liquid\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/lisp.tmLanguage.json",
    "content": "{\n  \"comment\": \"\",\n  \"fileTypes\": [\"lisp\", \"cl\", \"l\", \"mud\", \"el\"],\n  \"foldingStartMarker\": \"\\\\(\",\n  \"foldingStopMarker\": \"\\\\)\",\n  \"keyEquivalent\": \"^~L\",\n  \"name\": \"lisp\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.lisp\"\n        }\n      },\n      \"match\": \"(;).*$\\\\n?\",\n      \"name\": \"comment.line.semicolon.lisp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function-type.lisp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.lisp\"\n        }\n      },\n      \"match\": \"(?:\\\\()((?i:defgeneric|define-compiler-macro|define-method-combination|define-modify-macro|define-setf-expander|defmacro|defmethod|defsetf|defun||define-\\\\S+))\\\\s+((?:\\\\w|[+\\\\-<>/*&=.?!$%:@\\\\[\\\\]^{}~#|])+)\",\n      \"name\": \"meta.function.lisp\"\n    },\n    {\n      \"match\": \"(?<=\\\\s)(?i:&allow-other-keys|&aux|&body|&environment|&key|&optional|&rest|&whole)(?=\\\\s+)\",\n      \"name\": \"meta.function-parameters.lisp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function-type.lisp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.lisp\"\n        }\n      },\n      \"match\": \"(?:\\\\()((?i:deftype|defstruct|define-condition|defpackage|defclass))\\\\s+((?:\\\\w|[+\\\\-<>/*&=.?!$%:@\\\\[\\\\]^{}~#|])+)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function-type.lisp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.variable.lisp\"\n        }\n      },\n      \"match\": \"(?:\\\\()((?i:defvar|defconstant|defparameter|define-symbol-macro))\\\\s+((?:\\\\w|[+\\\\-<>/*&=.?!$%:@\\\\[\\\\]^{}~#|])+)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.lisp\"\n        }\n      },\n      \"match\": \"(#)(\\\\w|[\\\\\\\\+-=<>'\\\"&#])+\",\n      \"name\": \"constant.character.lisp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.lisp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.variable.lisp\"\n        }\n      },\n      \"match\": \"(?<=^|\\\\s|[()])(\\\\*)(\\\\S*)(\\\\*)(?=$|\\\\s|[()])\",\n      \"name\": \"variable.other.global.lisp\"\n    },\n    {\n      \"match\": \"(?<=^|\\\\s|[()]):(\\\\w|[+\\\\-<>/*&=.?!$%:@\\\\[\\\\]^{}~#|])*\",\n      \"name\": \"keyword.constant.lisp\"\n    },\n    {\n      \"match\": \"(?<=\\\\()(?i:\\\\*|\\\\*\\\\*|\\\\*\\\\*\\\\*|\\\\+|\\\\+\\\\+|\\\\+\\\\+\\\\+|\\\\-|/|//|///|/=|1\\\\+|1\\\\-|<|<=|=|>|>=|abort|abs|acons|acos|acosh|add-method|adjoin|adjust-array|adjustable-array-p|allocate-instance|alpha-char-p|alphanumericp|and|append|apply|apropos|apropos-list|aref|arithmetic-error|arithmetic-error-operands|arithmetic-error-operation|array|array-dimension|array-dimension-limit|array-dimensions|array-displacement|array-element-type|array-has-fill-pointer-p|array-in-bounds-p|array-rank|array-rank-limit|array-row-major-index|array-total-size|array-total-size-limit|arrayp|ash|asin|asinh|assert|assoc|assoc-if|assoc-if-not|atan|atanh|atom|base-char|base-string|bignum|bit|bit-and|bit-andc1|bit-andc2|bit-eqv|bit-ior|bit-nand|bit-nor|bit-not|bit-orc1|bit-orc2|bit-vector|bit-vector-p|bit-xor|block|boole|boole-1|boole-2|boole-and|boole-andc1|boole-andc2|boole-c1|boole-c2|boole-clr|boole-eqv|boole-ior|boole-nand|boole-nor|boole-orc1|boole-orc2|boole-set|boole-xor|boolean|both-case-p|boundp|break|broadcast-stream|broadcast-stream-streams|built-in-class|butlast|byte|byte-position|byte-size|caaaar|caaadr|caaar|caadar|caaddr|caadr|caar|cadaar|cadadr|cadar|caddar|cadddr|caddr|cadr|call-arguments-limit|call-method|call-next-method|car|case|catch|ccase|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cdar|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cddr|cdr|ceiling|cell-error|cell-error-name|cerror|change-class|char|char-code|char-code-limit|char-downcase|char-equal|char-greaterp|char-int|char-lessp|char-name|char-not-equal|char-not-greaterp|char-not-lessp|char-upcase|char/=|char<|char<=|char=|char>|char>=|character|characterp|check-type|cis|class|class-name|class-of|clear-input|clear-output|close|clrhash|code-char|coerce|compilation-speed|compile|compile-file|compile-file-pathname|compiled-function|compiled-function-p|compiler-macro|compiler-macro-function|complement|complex|complexp|compute-applicable-methods|compute-restarts|concatenate|concatenated-stream|concatenated-stream-streams|cond|condition|conjugate|cons|consp|constantly|constantp|continue|control-error|copy-alist|copy-list|copy-pprint-dispatch|copy-readtable|copy-seq|copy-structure|copy-symbol|copy-tree|cos|cosh|count|count-if|count-if-not|ctypecase|debug|decf|declaim|declaration|declare|decode-float|decode-universal-time|defclass|defconstant|defgeneric|define-compiler-macro|define-condition|define-method-combination|define-modify-macro|define-setf-expander|define-symbol-macro|defmacro|defmethod|defpackage|defparameter|defsetf|defstruct|deftype|defun|defvar|delete|delete-duplicates|delete-file|delete-if|delete-if-not|delete-package|denominator|deposit-field|describe|describe-object|destructuring-bind|digit-char|digit-char-p|directory|directory-namestring|disassemble|division-by-zero|do|do\\\\*|do-all-symbols|do-external-symbols|do-symbols|documentation|dolist|dotimes|double-float|double-float-epsilon|double-float-negative-epsilon|dpb|dribble|dynamic-extent|ecase|echo-stream|echo-stream-input-stream|echo-stream-output-stream|ed|eighth|elt|encode-universal-time|end-of-file|endp|enough-namestring|ensure-directories-exist|ensure-generic-function|eq|eql|equal|equalp|error|etypecase|eval|eval-when|evenp|every|exp|export|expt|extended-char|fboundp|fceiling|fdefinition|ffloor|fifth|file-author|file-error|file-error-pathname|file-length|file-namestring|file-position|file-stream|file-string-length|file-write-date|fill|fill-pointer|find|find-all-symbols|find-class|find-if|find-if-not|find-method|find-package|find-restart|find-symbol|finish-output|first|fixnum|flet|float|float-digits|float-precision|float-radix|float-sign|floating-point-inexact|floating-point-invalid-operation|floating-point-overflow|floating-point-underflow|floatp|floor|fmakunbound|force-output|format|formatter|fourth|fresh-line|fround|ftruncate|ftype|funcall|function|function-keywords|function-lambda-expression|functionp|gcd|generic-function|gensym|gentemp|get|get-decoded-time|get-dispatch-macro-character|get-internal-real-time|get-internal-run-time|get-macro-character|get-output-stream-string|get-properties|get-setf-expansion|get-universal-time|getf|gethash|go|graphic-char-p|handler-bind|handler-case|hash-table|hash-table-count|hash-table-p|hash-table-rehash-size|hash-table-rehash-threshold|hash-table-size|hash-table-test|host-namestring|identity|if|ignorable|ignore|ignore-errors|imagpart|import|in-package|incf|initialize-instance|inline|input-stream-p|inspect|integer|integer-decode-float|integer-length|integerp|interactive-stream-p|intern|internal-time-units-per-second|intersection|invalid-method-error|invoke-debugger|invoke-restart|invoke-restart-interactively|isqrt|keyword|keywordp|labels|lambda|lambda-list-keywords|lambda-parameters-limit|last|lcm|ldb|ldb-test|ldiff|least-negative-double-float|least-negative-long-float|least-negative-normalized-double-float|least-negative-normalized-long-float|least-negative-normalized-short-float|least-negative-normalized-single-float|least-negative-short-float|least-negative-single-float|least-positive-double-float|least-positive-long-float|least-positive-normalized-double-float|least-positive-normalized-long-float|least-positive-normalized-short-float|least-positive-normalized-single-float|least-positive-short-float|least-positive-single-float|length|let|let\\\\*|lisp-implementation-type|lisp-implementation-version|list|list\\\\*|list-all-packages|list-length|listen|listp|load|load-logical-pathname-translations|load-time-value|locally|log|logand|logandc1|logandc2|logbitp|logcount|logeqv|logical-pathname|logical-pathname-translations|logior|lognand|lognor|lognot|logorc1|logorc2|logtest|logxor|long-float|long-float-epsilon|long-float-negative-epsilon|long-site-name|loop|loop-finish|lower-case-p|machine-instance|machine-type|machine-version|macro-function|macroexpand|macroexpand-1|macrolet|make-array|make-broadcast-stream|make-concatenated-stream|make-condition|make-dispatch-macro-character|make-echo-stream|make-hash-table|make-instance|make-instances-obsolete|make-list|make-load-form|make-load-form-saving-slots|make-method|make-package|make-pathname|make-random-state|make-sequence|make-string|make-string-input-stream|make-string-output-stream|make-symbol|make-synonym-stream|make-two-way-stream|makunbound|map|map-into|mapc|mapcan|mapcar|mapcon|maphash|mapl|maplist|mask-field|max|member|member-if|member-if-not|merge|merge-pathnames|method|method-combination|method-combination-error|method-qualifiers|min|minusp|mismatch|mod|most-negative-double-float|most-negative-fixnum|most-negative-long-float|most-negative-short-float|most-negative-single-float|most-positive-double-float|most-positive-fixnum|most-positive-long-float|most-positive-short-float|most-positive-single-float|muffle-warning|multiple-value-bind|multiple-value-call|multiple-value-list|multiple-value-prog1|multiple-value-setq|multiple-values-limit|name-char|namestring|nbutlast|nconc|next-method-p|nil|nintersection|ninth|no-applicable-method|no-next-method|not|notany|notevery|notinline|nreconc|nreverse|nset-difference|nset-exclusive-or|nstring-capitalize|nstring-downcase|nstring-upcase|nsublis|nsubst|nsubst-if|nsubst-if-not|nsubstitute|nsubstitute-if|nsubstitute-if-not|nth|nth-value|nthcdr|null|number|numberp|numerator|nunion|oddp|open|open-stream-p|optimize|or|otherwise|output-stream-p|package|package-error|package-error-package|package-name|package-nicknames|package-shadowing-symbols|package-use-list|package-used-by-list|packagep|pairlis|parse-error|parse-integer|parse-namestring|pathname|pathname-device|pathname-directory|pathname-host|pathname-match-p|pathname-name|pathname-type|pathname-version|pathnamep|peek-char|phase|pi|plusp|pop|position|position-if|position-if-not|pprint|pprint-dispatch|pprint-exit-if-list-exhausted|pprint-fill|pprint-indent|pprint-linear|pprint-logical-block|pprint-newline|pprint-pop|pprint-tab|pprint-tabular|prin1|prin1-to-string|princ|princ-to-string|print|print-not-readable|print-not-readable-object|print-object|print-unreadable-object|probe-file|proclaim|prog|prog\\\\*|prog1|prog2|progn|program-error|progv|provide|psetf|psetq|push|pushnew|quote|random|random-state|random-state-p|rassoc|rassoc-if|rassoc-if-not|ratio|rational|rationalize|rationalp|read|read-byte|read-char|read-char-no-hang|read-delimited-list|read-from-string|read-line|read-preserving-whitespace|read-sequence|reader-error|readtable|readtable-case|readtablep|real|realp|realpart|reduce|reinitialize-instance|rem|remf|remhash|remove|remove-duplicates|remove-if|remove-if-not|remove-method|remprop|rename-file|rename-package|replace|require|rest|restart|restart-bind|restart-case|restart-name|return|return-from|revappend|reverse|room|rotatef|round|row-major-aref|rplaca|rplacd|safety|satisfies|sbit|scale-float|schar|search|second|sequence|serious-condition|set|set-difference|set-dispatch-macro-character|set-exclusive-or|set-macro-character|set-pprint-dispatch|set-syntax-from-char|setf|setq|seventh|shadow|shadowing-import|shared-initialize|shiftf|short-float|short-float-epsilon|short-float-negative-epsilon|short-site-name|signal|signed-byte|signum|simple-array|simple-base-string|simple-bit-vector|simple-bit-vector-p|simple-condition|simple-condition-format-arguments|simple-condition-format-control|simple-error|simple-string|simple-string-p|simple-type-error|simple-vector|simple-vector-p|simple-warning|sin|single-float|single-float-epsilon|single-float-negative-epsilon|sinh|sixth|sleep|slot-boundp|slot-exists-p|slot-makunbound|slot-missing|slot-unbound|slot-value|software-type|software-version|some|sort|space|special|special-operator-p|speed|sqrt|stable-sort|standard|standard-char|standard-char-p|standard-class|standard-generic-function|standard-method|standard-object|step|storage-condition|store-value|stream|stream-element-type|stream-error|stream-error-stream|stream-external-format|streamp|string|string-capitalize|string-downcase|string-equal|string-greaterp|string-left-trim|string-lessp|string-not-equal|string-not-greaterp|string-not-lessp|string-right-trim|string-stream|string-trim|string-upcase|string/=|string<|string<=|string=|string>|string>=|stringp|structure|structure-class|structure-object|style-warning|sublis|subseq|subsetp|subst|subst-if|subst-if-not|substitute|substitute-if|substitute-if-not|subtypep|svref|sxhash|symbol|symbol-function|symbol-macrolet|symbol-name|symbol-package|symbol-plist|symbol-value|symbolp|synonym-stream|synonym-stream-symbol|t|tagbody|tailp|tan|tanh|tenth|terpri|the|third|throw|time|trace|translate-logical-pathname|translate-pathname|tree-equal|truename|truncate|two-way-stream|two-way-stream-input-stream|two-way-stream-output-stream|type|type-error|type-error-datum|type-error-expected-type|type-of|typecase|typep|unbound-slot|unbound-slot-instance|unbound-variable|undefined-function|unexport|unintern|union|unless|unread-char|unsigned-byte|untrace|unuse-package|unwind-protect|update-instance-for-different-class|update-instance-for-redefined-class|upgraded-array-element-type|upgraded-complex-part-type|upper-case-p|use-package|use-value|user-homedir-pathname|values|values-list|variable|vector|vector-pop|vector-push|vector-push-extend|vectorp|warn|warning|when|wild-pathname-p|with-accessors|with-compilation-unit|with-condition-restarts|with-hash-table-iterator|with-input-from-string|with-open-file|with-open-stream|with-output-to-string|with-package-iterator|with-simple-restart|with-slots|with-standard-io-syntax|write|write-byte|write-char|write-line|write-sequence|write-string|write-to-string|y-or-n-p|yes-or-no-p|zerop|with-\\\\S+)(?=\\\\s+)\",\n      \"name\": \"keyword.control.lisp\"\n    },\n    {\n      \"match\": \"(?<=^|\\\\s|[()])(?i:nil|t)(?=$|\\\\s|[()])\",\n      \"name\": \"constant.language.lisp\"\n    },\n    {\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\\\b\",\n      \"name\": \"constant.numeric.lisp\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.lisp\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.lisp\"\n        }\n      },\n      \"name\": \"string.quoted.double.lisp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.lisp\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"source.lisp\",\n  \"uuid\": \"00D451C9-6B1D-11D9-8DFA-000D93589AF6\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/logo.tmLanguage.json",
    "content": "{\n  \"comment\": \"Roughed out by Paul Bissex <http://e-scribe.com/news/>\",\n  \"fileTypes\": [],\n  \"keyEquivalent\": \"^~L\",\n  \"name\": \"logo\",\n  \"patterns\": [\n    {\n      \"match\": \"^to [\\\\w.]+\",\n      \"name\": \"entity.name.function.logo\"\n    },\n    {\n      \"match\": \"continue|do\\\\.until|do\\\\.while|end|for(each)?|if(else|falsetrue|)|repeat|stop|until\",\n      \"name\": \"keyword.control.logo\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\.defmacro|\\\\.eq|\\\\.macro|\\\\.maybeoutput|\\\\.setbf|\\\\.setfirst|\\\\.setitem|\\\\.setsegmentsize|allopen|allowgetset|and|apply|arc|arctan|arity|array|arrayp|arraytolist|ascii|ashift|back|background|backslashedp|beforep|bitand|bitnot|bitor|bitxor|buried|buriedp|bury|buryall|buryname|butfirst|butfirsts|butlast|bye|cascade|case|caseignoredp|catch|char|clean|clearscreen|cleartext|close|closeall|combine|cond|contents|copydef|cos|count|crossmap|cursor|define|definedp|dequeue|difference|dribble|edall|edit|editfile|edn|edns|edpl|edpls|edps|emptyp|eofp|epspict|equalp|erall|erase|erasefile|ern|erns|erpl|erpls|erps|erract|error|exp|fence|filep|fill|filter|find|first|firsts|forever|form|forward|fput|fullprintp|fullscreen|fulltext|gc|gensym|global|goto|gprop|greaterp|heading|help|hideturtle|home|ignore|int|invoke|iseq|item|keyp|label|last|left|lessp|list|listp|listtoarray|ln|load|loadnoisily|loadpict|local|localmake|log10|lowercase|lput|lshift|macroexpand|macrop|make|map|map.se|mdarray|mditem|mdsetitem|member|memberp|minus|modulo|name|namelist|namep|names|nodes|nodribble|norefresh|not|numberp|openappend|openread|openupdate|openwrite|or|output|palette|parse|pause|pen|pencolor|pendown|pendownp|penerase|penmode|penpaint|penreverse|pensize|penup|pick|plist|plistp|plists|pllist|po|poall|pon|pons|pop|popl|popls|pops|pos|pot|pots|power|pprop|prefix|primitivep|print|printdepthlimit|printwidthlimit|procedurep|procedures|product|push|queue|quoted|quotient|radarctan|radcos|radsin|random|rawascii|readchar|readchars|reader|readlist|readpos|readrawline|readword|redefp|reduce|refresh|remainder|remdup|remove|remprop|repcount|rerandom|reverse|right|round|rseq|run|runparse|runresult|save|savel|savepict|screenmode|scrunch|sentence|setbackground|setcursor|seteditor|setheading|sethelploc|setitem|setlibloc|setmargins|setpalette|setpen|setpencolor|setpensize|setpos|setprefix|setread|setreadpos|setscrunch|settemploc|settextcolor|setwrite|setwritepos|setx|setxy|sety|shell|show|shownp|showturtle|sin|splitscreen|sqrt|standout|startup|step|stepped|steppedp|substringp|sum|tag|test|text|textscreen|thing|throw|towards|trace|traced|tracedp|transfer|turtlemode|type|unbury|unburyall|unburyname|unburyonedit|unstep|untrace|uppercase|usealternatenam|wait|while|window|word|wordp|wrap|writepos|writer|xcor|ycor)\\\\b\",\n      \"name\": \"keyword.other.logo\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.logo\"\n        }\n      },\n      \"match\": \"(\\\\:)(?:\\\\|[^|]*\\\\||[-\\\\w.]*)+\",\n      \"name\": \"variable.parameter.logo\"\n    },\n    {\n      \"match\": \"\\\"(?:\\\\|[^|]*\\\\||[-\\\\w.]*)+\",\n      \"name\": \"string.other.word.logo\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.logo\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \";\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.logo\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.semicolon.logo\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"source.logo\",\n  \"uuid\": \"7613EC24-B0F9-4D01-8706-1D54098BFFD8\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/lua.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/sumneko/lua.tmbundle/blob/master/Syntaxes/Lua.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/sumneko/lua.tmbundle/commit/bc74f9230c3f07c0ecc1bc1727ad98d9e70aff5b\",\n  \"name\": \"lua\",\n  \"scopeName\": \"source.lua\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\b(?:(local)\\\\s+)?(function)\\\\b(?![,:])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.local.lua\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.lua\"\n        }\n      },\n      \"end\": \"(?<=[\\\\)\\\\-{}\\\\[\\\\]\\\"'])\",\n      \"name\": \"meta.function.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.lua\"\n            }\n          },\n          \"end\": \"(\\\\))|(?=[\\\\-\\\\.{}\\\\[\\\\]\\\"'])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.finish.lua\"\n            }\n          },\n          \"name\": \"meta.parameter.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"[a-zA-Z_][a-zA-Z0-9_]*\",\n              \"name\": \"variable.parameter.function.lua\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.arguments.lua\"\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.arguments.lua\"\n                }\n              },\n              \"end\": \"(?=[\\\\),])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=:)\",\n          \"name\": \"entity.name.class.lua\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"entity.name.function.lua\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])0[xX][0-9A-Fa-f]+(\\\\.[0-9A-Fa-f]+)?([eE]-?\\\\d*)?([pP][-+]\\\\d+)?\",\n      \"name\": \"constant.numeric.float.hexadecimal.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])0[xX][0-9A-Fa-f]+(?![pPeE.0-9])\",\n      \"name\": \"constant.numeric.integer.hexadecimal.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])\\\\d+(\\\\.\\\\d+)?([eE]-?\\\\d*)?\",\n      \"name\": \"constant.numeric.float.lua\"\n    },\n    {\n      \"match\": \"(?<![\\\\w\\\\d.])\\\\d+(?![pPeE.0-9])\",\n      \"name\": \"constant.numeric.integer.lua\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.lua\"\n        }\n      },\n      \"match\": \"\\\\A(#!).*$\\\\n?\",\n      \"name\": \"comment.line.shebang.lua\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.lua\"\n        },\n        \"2\": {\n          \"name\": \"string.tag.lua\"\n        }\n      },\n      \"match\": \"\\\\b(goto)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.begin.lua\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.embedded.end.lua\"\n        }\n      },\n      \"match\": \"(::)\\\\s*[a-zA-Z_][a-zA-Z0-9_]*\\\\s*(::)\",\n      \"name\": \"string.tag.lua\"\n    },\n    {\n      \"match\": \"<\\\\s*(const|close)\\\\s*>\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.tag.lua\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\<[a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*\\\\>\",\n      \"name\": \"storage.type.generic.lua\"\n    },\n    {\n      \"match\": \"\\\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\\\b\",\n      \"name\": \"keyword.control.lua\"\n    },\n    {\n      \"match\": \"\\\\b(local|global)\\\\b\",\n      \"name\": \"keyword.local.lua\"\n    },\n    {\n      \"match\": \"\\\\b(function)\\\\b(?![,:])\",\n      \"name\": \"keyword.control.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(false|nil(?!:)|true|_ENV|_G|_VERSION|math\\\\.(pi|huge|maxinteger|mininteger)|utf8\\\\.charpattern|io\\\\.(stdin|stdout|stderr)|package\\\\.(config|cpath|loaded|loaders|path|preload|searchers))\\\\b|(?<![.])\\\\.{3}(?!\\\\.)\",\n      \"name\": \"constant.language.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(self)\\\\b\",\n      \"name\": \"variable.language.self.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"support.function.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(async)\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"entity.name.tag.lua\"\n    },\n    {\n      \"match\": \"(?<![^.]\\\\.|:)\\\\b(coroutine\\\\.(create|isyieldable|close|resume|running|status|wrap|yield)|string\\\\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)|table\\\\.(concat|insert|maxn|move|pack|remove|sort|unpack)|math\\\\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?|tointeger|type)|io\\\\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\\\\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\\\.(loadlib|seeall|searchpath)|debug\\\\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|[gs]etuservalue|set[Cc]stacklimit|traceback|upvalueid|upvaluejoin)|bit32\\\\.(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)|utf8\\\\.(char|codes|codepoint|len|offset))\\\\b(?!\\\\s*=(?!=))\",\n      \"name\": \"support.function.library.lua\"\n    },\n    {\n      \"match\": \"\\\\b(and|or|not|\\\\|\\\\||\\\\&\\\\&|\\\\!)\\\\b\",\n      \"name\": \"keyword.operator.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*(?:[({\\\"']|\\\\[\\\\[))\",\n      \"name\": \"support.function.any-method.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*\\\\??:)\",\n      \"name\": \"entity.name.class.lua\"\n    },\n    {\n      \"match\": \"(?<=[^.]\\\\.|:)\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"entity.other.attribute.lua\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"variable.other.lua\"\n    },\n    {\n      \"match\": \"\\\\+|-|%|#|\\\\*|\\\\/|\\\\^|==?|~=|!=|<=?|>=?|(?<!\\\\.)\\\\.{2}(?!\\\\.)\",\n      \"name\": \"keyword.operator.lua\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[abfnrtv\\\\\\\\\\\"'\\\\n]\",\n          \"name\": \"constant.character.escape.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\z[\\\\n\\\\t ]*\",\n          \"name\": \"constant.character.escape.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\d{1,3}\",\n          \"name\": \"constant.character.escape.byte.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f][0-9A-Fa-f]\",\n          \"name\": \"constant.character.escape.byte.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\u\\\\{[0-9A-Fa-f]+\\\\}\",\n          \"name\": \"constant.character.escape.unicode.lua\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.character.escape.lua\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"'[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.single.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"\\\"[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.double.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"`[ \\\\t]*|(?=\\\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.double.lua\"\n        },\n        {\n          \"begin\": \"(?<=\\\\.cdef)\\\\s*(\\\\[(=*)\\\\[)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.other.multiline.lua\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"contentName\": \"meta.embedded.lua\",\n          \"end\": \"(\\\\]\\\\2\\\\])[ \\\\t]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.other.multiline.lua\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!--)\\\\[(=*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.lua\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1\\\\][ \\\\t]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.lua\"\n            }\n          },\n          \"name\": \"string.quoted.other.multiline.lua\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.lua\"\n            }\n          },\n          \"end\": \"(?!\\\\G)((?!^)[ \\\\t]+\\\\n)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.trailing.lua\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"--\\\\[(=*)\\\\[\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.lua\"\n                }\n              },\n              \"end\": \"\\\\]\\\\1\\\\]\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.lua\"\n                }\n              },\n              \"name\": \"comment.block.lua\"\n            },\n            {\n              \"begin\": \"----\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.lua\"\n            },\n            {\n              \"begin\": \"---\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.doc.lua\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.lua\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.lua\"\n            }\n          },\n          \"end\": \"\\\\*\\\\/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.lua\"\n            }\n          },\n          \"name\": \"comment.block.lua\"\n        }\n      ]\n    },\n    \"luadoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=---\\\\s*)@class\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \":|,\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@type\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@alias\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@param\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(\\\\??)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.variable.lua\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@return\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\?\",\n              \"name\": \"keyword.operator.lua\"\n            },\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@field\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b|(\\\\[))(\\\\??)\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"entity.name.variable.lua\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#luadoc.type\"\n                },\n                {\n                  \"match\": \"\\\\]\",\n                  \"name\": \"keyword.operator.lua\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@generic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"storage.type.generic.lua\"\n                }\n              },\n              \"end\": \"(?=\\\\n)|(,)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.lua\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \":\",\n                  \"name\": \"keyword.operator.lua\"\n                },\n                {\n                  \"include\": \"#luadoc.type\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@vararg\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@overload\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#luadoc.type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@deprecated\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\"\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@meta\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\"\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@version\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(5\\\\.1|5\\\\.2|5\\\\.3|5\\\\.4|JIT)\\\\b\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \",|\\\\>|\\\\<\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@see\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*)\",\n              \"name\": \"support.class.lua\"\n            },\n            {\n              \"match\": \"#\",\n              \"name\": \"keyword.operator.lua\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@diagnostic\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"begin\": \"([a-zA-Z_\\\\-0-9]+)[ \\\\t]*(:)?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.unit\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b([a-zA-Z_\\\\*][a-zA-Z0-9_\\\\-]*)\",\n                  \"name\": \"support.class.lua\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"keyword.operator.lua\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=---\\\\s*)@module\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=---\\\\s*)@(async|nodiscard)\",\n          \"name\": \"storage.type.annotation.lua\"\n        },\n        {\n          \"begin\": \"(?<=---)\\\\|\\\\s*[\\\\>\\\\+]?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.annotation.lua\"\n            }\n          },\n          \"end\": \"(?=[\\\\n@#])\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"luadoc.type\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfun\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.lua\"\n            }\n          },\n          \"end\": \"(?=\\\\s)\",\n          \"patterns\": [\n            {\n              \"match\": \"[\\\\(\\\\),:\\\\?][ \\\\t]*\",\n              \"name\": \"keyword.operator.lua\"\n            },\n            {\n              \"match\": \"([a-zA-Z_][a-zA-Z0-9_\\\\.\\\\*\\\\[\\\\]\\\\<\\\\>\\\\,\\\\-]*)(?<!,)[ \\\\t]*(?=\\\\??:)\",\n              \"name\": \"entity.name.variable.lua\"\n            },\n            {\n              \"include\": \"#luadoc.type\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\<[a-zA-Z_\\\\*][a-zA-Z0-9_\\\\.\\\\*\\\\-]*\\\\>\",\n          \"name\": \"storage.type.generic.lua\"\n        },\n        {\n          \"match\": \"\\\\basync\\\\b\",\n          \"name\": \"entity.name.tag.lua\"\n        },\n        {\n          \"match\": \"[\\\\{\\\\}\\\\:\\\\,\\\\?\\\\|\\\\`][ \\\\t]*\",\n          \"name\": \"keyword.operator.lua\"\n        },\n        {\n          \"begin\": \"(?=[a-zA-Z_\\\\.\\\\*\\\"'\\\\[])\",\n          \"end\": \"(?=[\\\\s\\\\)\\\\,\\\\?\\\\:\\\\}\\\\|])\",\n          \"patterns\": [\n            {\n              \"match\": \"([a-zA-Z0-9_\\\\.\\\\*\\\\[\\\\]\\\\<\\\\>\\\\,\\\\-]+)(?<!,)[ \\\\t]*\",\n              \"name\": \"support.type.lua\"\n            },\n            {\n              \"match\": \"(\\\\.\\\\.\\\\.)[ \\\\t]*\",\n              \"name\": \"constant.language.lua\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/make.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/fadeevab/make.tmbundle/blob/master/Syntaxes/Makefile.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/fadeevab/make.tmbundle/commit/ef0c485afc66445a6cf184dc34f7744306304f1f\",\n  \"name\": \"make\",\n  \"scopeName\": \"source.makefile\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#variables\"\n    },\n    {\n      \"include\": \"#variable-assignment\"\n    },\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#recipe\"\n    },\n    {\n      \"include\": \"#target\"\n    }\n  ],\n  \"repository\": {\n    \"comma\": {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimeter.comma.makefile\"\n    },\n    \"comment\": {\n      \"begin\": \"(^[ ]+)?((?<!\\\\\\\\)(\\\\\\\\\\\\\\\\)*)(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.makefile\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.makefile\"\n            }\n          },\n          \"end\": \"(?=[^\\\\\\\\])$\",\n          \"name\": \"comment.line.number-sign.makefile\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^[ ]*([s\\\\-]?include)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.include.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(vpath)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.vpath.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:(override)\\\\s*)?(define)\\\\s*([^\\\\s]+)\\\\s*(=|\\\\?=|:=|\\\\+=)?(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.override.makefile\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.define.makefile\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.makefile\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.key-value.makefile\"\n            }\n          },\n          \"end\": \"^\\\\s*(endef)\\\\b\",\n          \"name\": \"meta.scope.conditional.makefile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!\\\\n)\",\n              \"end\": \"^\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#directives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(export)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variable-assignment\"\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"variable.other.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(override|private)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variable-assignment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^[ ]*(unexport|undefine)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"[^\\\\s]+\",\n              \"name\": \"variable.other.makefile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(ifeq|ifneq|ifdef|ifndef)(?=\\\\s)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.$1.makefile\"\n            }\n          },\n          \"end\": \"^\\\\s*(endif)\\\\b\",\n          \"name\": \"meta.scope.conditional.makefile\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"^\",\n              \"name\": \"meta.scope.condition.makefile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"^\\\\s*else(?=\\\\s)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.else.makefile\"\n                }\n              },\n              \"end\": \"^\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comma\"\n                },\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"target\": {\n      \"begin\": \"^(?!\\\\t)([^:]*)(:)(?!\\\\=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.function.target.$1.makefile\"\n                }\n              },\n              \"match\": \"^\\\\s*(\\\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\\\s*$\"\n            },\n            {\n              \"begin\": \"(?=\\\\S)\",\n              \"end\": \"(?=\\\\s|$)\",\n              \"name\": \"entity.name.function.target.makefile\",\n              \"patterns\": [\n                {\n                  \"include\": \"#variables\"\n                },\n                {\n                  \"match\": \"%\",\n                  \"name\": \"constant.other.placeholder.makefile\"\n                }\n              ]\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.makefile\"\n        }\n      },\n      \"end\": \"[^\\\\\\\\]$\",\n      \"name\": \"meta.scope.target.makefile\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\",\n          \"end\": \"(?=[^\\\\\\\\])$\",\n          \"name\": \"meta.scope.prerequisites.makefile\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"recipe\": {\n      \"begin\": \"^\\\\t([+\\\\-@]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.$1.makefile\"\n        }\n      },\n      \"end\": \"[^\\\\\\\\]$\",\n      \"name\": \"meta.scope.recipe.makefile\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.continuation.makefile\"\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"variable-assignment\": {\n      \"begin\": \"(^[ ]*|\\\\G\\\\s*)([^\\\\s:#=]+)\\\\s*((?<![?:+!])=|\\\\?=|:=|\\\\+=|!=)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.key-value.makefile\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.continuation.makefile\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#parentheses-interpolation\"\n        },\n        {\n          \"include\": \"#braces-interpolation\"\n        }\n      ]\n    },\n    \"parentheses-interpolation\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"braces-interpolation\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#simple-variable\"\n        },\n        {\n          \"include\": \"#variable-parentheses\"\n        },\n        {\n          \"include\": \"#variable-braces\"\n        }\n      ]\n    },\n    \"simple-variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$[^(){}]\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.makefile\"\n            }\n          },\n          \"end\": \"\\\\)|((?<!\\\\\\\\)\\\\n)\",\n          \"name\": \"string.interpolated.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#builtin-variable-parentheses\"\n            },\n            {\n              \"include\": \"#function-variable-parentheses\"\n            },\n            {\n              \"include\": \"#flavor-variable-parentheses\"\n            },\n            {\n              \"include\": \"#another-variable-parentheses\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\${\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.makefile\"\n            }\n          },\n          \"end\": \"}|((?<!\\\\\\\\)\\\\n)\",\n          \"name\": \"string.interpolated.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#builtin-variable-braces\"\n            },\n            {\n              \"include\": \"#function-variable-braces\"\n            },\n            {\n              \"include\": \"#flavor-variable-braces\"\n            },\n            {\n              \"include\": \"#another-variable-braces\"\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\()(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\\\.LIBPATTERNS)(?=\\\\s*\\\\))\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"builtin-variable-braces\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<={)(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\\\.LIBPATTERNS)(?=\\\\s*})\",\n          \"name\": \"variable.language.makefile\"\n        }\n      ]\n    },\n    \"function-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=\\\\)|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\\\s\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=}|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#comma\"\n            },\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"%|\\\\*\",\n              \"name\": \"constant.other.placeholder.makefile\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flavor-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(origin|flavor)\\\\s(?=[^\\\\s)]+\\\\s*\\\\))\",\n          \"contentName\": \"variable.other.makefile\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flavor-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(origin|flavor)\\\\s(?=[^\\\\s}]+\\\\s*})\",\n          \"contentName\": \"variable.other.makefile\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.$1.makefile\"\n            }\n          },\n          \"end\": \"(?=})\",\n          \"name\": \"meta.scope.function-call.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"another-variable-parentheses\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\()(?!\\\\))\",\n          \"end\": \"(?=\\\\)|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"another-variable-braces\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<={)(?!})\",\n          \"end\": \"(?=}|((?<!\\\\\\\\)\\\\n))\",\n          \"name\": \"variable.other.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\n\",\n              \"name\": \"constant.character.escape.continuation.makefile\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/markdown.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-markdown-tm-grammar/blob/master/syntaxes/markdown.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-markdown-tm-grammar/commit/97f2f8d38f10d3febd77d85b745945dc60fe334e\",\n  \"name\": \"markdown\",\n  \"scopeName\": \"text.html.markdown\",\n  \"patterns\": [\n    {\n      \"include\": \"#frontMatter\"\n    },\n    {\n      \"include\": \"#block\"\n    }\n  ],\n  \"repository\": {\n    \"block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#separator\"\n        },\n        {\n          \"include\": \"#heading\"\n        },\n        {\n          \"include\": \"#blockquote\"\n        },\n        {\n          \"include\": \"#lists\"\n        },\n        {\n          \"include\": \"#fenced_code_block\"\n        },\n        {\n          \"include\": \"#raw_block\"\n        },\n        {\n          \"include\": \"#link-def\"\n        },\n        {\n          \"include\": \"#html\"\n        },\n        {\n          \"include\": \"#paragraph\"\n        }\n      ]\n    },\n    \"blockquote\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(>) ?\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.quote.begin.markdown\"\n        }\n      },\n      \"name\": \"markup.quote.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#block\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)\\\\s*(>) ?\"\n    },\n    \"fenced_code_block_css\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css|css.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_basic\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ini\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ini\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ini\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_java\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.java\",\n          \"patterns\": [\n            {\n              \"include\": \"source.java\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_lua\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.lua\",\n          \"patterns\": [\n            {\n              \"include\": \"source.lua\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_makefile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.makefile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.makefile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_r\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(R|r|s|S|Rprofile|\\\\{\\\\.r.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ruby\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_php\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.php\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_sql\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_vs_net\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.vs_net\",\n          \"patterns\": [\n            {\n              \"include\": \"source.asp.vb.net\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_xsl\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xsl|xslt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.xsl\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml.xsl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_yaml\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yaml|yml)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"source.yaml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dosbatch\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat|batch)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dosbatch\",\n          \"patterns\": [\n            {\n              \"include\": \"source.batchfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_clojure\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(clj|cljs|clojure)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.clojure\",\n          \"patterns\": [\n            {\n              \"include\": \"source.clojure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_coffee\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_c\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.c\",\n          \"patterns\": [\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_cpp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cpp|c\\\\+\\\\+|cxx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.cpp source.cpp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_diff\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.diff\",\n          \"patterns\": [\n            {\n              \"include\": \"source.diff\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dockerfile\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dockerfile|Dockerfile)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dockerfile\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dockerfile\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_commit\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_commit\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-commit\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_git_rebase\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.git_rebase\",\n          \"patterns\": [\n            {\n              \"include\": \"text.git-rebase\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_go\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go|golang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.go\",\n          \"patterns\": [\n            {\n              \"include\": \"source.go\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_groovy\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(groovy|gvy)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.groovy\",\n          \"patterns\": [\n            {\n              \"include\": \"source.groovy\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_pug\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"text.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.javascript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_js_regexp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.js_regexp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js.regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_json\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_jsonc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.jsonc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json.comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_less\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.less\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_objc\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"source.objc\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_swift\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"source.swift\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scss\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_perl6\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.perl6\",\n          \"patterns\": [\n            {\n              \"include\": \"source.perl.6\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_powershell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(powershell|ps1|psm1|psd1)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.powershell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.powershell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\\\{\\\\.python.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_julia\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.julia\",\n          \"patterns\": [\n            {\n              \"include\": \"source.julia\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_regexp_python\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.regexp_python\",\n          \"patterns\": [\n            {\n              \"include\": \"source.regexp.python\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_rust\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.rust\",\n          \"patterns\": [\n            {\n              \"include\": \"source.rust\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_scala\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scala|sbt)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.scala\",\n          \"patterns\": [\n            {\n              \"include\": \"source.scala\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_shell\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?\\\\})((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.shellscript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_ts\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(typescript|ts)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescript\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_tsx\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.typescriptreact\",\n          \"patterns\": [\n            {\n              \"include\": \"source.tsx\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_csharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cs|csharp|c#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.csharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.cs\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_fsharp\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(fs|fsharp|f#)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.fsharp\",\n          \"patterns\": [\n            {\n              \"include\": \"source.fsharp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_dart\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.dart\",\n          \"patterns\": [\n            {\n              \"include\": \"source.dart\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_handlebars\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(handlebars|hbs)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.handlebars\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.handlebars\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_markdown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(markdown|md)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_log\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.log\",\n          \"patterns\": [\n            {\n              \"include\": \"text.log\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_erlang\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.erlang\",\n          \"patterns\": [\n            {\n              \"include\": \"source.erlang\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_elixir\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.elixir\",\n          \"patterns\": [\n            {\n              \"include\": \"source.elixir\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_latex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(latex|tex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.latex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.tex.latex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block_bibtex\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|:|,|\\\\{|\\\\?)[^`~]*)?$)\",\n      \"name\": \"markup.fenced_code.block.markdown\",\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language.markdown\"\n        },\n        \"5\": {\n          \"name\": \"fenced_code.block.language.attributes.markdown\"\n        }\n      },\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)(\\\\s*)(.*)\",\n          \"while\": \"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)\",\n          \"contentName\": \"meta.embedded.block.bibtex\",\n          \"patterns\": [\n            {\n              \"include\": \"text.bibtex\"\n            }\n          ]\n        }\n      ]\n    },\n    \"fenced_code_block\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fenced_code_block_css\"\n        },\n        {\n          \"include\": \"#fenced_code_block_basic\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ini\"\n        },\n        {\n          \"include\": \"#fenced_code_block_java\"\n        },\n        {\n          \"include\": \"#fenced_code_block_lua\"\n        },\n        {\n          \"include\": \"#fenced_code_block_makefile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_r\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ruby\"\n        },\n        {\n          \"include\": \"#fenced_code_block_php\"\n        },\n        {\n          \"include\": \"#fenced_code_block_sql\"\n        },\n        {\n          \"include\": \"#fenced_code_block_vs_net\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_xsl\"\n        },\n        {\n          \"include\": \"#fenced_code_block_yaml\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dosbatch\"\n        },\n        {\n          \"include\": \"#fenced_code_block_clojure\"\n        },\n        {\n          \"include\": \"#fenced_code_block_coffee\"\n        },\n        {\n          \"include\": \"#fenced_code_block_c\"\n        },\n        {\n          \"include\": \"#fenced_code_block_cpp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_diff\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dockerfile\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_commit\"\n        },\n        {\n          \"include\": \"#fenced_code_block_git_rebase\"\n        },\n        {\n          \"include\": \"#fenced_code_block_go\"\n        },\n        {\n          \"include\": \"#fenced_code_block_groovy\"\n        },\n        {\n          \"include\": \"#fenced_code_block_pug\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js\"\n        },\n        {\n          \"include\": \"#fenced_code_block_js_regexp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_json\"\n        },\n        {\n          \"include\": \"#fenced_code_block_jsonc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_less\"\n        },\n        {\n          \"include\": \"#fenced_code_block_objc\"\n        },\n        {\n          \"include\": \"#fenced_code_block_swift\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scss\"\n        },\n        {\n          \"include\": \"#fenced_code_block_perl6\"\n        },\n        {\n          \"include\": \"#fenced_code_block_powershell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_julia\"\n        },\n        {\n          \"include\": \"#fenced_code_block_regexp_python\"\n        },\n        {\n          \"include\": \"#fenced_code_block_rust\"\n        },\n        {\n          \"include\": \"#fenced_code_block_scala\"\n        },\n        {\n          \"include\": \"#fenced_code_block_shell\"\n        },\n        {\n          \"include\": \"#fenced_code_block_ts\"\n        },\n        {\n          \"include\": \"#fenced_code_block_tsx\"\n        },\n        {\n          \"include\": \"#fenced_code_block_csharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_fsharp\"\n        },\n        {\n          \"include\": \"#fenced_code_block_dart\"\n        },\n        {\n          \"include\": \"#fenced_code_block_handlebars\"\n        },\n        {\n          \"include\": \"#fenced_code_block_markdown\"\n        },\n        {\n          \"include\": \"#fenced_code_block_log\"\n        },\n        {\n          \"include\": \"#fenced_code_block_erlang\"\n        },\n        {\n          \"include\": \"#fenced_code_block_elixir\"\n        },\n        {\n          \"include\": \"#fenced_code_block_latex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_bibtex\"\n        },\n        {\n          \"include\": \"#fenced_code_block_unknown\"\n        }\n      ]\n    },\n    \"fenced_code_block_unknown\": {\n      \"begin\": \"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`~]*)?$)\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        },\n        \"4\": {\n          \"name\": \"fenced_code.block.language\"\n        }\n      },\n      \"end\": \"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$\",\n      \"endCaptures\": {\n        \"3\": {\n          \"name\": \"punctuation.definition.markdown\"\n        }\n      },\n      \"name\": \"markup.fenced_code.block.markdown\"\n    },\n    \"heading\": {\n      \"match\": \"(?:^|\\\\G)[ ]{0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.6.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.5.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.4.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.3.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.2.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            },\n            {\n              \"match\": \"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$\",\n              \"name\": \"heading.1.markdown\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.section.markdown\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#inline\"\n                    },\n                    {\n                      \"include\": \"text.html.derivative\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.heading.markdown\"\n                }\n              }\n            }\n          ]\n        }\n      },\n      \"name\": \"markup.heading.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        }\n      ]\n    },\n    \"heading-setext\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(={3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.1.markdown\"\n        },\n        {\n          \"match\": \"^(-{3,})(?=[ \\\\t]*$\\\\n?)\",\n          \"name\": \"markup.heading.setext.2.markdown\"\n        }\n      ]\n    },\n    \"html\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(<!--)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.html\"\n            }\n          },\n          \"end\": \"(-->)\",\n          \"name\": \"comment.block.html\"\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))\",\n          \"end\": \"(?i)(.*)((</)(script|style|pre)(>))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"meta.tag.structure.$4.end.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.html\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\s*|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ],\n              \"while\": \"(?i)^(?!.*</(script|style|pre)>)\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(^|\\\\G)\\\\s*(?=</?[a-zA-Z]+[^\\\\s/&gt;]*(\\\\s|$|/?>))\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)\\\\s*(?=(<[a-zA-Z0-9\\\\-](/?>|\\\\s.*?>)|</[a-zA-Z0-9\\\\-]>)\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ],\n          \"while\": \"^(?!\\\\s*$)\"\n        }\n      ]\n    },\n    \"link-def\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"6\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  \\\\s*            # Leading whitespace\\n  (\\\\[)([^]]+?)(\\\\])(:)    # Reference name\\n  [ \\\\t]*          # Optional whitespace\\n  (?:(<)([^\\\\>]+?)(>)|(\\\\S+?))      # The url\\n  [ \\\\t]*          # Optional whitespace\\n  (?:\\n      ((\\\\().+?(\\\\)))    # Match title in parens…\\n    | ((\\\").+?(\\\"))    # or in double quotes…\\n    | ((').+?('))    # or in single quotes.\\n  )?            # Title is optional\\n  \\\\s*            # Optional whitespace\\n  $\\n\",\n      \"name\": \"meta.link.reference.def.markdown\"\n    },\n    \"list_paragraph\": {\n      \"begin\": \"(^|\\\\G)(?=\\\\S)(?![*+->]\\\\s|[0-9]+\\\\.\\\\s)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)(?!\\\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\\\t]*$\\\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\\\.)\"\n    },\n    \"lists\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([*+-])([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"comment\": \"Currently does not support un-indented second lines.\",\n          \"name\": \"markup.list.unnumbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        },\n        {\n          \"begin\": \"(^|\\\\G)([ ]{0,3})([0-9]+\\\\.)([ \\\\t])\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"punctuation.definition.list.begin.markdown\"\n            }\n          },\n          \"name\": \"markup.list.numbered.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#block\"\n            },\n            {\n              \"include\": \"#list_paragraph\"\n            }\n          ],\n          \"while\": \"((^|\\\\G)([ ]{2,4}|\\\\t))|(^[ \\\\t]*$)\"\n        }\n      ]\n    },\n    \"paragraph\": {\n      \"begin\": \"(^|\\\\G)[ ]{0,3}(?=\\\\S)\",\n      \"name\": \"meta.paragraph.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        },\n        {\n          \"include\": \"#heading-setext\"\n        }\n      ],\n      \"while\": \"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)|[ ]{4,}(?=\\\\S))\"\n    },\n    \"raw_block\": {\n      \"begin\": \"(^|\\\\G)([ ]{4}|\\\\t)\",\n      \"name\": \"markup.raw.block.markdown\",\n      \"while\": \"(^|\\\\G)([ ]{4}|\\\\t)\"\n    },\n    \"separator\": {\n      \"match\": \"(^|\\\\G)[ ]{0,3}([\\\\*\\\\-\\\\_])([ ]{0,2}\\\\2){2,}[ \\\\t]*$\\\\n?\",\n      \"name\": \"meta.separator.markdown\"\n    },\n    \"frontMatter\": {\n      \"begin\": \"\\\\A-{3}\\\\s*$\",\n      \"contentName\": \"meta.embedded.block.frontmatter\",\n      \"patterns\": [\n        {\n          \"include\": \"source.yaml\"\n        }\n      ],\n      \"end\": \"(^|\\\\G)-{3}|\\\\.{3}\\\\s*$\"\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        }\n      ]\n    },\n    \"ampersand\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)\",\n      \"name\": \"meta.other.valid-ampersand.markdown\"\n    },\n    \"bold\": {\n      \"begin\": \"(?x) (?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S) (?=\\n  (\\n    <[^>]*+>              # HTML tags\\n    | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                      # Raw\\n    | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n    | \\\\[\\n    (\\n        (?<square>          # Named group\\n          [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n          | \\\\\\\\.            # Escaped chars\\n          | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n        )*+\\n      \\\\]\\n      (\\n        (              # Reference Link\\n          [ ]?          # Optional space\\n          \\\\[[^\\\\]]*+\\\\]        # Ref name\\n        )\\n        | (              # Inline Link\\n          \\\\(            # Opening paren\\n            [ \\\\t]*+        # Optional whitespace\\n            <?(.*?)>?      # URL\\n            [ \\\\t]*+        # Optional whitespace\\n            (          # Optional Title\\n              (?<title>['\\\"])\\n              (.*?)\\n              \\\\k<title>\\n            )?\\n          \\\\)\\n        )\\n      )\\n    )\\n    | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                      # style closer\\n  )++\\n  (?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>                # Close\\n)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.bold.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)\",\n      \"name\": \"markup.bold.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"bracket\": {\n      \"comment\": \"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.\",\n      \"match\": \"<(?![a-zA-Z/?\\\\$!])\",\n      \"name\": \"meta.other.valid-bracket.markdown\"\n    },\n    \"escape\": {\n      \"match\": \"\\\\\\\\[-`*_#+.!(){}\\\\[\\\\]\\\\\\\\>]\",\n      \"name\": \"constant.character.escape.markdown\"\n    },\n    \"image-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"markup.underline.link.image.markdown\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"11\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.markdown\"\n        },\n        \"18\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    (<?)(\\\\S+?)(>?)      # The url\\n    [ \\\\t]*          # Optional whitespace\\n    (?:\\n        ((\\\\().+?(\\\\)))    # Match title in parens…\\n      | ((\\\").+?(\\\"))    # or in double quotes…\\n      | ((').+?('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.image.inline.markdown\"\n    },\n    \"image-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.description.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.description.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.description.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.markdown\"\n        }\n      },\n      \"match\": \"(\\\\!\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(.*?)(\\\\])\",\n      \"name\": \"meta.image.reference.markdown\"\n    },\n    \"italic\": {\n      \"begin\": \"(?x) (?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)                # Open\\n  (?=\\n    (\\n      <[^>]*+>              # HTML tags\\n      | (?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>\\n                        # Raw\\n      | \\\\\\\\[\\\\\\\\`*_{}\\\\[\\\\]()#.!+\\\\->]?+      # Escapes\\n      | \\\\[\\n      (\\n          (?<square>          # Named group\\n            [^\\\\[\\\\]\\\\\\\\]        # Match most chars\\n            | \\\\\\\\.            # Escaped chars\\n            | \\\\[ \\\\g<square>*+ \\\\]    # Nested brackets\\n          )*+\\n        \\\\]\\n        (\\n          (              # Reference Link\\n            [ ]?          # Optional space\\n            \\\\[[^\\\\]]*+\\\\]        # Ref name\\n          )\\n          | (              # Inline Link\\n            \\\\(            # Opening paren\\n              [ \\\\t]*+        # Optional whtiespace\\n              <?(.*?)>?      # URL\\n              [ \\\\t]*+        # Optional whtiespace\\n              (          # Optional Title\\n                (?<title>['\\\"])\\n                (.*?)\\n                \\\\k<title>\\n              )?\\n            \\\\)\\n          )\\n        )\\n      )\\n      | \\\\k<open>\\\\k<open>                   # Must be bold closer\\n      | (?!(?<=\\\\S)\\\\k<open>).            # Everything besides\\n                        # style closer\\n    )++\\n    (?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>                # Close\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.italic.markdown\"\n        }\n      },\n      \"end\": \"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))\",\n      \"name\": \"markup.italic.markdown\",\n      \"patterns\": [\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?=<[^>]*?>)\",\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.derivative\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#ampersand\"\n        },\n        {\n          \"include\": \"#bracket\"\n        },\n        {\n          \"include\": \"#raw\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#image-inline\"\n        },\n        {\n          \"include\": \"#link-inline\"\n        },\n        {\n          \"include\": \"#link-inet\"\n        },\n        {\n          \"include\": \"#link-email\"\n        },\n        {\n          \"include\": \"#image-ref\"\n        },\n        {\n          \"include\": \"#link-ref-literal\"\n        },\n        {\n          \"include\": \"#link-ref\"\n        },\n        {\n          \"include\": \"#link-ref-shortcut\"\n        },\n        {\n          \"include\": \"#strikethrough\"\n        }\n      ]\n    },\n    \"link-email\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*)(>)\",\n      \"name\": \"meta.link.email.lt-gt.markdown\"\n    },\n    \"link-inet\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"2\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        }\n      },\n      \"match\": \"(<)((?:https?|ftp)://.*?)(>)\",\n      \"name\": \"meta.link.inet.markdown\"\n    },\n    \"link-inline\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#raw\"\n            },\n            {\n              \"include\": \"#bold\"\n            },\n            {\n              \"include\": \"#italic\"\n            },\n            {\n              \"include\": \"#strikethrough\"\n            },\n            {\n              \"include\": \"#image-inline\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"8\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"9\": {\n          \"name\": \"punctuation.definition.link.markdown\"\n        },\n        \"10\": {\n          \"name\": \"markup.underline.link.markdown\"\n        },\n        \"12\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"14\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"15\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"16\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"17\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"18\": {\n          \"name\": \"string.other.link.description.title.markdown\"\n        },\n        \"19\": {\n          \"name\": \"punctuation.definition.string.begin.markdown\"\n        },\n        \"20\": {\n          \"name\": \"punctuation.definition.string.end.markdown\"\n        },\n        \"21\": {\n          \"name\": \"punctuation.definition.metadata.markdown\"\n        }\n      },\n      \"match\": \"(?x)\\n  (\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])\\n                # Match the link text.\\n  (\\\\()            # Opening paren for url\\n    # The url\\n      [ \\\\t]*\\n      (\\n         (<)([^<>\\\\n]*)(>)\\n         | ((?<url>(?>[^\\\\s()]+)|\\\\(\\\\g<url>*\\\\))*)\\n      )\\n      [ \\\\t]*\\n    # The title  \\n    (?:\\n        ((\\\\()[^()]*(\\\\)))    # Match title in parens…\\n      | ((\\\")[^\\\"]*(\\\"))    # or in double quotes…\\n      | ((')[^']*('))    # or in single quotes.\\n    )?            # Title is optional\\n    \\\\s*            # Optional whitespace\\n  (\\\\))\\n\",\n      \"name\": \"meta.link.inline.markdown\"\n    },\n    \"link-ref\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#raw\"\n            },\n            {\n              \"include\": \"#bold\"\n            },\n            {\n              \"include\": \"#italic\"\n            },\n            {\n              \"include\": \"#strikethrough\"\n            },\n            {\n              \"include\": \"#image-inline\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"constant.other.reference.link.markdown\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])(\\\\[)([^\\\\]]*+)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"link-ref-literal\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.constant.begin.markdown\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.constant.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)((?<square>[^\\\\[\\\\]\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+\\\\])*+)(\\\\])[ ]?(\\\\[)(\\\\])\",\n      \"name\": \"meta.link.reference.literal.markdown\"\n    },\n    \"link-ref-shortcut\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.link.title.begin.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link.title.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.link.title.end.markdown\"\n        }\n      },\n      \"match\": \"(?<![\\\\]\\\\\\\\])(\\\\[)(\\\\S+?)(\\\\])\",\n      \"name\": \"meta.link.reference.markdown\"\n    },\n    \"raw\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.raw.markdown\"\n        }\n      },\n      \"match\": \"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)\",\n      \"name\": \"markup.inline.raw.string.markdown\"\n    },\n    \"strikethrough\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"applyEndPatternLast\": 1,\n              \"begin\": \"(?=<[^>]*?>)\",\n              \"end\": \"(?<=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.derivative\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#ampersand\"\n            },\n            {\n              \"include\": \"#bracket\"\n            },\n            {\n              \"include\": \"#raw\"\n            },\n            {\n              \"include\": \"#bold\"\n            },\n            {\n              \"include\": \"#italic\"\n            },\n            {\n              \"include\": \"#image-inline\"\n            },\n            {\n              \"include\": \"#link-inline\"\n            },\n            {\n              \"include\": \"#link-inet\"\n            },\n            {\n              \"include\": \"#link-email\"\n            },\n            {\n              \"include\": \"#image-ref\"\n            },\n            {\n              \"include\": \"#link-ref-literal\"\n            },\n            {\n              \"include\": \"#link-ref\"\n            },\n            {\n              \"include\": \"#link-ref-shortcut\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.strikethrough.markdown\"\n        }\n      },\n      \"match\": \"(?<!\\\\\\\\)(~{2,})((?:[^~]|(?!(?<![~\\\\\\\\])\\\\1(?!~))~)*+)(\\\\1)\",\n      \"name\": \"markup.strikethrough.markdown\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/marko.tmLanguage.json",
    "content": "{\n  \"name\": \"marko\",\n  \"scopeName\": \"text.marko\",\n  \"uuid\": \"46c8c3f8-cabe-466a-a633-5deafdc51253\",\n  \"fileTypes\": [\"marko\"],\n  \"patterns\": [\n    {\n      \"comment\": \"CSS style block, eg: style { color: green }\",\n      \"name\": \"meta.embedded.css\",\n      \"contentName\": \"source.css\",\n      \"begin\": \"^\\\\s*(style)(\\\\b[^\\\\s]*\\\\.css)?\\\\s+({)\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.marko\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.marko.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.scope.begin.marko.css\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.marko.css\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Less style block, eg: style.less { color: green }\",\n      \"name\": \"meta.embedded.less\",\n      \"contentName\": \"source.less\",\n      \"begin\": \"^\\\\s*(style)(\\\\b[^\\\\s]*\\\\.less)\\\\s+({)\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css.less\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.marko\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.marko.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.scope.begin.marko.css\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.marko.css\"\n        }\n      }\n    },\n    {\n      \"comment\": \"SCSS style block, eg: style.scss { color: green }\",\n      \"name\": \"meta.embedded.scss\",\n      \"contentName\": \"source.scss\",\n      \"begin\": \"^\\\\s*(style)(\\\\b[^\\\\s]*\\\\.scss)\\\\s+({)\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.css.scss\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.marko\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.marko.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.scope.begin.marko.css\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.marko.css\"\n        }\n      }\n    },\n    {\n      \"comment\": \"JS/TS style block\",\n      \"name\": \"meta.embedded.ts\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"^\\\\s*(style)(\\\\b[^\\\\s]*\\\\.[tj]s)\\\\s+({)\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.builtin.marko\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.marko.css\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.scope.begin.marko.css\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.marko.css\"\n        }\n      }\n    },\n    {\n      \"comment\": \"Top level blocks parsed as JavaScript\",\n      \"name\": \"meta.embedded.ts\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"^\\\\s*(?:(static\\\\b)|(?=(?:class|import|export)\\\\b))\",\n      \"end\": \"(?=\\\\n|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.static.marko\"\n        }\n      }\n    },\n    {\n      \"include\": \"#content-concise-mode\"\n    }\n  ],\n  \"repository\": {\n    \"attrs\": {\n      \"patterns\": [\n        {\n          \"include\": \"#javascript-comments\"\n        },\n        {\n          \"comment\": \"Attribute with optional value\",\n          \"name\": \"meta.marko-attribute\",\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"(?:(key|on[a-zA-Z0-9_$-]+|[a-zA-Z0-9_$]+Change|no-update(?:-body)?(?:-if)?)|([a-zA-Z0-9_$][a-zA-Z0-9_$-]*))(:[a-zA-Z0-9_$][a-zA-Z0-9_$-]*)?\",\n          \"end\": \"(?=.|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.attribute-name.marko\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.marko\"\n            },\n            \"3\": {\n              \"name\": \"support.function.attribute-name.marko\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#html-args-or-method\"\n            },\n            {\n              \"include\": \"#attr-value\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"A ...spread attribute\",\n          \"name\": \"meta.marko-spread-attribute\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"(\\\\.\\\\.\\\\.)\",\n          \"end\": \"(?=[,;\\\\]]|/>|(?<=[^>=])>[^>=]|(?<!(?:^|[!~*%&^|?:]|[!~*%&^|?/<>+=-]=|=>|>{2,}|[^.]\\\\.|[^-]-|^\\\\s*\\\\+\\\\+|[^+]\\\\+{2}*\\\\+|[a-zA-Z0-9%).<\\\\]}]\\\\s*/|\\\\b(?<![.]\\\\s*)(?:await|async|class|function|keyof|new|typeof|void))\\\\s*)(?:\\\\n|[ \\\\t]+(?![\\\\n{(+!~*%&^|?:]|[<>/=-]=|=>|>{2,}|\\\\.[^.]|-[^-]|/[^>]|(?:in|instanceof|as|extends)\\\\s+[^:=/,;>])))\",\n          \"patterns\": [\n            {\n              \"include\": \"#javascript-expression\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.spread.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Consume any whitespace after a comma\",\n          \"begin\": \"\\\\s*(,(?!,))\",\n          \"end\": \"(?=\\\\S)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.comma.marko\"\n            }\n          }\n        },\n        {\n          \"include\": \"#invalid\"\n        }\n      ]\n    },\n    \"attr-value\": {\n      \"comment\": \"Attribute value\",\n      \"name\": \"meta.embedded.ts\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"\\\\s*(:?=)\\\\s*\",\n      \"end\": \"(?=[,;\\\\]]|/>|(?<=[^>=])>[^>=]|(?<!(?:^|[!~*%&^|?:]|[!~*%&^|?/<>+=-]=|=>|>{2,}|[^.]\\\\.|[^-]-|^\\\\s*\\\\+\\\\+|[^+]\\\\+{2}*\\\\+|[a-zA-Z0-9%).<\\\\]}]\\\\s*/|\\\\b(?<![.]\\\\s*)(?:await|async|class|function|keyof|new|typeof|void))\\\\s*)(?:\\\\n|[ \\\\t]+(?![\\\\n{(+!~*%&^|?:]|[<>/=-]=|=>|>{2,}|\\\\.[^.]|-[^-]|/[^>]|(?:in|instanceof|as|extends)\\\\s+[^:=/,;>])))\",\n      \"patterns\": [\n        {\n          \"include\": \"#javascript-expression\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      }\n    },\n    \"concise-html-block\": {\n      \"comment\": \"--- HTML block within concise mode content. ---\",\n      \"name\": \"meta.section.marko-html-block\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-html-mode\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-html-line\": {\n      \"comment\": \"-- HTML line within concise mode content. (content-html-mode w/o scriptlet)\",\n      \"name\": \"meta.section.marko-html-line\",\n      \"match\": \"\\\\s*(--+)(?=\\\\s+\\\\S)(.*)($)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#cdata\"\n            },\n            {\n              \"include\": \"#doctype\"\n            },\n            {\n              \"include\": \"#declaration\"\n            },\n            {\n              \"include\": \"#html-comment\"\n            },\n            {\n              \"include\": \"#tag-html\"\n            },\n            {\n              \"comment\": \"Match escape characters in text.\",\n              \"name\": \"text.marko\",\n              \"match\": \"\\\\\\\\.\"\n            },\n            {\n              \"include\": \"#placeholder\"\n            },\n            {\n              \"comment\": \"Match anything else as text.\",\n              \"name\": \"text.marko\",\n              \"match\": \".+?\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-semi-eol\": {\n      \"comment\": \"Match spaces followed by a semi that represents the end of the line in concise mode.\",\n      \"begin\": \"\\\\s*(;)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#javascript-comments\"\n        },\n        {\n          \"include\": \"#html-comment\"\n        },\n        {\n          \"include\": \"#invalid\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.marko\"\n        }\n      }\n    },\n    \"concise-attr-group\": {\n      \"comment\": \"Matches a group of non newline sensitive attributes in square brackets.\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"end\": \"]\",\n      \"patterns\": [\n        {\n          \"include\": \"#concise-attr-group\"\n        },\n        {\n          \"begin\": \"\\\\s+\",\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"include\": \"#attrs\"\n        },\n        {\n          \"include\": \"#invalid\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-open-tag-content\": {\n      \"comment\": \"Handles everything from the start of the tag name until the body content begins.\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-before-attrs\"\n        },\n        {\n          \"include\": \"#concise-semi-eol\"\n        },\n        {\n          \"comment\": \"Matches unenclosed concise mode attributes.\",\n          \"begin\": \"(?!^)[ \\\\t]\",\n          \"end\": \"(?=--)|(?=\\\\n)\",\n          \"patterns\": [\n            {\n              \"include\": \"#concise-semi-eol\"\n            },\n            {\n              \"include\": \"#concise-attr-group\"\n            },\n            {\n              \"begin\": \"[ \\\\t]+\",\n              \"end\": \"(?=\\\\S|\\\\n)\"\n            },\n            {\n              \"include\": \"#attrs\"\n            },\n            {\n              \"include\": \"#invalid\"\n            }\n          ]\n        }\n      ]\n    },\n    \"concise-comment-block\": {\n      \"comment\": \"--- Embedded concise comment content block. ---\",\n      \"name\": \"meta.section.marko-comment-block\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-comment\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-comment-line\": {\n      \"comment\": \"-- Embedded concise comment content line.\",\n      \"name\": \"meta.section.marko-comment-line\",\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\s*(--+)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-comment\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-script-block\": {\n      \"comment\": \"--- Embedded concise script content block. ---\",\n      \"name\": \"meta.section.marko-script-block\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-script\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-script-line\": {\n      \"comment\": \"-- Embedded concise script content line.\",\n      \"name\": \"meta.section.marko-script-line\",\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\s*(--+)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-script\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-block\": {\n      \"comment\": \"--- Embedded concise style content block. ---\",\n      \"name\": \"meta.section.marko-style-block\",\n      \"contentName\": \"source.css\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-block-less\": {\n      \"comment\": \"--- Embedded concise style content block. ---\",\n      \"name\": \"meta.section.marko-style-block\",\n      \"contentName\": \"source.less\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style-less\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-block-scss\": {\n      \"comment\": \"--- Embedded concise style content block. ---\",\n      \"name\": \"meta.section.marko-style-block\",\n      \"contentName\": \"source.scss\",\n      \"begin\": \"\\\\s*(--+)\\\\s*$\",\n      \"end\": \"\\\\1\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style-scss\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-line\": {\n      \"comment\": \"-- Embedded concise style content line.\",\n      \"name\": \"meta.section.marko-style-line\",\n      \"contentName\": \"source.css\",\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\s*(--+)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-line-less\": {\n      \"comment\": \"-- Embedded concise style content line.\",\n      \"name\": \"meta.section.marko-style-line\",\n      \"contentName\": \"source.less\",\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\s*(--+)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style-less\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"concise-style-line-scss\": {\n      \"comment\": \"-- Embedded concise style content line.\",\n      \"name\": \"meta.section.marko-style-line\",\n      \"contentName\": \"source.scss\",\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\s*(--+)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#content-embedded-style-scss\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.scope.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.scope.end.marko\"\n        }\n      }\n    },\n    \"content-concise-mode\": {\n      \"comment\": \"Concise mode content block.\",\n      \"name\": \"meta.marko-concise-content\",\n      \"patterns\": [\n        {\n          \"include\": \"#scriptlet\"\n        },\n        {\n          \"include\": \"#javascript-comments\"\n        },\n        {\n          \"include\": \"#cdata\"\n        },\n        {\n          \"include\": \"#doctype\"\n        },\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#html-comment\"\n        },\n        {\n          \"include\": \"#concise-html-block\"\n        },\n        {\n          \"include\": \"#concise-html-line\"\n        },\n        {\n          \"include\": \"#invalid-close-tag\"\n        },\n        {\n          \"include\": \"#tag-html\"\n        },\n        {\n          \"comment\": \"A concise html tag.\",\n          \"patterns\": [\n            {\n              \"comment\": \"Concise Marko html-comment tag\",\n              \"begin\": \"^(\\\\s*)(?=html-comment\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-comment-block\"\n                },\n                {\n                  \"include\": \"#concise-comment-line\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Concise style tag less\",\n              \"begin\": \"^(\\\\s*)(?=style\\\\b[^\\\\s]*\\\\.less\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-style-block-less\"\n                },\n                {\n                  \"include\": \"#concise-style-line-less\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Concise style tag scss\",\n              \"begin\": \"^(\\\\s*)(?=style\\\\b[^\\\\s]*\\\\.scss\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-style-block-scss\"\n                },\n                {\n                  \"include\": \"#concise-style-line-scss\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Concise style tag js/ts\",\n              \"begin\": \"^(\\\\s*)(?=style\\\\b[^\\\\s]*\\\\.[tj]s\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-script-block\"\n                },\n                {\n                  \"include\": \"#concise-script-line\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Concise style tag\",\n              \"begin\": \"^(\\\\s*)(?=style\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-style-block\"\n                },\n                {\n                  \"include\": \"#concise-style-line\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Concise script tag\",\n              \"begin\": \"^(\\\\s*)(?=script\\\\b)\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#concise-script-block\"\n                },\n                {\n                  \"include\": \"#concise-script-line\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Normal concise tag\",\n              \"begin\": \"^([ \\\\t]*)(?=[a-zA-Z0-9_$@.#])\",\n              \"while\": \"(?=^\\\\1\\\\s+(\\\\S|$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#concise-open-tag-content\"\n                },\n                {\n                  \"include\": \"#content-concise-mode\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"content-embedded-comment\": {\n      \"comment\": \"Match comment content, but allow Marko placeholders.\",\n      \"patterns\": [\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"name\": \"comment.block.marko\",\n          \"match\": \".\"\n        }\n      ]\n    },\n    \"content-embedded-script\": {\n      \"comment\": \"Match script content, but allow Marko placeholders.\",\n      \"name\": \"meta.embedded.ts\",\n      \"patterns\": [\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"include\": \"source.ts\"\n        }\n      ]\n    },\n    \"content-embedded-style\": {\n      \"comment\": \"Match css content, but allow Marko placeholders.\",\n      \"name\": \"meta.embedded.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    \"content-embedded-style-less\": {\n      \"comment\": \"Match less content, but allow Marko placeholders.\",\n      \"name\": \"meta.embedded.css.less\",\n      \"patterns\": [\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"include\": \"source.css.less\"\n        }\n      ]\n    },\n    \"content-embedded-style-scss\": {\n      \"comment\": \"Match scss content, but allow Marko placeholders.\",\n      \"name\": \"meta.embedded.css.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"include\": \"source.css.scss\"\n        }\n      ]\n    },\n    \"content-html-mode\": {\n      \"comment\": \"HTML mode content block.\",\n      \"patterns\": [\n        {\n          \"include\": \"#scriptlet\"\n        },\n        {\n          \"include\": \"#cdata\"\n        },\n        {\n          \"include\": \"#doctype\"\n        },\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#html-comment\"\n        },\n        {\n          \"include\": \"#invalid-close-tag\"\n        },\n        {\n          \"include\": \"#tag-html\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"text.marko\"\n        },\n        {\n          \"include\": \"#placeholder\"\n        },\n        {\n          \"match\": \".+?\",\n          \"name\": \"text.marko\"\n        }\n      ]\n    },\n    \"html-args-or-method\": {\n      \"comment\": \"Matches parenthesis for arguments or continues into method shorthand if a { is found.\",\n      \"patterns\": [\n        {\n          \"comment\": \"Javascript style arguments\",\n          \"name\": \"meta.embedded.ts\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"\\\\s*(?=\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Attribute method shorthand following parens\",\n          \"name\": \"meta.embedded.ts\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"(?<=\\\\))\\\\s*(?={)\",\n          \"end\": \"(?<=})\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"html-comment\": {\n      \"comment\": \"HTML comment\",\n      \"name\": \"comment.block.marko\",\n      \"begin\": \"\\\\s*(<!(--)?)\",\n      \"end\": \"\\\\2>\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.marko\"\n        }\n      }\n    },\n    \"cdata\": {\n      \"name\": \"meta.tag.metadata.cdata.marko\",\n      \"contentName\": \"string.other.inline-data.marko\",\n      \"begin\": \"\\\\s*<!\\\\[CDATA\\\\[\",\n      \"end\": \"]]>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.marko\"\n        }\n      }\n    },\n    \"doctype\": {\n      \"name\": \"meta.tag.metadata.doctype.marko\",\n      \"begin\": \"\\\\s*<!(?=(?i:DOCTYPE\\\\s))\",\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(?i:DOCTYPE)\",\n          \"name\": \"entity.name.tag.marko\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.marko\"\n        },\n        {\n          \"match\": \"[^\\\\s>]+\",\n          \"name\": \"entity.other.attribute-name.marko\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.marko\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.marko\"\n        }\n      }\n    },\n    \"declaration\": {\n      \"name\": \"meta.tag.metadata.processing.xml.marko\",\n      \"begin\": \"(<\\\\?)\\\\s*([a-zA-Z0-9_$-]*)\",\n      \"end\": \"(\\\\??>)\",\n      \"patterns\": [\n        {\n          \"match\": \"((?:[^\\\\s=?>]+|\\\\?(?!>))+)(=)(?:(\\\"(?:[^\\\"\\\\\\\\]+|\\\\\\\\.)*\\\")|('(?:[^'\\\\\\\\]+|\\\\\\\\.)*')|((?:[^\\\\s?>]+|\\\\?(?!>))+))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.marko\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.html\"\n            },\n            \"3\": {\n              \"name\": \"string.quoted.double.marko\"\n            },\n            \"4\": {\n              \"name\": \"string.quoted.single.marko\"\n            },\n            \"5\": {\n              \"name\": \"string.unquoted.marko\"\n            }\n          }\n        }\n      ],\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.marko\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.marko\"\n        }\n      }\n    },\n    \"invalid\": {\n      \"comment\": \"Used to highlight characters in places where all valid characters should have been matched.\",\n      \"match\": \"\\\\S\",\n      \"name\": \"invalid.illegal.character-not-allowed-here.marko\"\n    },\n    \"javascript-comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"JavaScript /* block comment */\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"\\\\s*(?=/\\\\*)\",\n          \"end\": \"(?<=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"JavaScript // single line comment\",\n          \"contentName\": \"source.ts\",\n          \"match\": \"\\\\s*//.*$\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"javascript-expression\": {\n      \"comment\": \"Matches JavaScript source code, but always continues for certain types of expressions.\",\n      \"patterns\": [\n        {\n          \"comment\": \"We must match the some expressions ourselves since otherwise the js grammar can overstep.\",\n          \"match\": \"(?:\\\\s*\\\\b(?:as|await|extends|in|instanceof|keyof|new|typeof|void))+\\\\s+(?![:=/,;>])[a-zA-Z0-9_$@#]*\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"comment\": \"We must match regexps since otherwise it can be cutoff by self closed tags or comments.\",\n          \"contentName\": \"source.ts\",\n          \"applyEndPatternLast\": 1,\n          \"match\": \"(?<![a-zA-Z0-9%).<\\\\]}]\\\\s*)/(?:[^\\\\\\\\\\\\[/]+|\\\\\\\\.|\\\\[(?:[^\\\\\\\\\\\\]]+|\\\\\\\\.)*\\\\])*/[a-zA-Z]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"string.regexp.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts#regexp\"\n                },\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"source.ts\"\n        }\n      ]\n    },\n    \"open-tag-content\": {\n      \"comment\": \"Matches everything within an open tag from tag name to the last attr.\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-before-attrs\"\n        },\n        {\n          \"comment\": \"Attributes begin after the first space within the tag name\",\n          \"begin\": \"(?!/?>)\",\n          \"end\": \"(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#attrs\"\n            }\n          ]\n        }\n      ]\n    },\n    \"placeholder\": {\n      \"comment\": \"A Marko template literal expression (allows $!{}).\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"\\\\$!?{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.ts\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.ts\"\n        }\n      }\n    },\n    \"javascript-placeholder\": {\n      \"comment\": \"A JavaScript style template literal expression.\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"\\\\${\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.ts\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.ts\"\n        }\n      }\n    },\n    \"scriptlet\": {\n      \"comment\": \"An inline JavaScript scriptlet.\",\n      \"name\": \"meta.embedded.ts\",\n      \"contentName\": \"source.ts\",\n      \"begin\": \"^\\\\s*(\\\\$)\\\\s+\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ],\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.scriptlet.marko\"\n        }\n      }\n    },\n    \"tag-before-attrs\": {\n      \"comment\": \"Everything in a tag before the attributes content\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-name\"\n        },\n        {\n          \"include\": \"#tag-shorthand-class-or-id\"\n        },\n        {\n          \"comment\": \"Variable for a tag\",\n          \"name\": \"meta.embedded.ts\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"/(?![/*])\",\n          \"end\": \"(?=[;(|/>]|:?=|\\\\s+[^:]|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.tag-variable.marko\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"comment\": \"Match identifiers\",\n              \"match\": \"[a-zA-Z$_][0-9a-zA-Z$_]*\",\n              \"name\": \"variable.other.constant.object.ts\"\n            },\n            {\n              \"include\": \"source.ts#destructuring-variable\"\n            },\n            {\n              \"comment\": \"Match type\",\n              \"begin\": \"\\\\s*(:)(?!=)\",\n              \"end\": \"(?=[,;\\\\](]|/>|(?<=[^>=])>[^>=]|(?<!(?:^|[!~*%&^|?:]|[!~*%&^|?/<>+=-]=|=>|>{2,}|[^.]\\\\.|[^-]-|^\\\\s*\\\\+\\\\+|[^+]\\\\+{2}*\\\\+|[a-zA-Z0-9%).<\\\\]}]\\\\s*/|\\\\b(?<![.]\\\\s*)(?:await|async|class|function|keyof|new|typeof|void))\\\\s*)(?:\\\\n|[ \\\\t]+(?![\\\\n{+!~*%&^|?:]|[<>/=-]=|=>|>{2,}|\\\\.[^.]|-[^-]|/[^>]|(?:in|instanceof|as|extends)\\\\s+[^:=/,;>])))\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts#type\"\n                },\n                {\n                  \"include\": \"#javascript-expression\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.type.annotation.ts\"\n                }\n              }\n            },\n            {\n              \"include\": \"#javascript-expression\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Parameters for a tag\",\n          \"contentName\": \"source.ts\",\n          \"begin\": \"\\\\|\",\n          \"end\": \"\\\\|\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.scope.end.marko\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.ts#function-parameters-body\"\n            },\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#html-args-or-method\"\n        },\n        {\n          \"include\": \"#attr-value\"\n        }\n      ]\n    },\n    \"tag-html\": {\n      \"comment\": \"Matches an HTML tag and its contents\",\n      \"patterns\": [\n        {\n          \"comment\": \"HTML void elements\",\n          \"begin\": \"\\\\s*(<)(?=(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\\\\b)\",\n          \"end\": \"/?>\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Marko html-comment tag\",\n          \"begin\": \"\\\\s*(<)(?=html-comment\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Style comment content\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(html-comment)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-comment\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"HTML style tag with less\",\n          \"begin\": \"\\\\s*(<)(?=style\\\\b[^\\\\s]*\\\\.less\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Style body content\",\n              \"contentName\": \"source.less\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(style)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-style-less\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"HTML style tag with scss\",\n          \"begin\": \"\\\\s*(<)(?=style\\\\b[^\\\\s]*\\\\.scss\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Style body content\",\n              \"contentName\": \"source.less\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(style)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-style-scss\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"HTML style tag with js/ts\",\n          \"begin\": \"\\\\s*(<)(?=style\\\\b[^\\\\s]*\\\\.[tj]s\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Style body content\",\n              \"contentName\": \"source.ts\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(style)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-script\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"HTML style tag\",\n          \"begin\": \"\\\\s*(<)(?=style\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Style body content\",\n              \"contentName\": \"source.css\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(style)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-style\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"HTML script tag\",\n          \"begin\": \"\\\\s*(<)(?=script\\\\b)\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Script body content\",\n              \"contentName\": \"source.ts\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)(script)?(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-embedded-script\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        },\n        {\n          \"comment\": \"HTML normal tag\",\n          \"begin\": \"\\\\s*(<)(?=[a-zA-Z0-9_$@.#])\",\n          \"end\": \"/>|(?<=\\\\>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#open-tag-content\"\n            },\n            {\n              \"comment\": \"Body content\",\n              \"begin\": \">\",\n              \"end\": \"\\\\s*(</)([a-zA-Z0-9_$:@.#-]+)?(.*?)(>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#content-html-mode\"\n                }\n              ],\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag.begin.marko\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#tag-name\"\n                    },\n                    {\n                      \"include\": \"#tag-shorthand-class-or-id\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#invalid\"\n                    }\n                  ]\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.tag.end.marko\"\n                }\n              }\n            }\n          ],\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.marko\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.marko\"\n            }\n          }\n        }\n      ]\n    },\n    \"tag-shorthand-class-or-id\": {\n      \"comment\": \"Shorthand class or ID attribute\",\n      \"begin\": \"(?=[#.])\",\n      \"end\": \"$|(?=--|[^a-zA-Z0-9_$#.-])\",\n      \"patterns\": [\n        {\n          \"include\": \"#javascript-placeholder\"\n        },\n        {\n          \"match\": \"(?:[#.a-zA-Z0-9_-]+|\\\\$(?!{))+\",\n          \"name\": \"entity.other.attribute-name.marko\"\n        }\n      ]\n    },\n    \"tag-name\": {\n      \"comment\": \"Matches the tag name.\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\G(style)\\\\b(\\\\.[a-zA-Z0-9$_-]+(?:\\\\.[a-zA-Z0-9$_-]+)*)|([a-zA-Z0-9_@](?:[a-zA-Z0-9_@-]+|:(?!=))*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.builtin.marko\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.marko.css\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"name\": \"support.type.builtin.marko\",\n                  \"match\": \"(attrs|style|effect|lifecycle)(?=\\\\b)\"\n                },\n                {\n                  \"name\": \"keyword.control.flow.marko\",\n                  \"match\": \"(for|if|while|else-if|else|try|await|return)(?=\\\\b)\"\n                },\n                {\n                  \"name\": \"support.function.marko\",\n                  \"match\": \"(macro|tag|async|let|const|set|get|id|html-comment)(?=\\\\b)(?![-:@])\"\n                },\n                {\n                  \"comment\": \"Attribute tag.\",\n                  \"name\": \"entity.other.attribute-name.marko\",\n                  \"match\": \"@.+\"\n                },\n                {\n                  \"comment\": \"Native or userland tag.\",\n                  \"name\": \"entity.name.tag.marko\",\n                  \"match\": \".+\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?=[a-zA-Z0-9$_]|-[^-])\",\n          \"end\": \"(?=[^a-zA-Z0-9$_-]|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#javascript-placeholder\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z0-9_-]+|\\\\$(?!{))+\",\n              \"name\": \"entity.name.tag.marko\"\n            }\n          ]\n        }\n      ]\n    },\n    \"invalid-close-tag\": {\n      \"name\": \"invalid.illegal.character-not-allowed-here.marko\",\n      \"begin\": \"\\\\s*</.*?\",\n      \"end\": \">\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/matlab.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"m\"],\n  \"keyEquivalent\": \"^~M\",\n  \"name\": \"matlab\",\n  \"patterns\": [\n    {\n      \"comment\": \"This and #all_after_command_dual are split out so #command_dual can be excluded in things like (), {}, []\",\n      \"include\": \"#all_before_command_dual\"\n    },\n    {\n      \"include\": \"#command_dual\"\n    },\n    {\n      \"include\": \"#all_after_command_dual\"\n    }\n  ],\n  \"repository\": {\n    \"all_before_command_dual\": {\n      \"patterns\": [\n        {\n          \"include\": \"#classdef\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#blocks\"\n        },\n        {\n          \"include\": \"#control_statements\"\n        },\n        {\n          \"include\": \"#global_persistent\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#square_brackets\"\n        },\n        {\n          \"include\": \"#indexing_curly_brackets\"\n        },\n        {\n          \"include\": \"#curly_brackets\"\n        }\n      ]\n    },\n    \"all_after_command_dual\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#conjugate_transpose\"\n        },\n        {\n          \"include\": \"#transpose\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#operators\"\n        }\n      ]\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(for)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.for.matlab\"\n            }\n          },\n          \"name\": \"meta.for.matlab\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(if)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.if.matlab\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"name\": \"meta.if.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.elseif.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(elseif)\\\\b(.*)$\\\\n?\",\n              \"name\": \"meta.elseif.matlab\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.else.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(else)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.else.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(parfor)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.for.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.for.matlab\"\n            }\n          },\n          \"name\": \"meta.parfor.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!$)\",\n              \"end\": \"$\\\\n?\",\n              \"name\": \"meta.parfor-quantity.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(spmd)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.spmd.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.spmd.matlab\"\n            }\n          },\n          \"name\": \"meta.spmd.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!$)\",\n              \"end\": \"$\\\\n?\",\n              \"name\": \"meta.spmd-statement.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(switch)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.switch.matlab\"\n            }\n          },\n          \"name\": \"meta.switch.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.case.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(case)\\\\b(.*)$\\\\n?\",\n              \"name\": \"meta.case.matlab\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.otherwise.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(otherwise)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.otherwise.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(try)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.try.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.try.matlab\"\n            }\n          },\n          \"name\": \"meta.try.matlab\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.catch.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"^\",\n              \"match\": \"(\\\\s*)(?:^|[\\\\s,;])(catch)\\\\b(.*)?$\\\\n?\",\n              \"name\": \"meta.catch.matlab\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*(?:^|[\\\\s,;])(while)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.while.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.while.matlab\"\n            }\n          },\n          \"name\": \"meta.while.matlab\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"classdef\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t(classdef)\\n\\t\\t\\t\\t\\t\\t\\t\\\\b\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(.*)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"storage.type.class.matlab\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\t\\t\\t# Class name\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t\\t# Optional inheritance\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(<)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=(%|...)).*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                          \"name\": \"variable.parameter.class.matlab\"\n                        },\n                        {\n                          \"begin\": \"=\\\\s*\",\n                          \"end\": \",|(?=\\\\))\",\n                          \"patterns\": [\n                            {\n                              \"match\": \"true|false\",\n                              \"name\": \"constant.language.boolean.matlab\"\n                            },\n                            {\n                              \"include\": \"#string\"\n                            }\n                          ]\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"meta.class-declaration.matlab\"\n                    },\n                    \"3\": {\n                      \"name\": \"entity.name.section.class.matlab\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.operator.other.matlab\"\n                    },\n                    \"5\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"[a-zA-Z][a-zA-Z0-9_]*(\\\\.[a-zA-Z][a-zA-Z0-9_]*)*\",\n                          \"name\": \"entity.other.inherited-class.matlab\"\n                        },\n                        {\n                          \"match\": \"&\",\n                          \"name\": \"keyword.operator.other.matlab\"\n                        }\n                      ]\n                    },\n                    \"6\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"$self\"\n                        }\n                      ]\n                    }\n                  }\n                }\n              ]\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.class.matlab\"\n            }\n          },\n          \"name\": \"meta.class.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(properties)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.properties.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.properties.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.properties.matlab\"\n                }\n              },\n              \"name\": \"meta.properties.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#validators\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(methods)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.methods.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.methods.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.methods.matlab\"\n                }\n              },\n              \"name\": \"meta.methods.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(events)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.events.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.events.matlab\"\n                    },\n                    {\n                      \"begin\": \"=\\\\s*\",\n                      \"end\": \",|(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"match\": \"true|false\",\n                          \"name\": \"constant.language.boolean.matlab\"\n                        },\n                        {\n                          \"match\": \"public|protected|private\",\n                          \"name\": \"constant.language.access.matlab\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.events.matlab\"\n                }\n              },\n              \"name\": \"meta.events.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(enumeration)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.enumeration.matlab\"\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.enumeration.matlab\"\n                }\n              },\n              \"name\": \"meta.enumeration.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"command_dual\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.matlab\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.command.matlab\"\n        },\n        \"28\": {\n          \"name\": \"comment.line.percentage.matlab\"\n        }\n      },\n      \"comment\": \"  1        2                                  3                                                    4                                                  5                                                    6                                                         7                                                                             8                 9                            10                   11                      12                         13                   14                                                               1516       17                                                             18                                                                                                                               19                      20                                     21                                    22                                      23                                         24                                         25                                                                         26            27                 28\",\n      \"match\": \"^\\\\s*((?# A> )([b-df-hk-moq-zA-HJ-MO-Z]\\\\w*|a|an|a([A-Za-mo-z0-9_]\\\\w*|n[A-Za-rt-z0-9_]\\\\w*|ns\\\\w+)|e|ep|e([A-Za-oq-z0-9_]\\\\w*|p[A-Za-rt-z0-9_]\\\\w*|ps\\\\w+)|in|i([A-Za-mo-z0-9_]\\\\w*|n[A-Za-eg-z0-9_]\\\\w*|nf\\\\w+)|I|In|I([A-Za-mo-z0-9_]\\\\w*|n[A-Za-eg-z0-9_]\\\\w*|nf\\\\w+)|j\\\\w+|N|Na|N([A-Zb-z0-9_]\\\\w*|a[A-MO-Za-z0-9_]\\\\w*|aN\\\\w+)|n|na|nar|narg|nargi|nargo|nargou|n([A-Zb-z0-9_]\\\\w*|a([A-Za-mo-qs-z0-9_]\\\\w*|n\\\\w+|r([A-Za-fh-z0-9_]\\\\w*|g([A-Za-hj-nq-z0-9_]\\\\w*|i([A-Za-mo-z0-9_]\\\\w*|n\\\\w+)|o([A-Za-tv-z0-9_]\\\\w*|u([A-Za-su-z]\\\\w*|t\\\\w+))))))|p|p[A-Za-hj-z0-9_]\\\\w*|pi\\\\w+)(?# <A )\\\\s+(((?# B> )([^\\\\s;,%()=.{&|~<>:+\\\\-*/\\\\\\\\@^'\\\"]|(?=')|(?=\\\"))(?# <B )|(?# C> )(\\\\.\\\\^|\\\\.\\\\*|\\\\./|\\\\.\\\\\\\\|\\\\.'|\\\\.\\\\(|&&|==|\\\\|\\\\||&(?=[^&])|\\\\|(?=[^\\\\|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|:|\\\\+|-|\\\\*|/|\\\\\\\\|@|\\\\^)(?# <C )(?# D> )([^\\\\s]|\\\\s*(?=%)|\\\\s+$|\\\\s+(,|;|\\\\)|}|\\\\]|&|\\\\||<|>|=|:|\\\\*|/|\\\\\\\\|\\\\^|@|(\\\\.[^\\\\d.]|\\\\.\\\\.[^.])))(?# <D )|(?# E> )(\\\\.[^^*/\\\\\\\\'(\\\\sA-Za-z])(?# <E ))(?# F> )([^%]|'[^']*'|\\\"[^\\\"]*\\\")*(?# <F )|(?# X> )(\\\\.(?=\\\\s)|\\\\.[A-Za-z]|(?={))(?# <X )(?# Y> )([^(=\\\\'\\\"%]|==|'[^']*'|\\\"[^\\\"]*\\\"|\\\\(|\\\\([^)%]*\\\\)|\\\\[|\\\\[[^\\\\]%]*\\\\]|{|{[^}%]*})*(\\\\.\\\\.\\\\.[^%]*)?((?=%)|$)(?# <Y )))(%.*)?$\"\n    },\n    \"comment_block\": {\n      \"begin\": \"(^[\\\\s]*)%\\\\{[^\\\\n\\\\S]*+\\\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.matlab\"\n        }\n      },\n      \"end\": \"^[\\\\s]*%\\\\}[^\\\\n\\\\S]*+(?:\\\\n|$)\",\n      \"name\": \"comment.block.percentage.matlab\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"match\": \"^[^\\\\n]*\\\\n\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=%%\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.matlab\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"%%\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.matlab\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-percentage.matlab\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G[^\\\\S\\\\n]*(?![\\\\n\\\\s])\",\n                  \"contentName\": \"meta.cell.matlab\",\n                  \"end\": \"(?=\\\\n)\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.matlab\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"%\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.matlab\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.percentage.matlab\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control_statements\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.matlab\"\n        }\n      },\n      \"match\": \"\\\\s*(?:^|[\\\\s,;])(break|continue|return)\\\\b\",\n      \"name\": \"meta.control.matlab\"\n    },\n    \"function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t(function)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t(?:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\\\[) ([^\\\\]]*) (\\\\])\\n\\t\\t\\t\\t\\t\\t\\t\\t  | ([a-zA-Z][a-zA-Z0-9_]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s* = \\\\s*\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*(\\\\.[a-zA-Z][a-zA-Z0-9_]*)*)\\t# Function name\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Trailing space\\n\\t\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"storage.type.function.matlab\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.matlab\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.parameter.output.matlab\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.arguments.end.matlab\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.output.function.matlab\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.function.matlab\"\n            }\n          },\n          \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b(\\\\s*\\\\n)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.end.function.matlab\"\n            }\n          },\n          \"name\": \"meta.function.matlab\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\(\",\n              \"end\": \"\\\\)\",\n              \"name\": \"meta.arguments.function.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation\"\n                },\n                {\n                  \"match\": \"\\\\w+\",\n                  \"name\": \"variable.parameter.input.matlab\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(^\\\\s*)\\t\\t\\t\\t\\t\\t\\t\\t# Leading whitespace\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(arguments)\\\\b([^%]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional attributes\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\( [^)]* \\\\)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*($|(?=%))\\n\\t\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"2\": {\n                  \"name\": \"keyword.control.arguments.matlab\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n                      \"name\": \"variable.parameter.arguments.matlab\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"\\\\s*(?:^|[\\\\s,;])(end)\\\\b\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.end.arguments.matlab\"\n                }\n              },\n              \"name\": \"meta.arguments.matlab\",\n              \"patterns\": [\n                {\n                  \"include\": \"#validators\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"global_persistent\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.globalpersistent.matlab\"\n        }\n      },\n      \"match\": \"^\\\\s*(global|persistent)\\\\b\",\n      \"name\": \"meta.globalpersistent.matlab\"\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?<!\\\\.\\\\.\\\\.).\\\\n)\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"square_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"curly_brackets\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"indexing_curly_brackets\": {\n      \"Comment\": \"Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx \",\n      \"begin\": \"([a-zA-Z][a-zA-Z0-9_\\\\.]*\\\\s*)\\\\{\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(\\\\}|(?<!\\\\.\\\\.\\\\.).\\\\n)\",\n      \"comment\": \"We don't include $self here to avoid matching command syntax inside (), [], {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"include\": \"#all_before_command_dual\"\n        },\n        {\n          \"include\": \"#all_after_command_dual\"\n        },\n        {\n          \"include\": \"#end_in_parens\"\n        },\n        {\n          \"comment\": \"These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written\",\n          \"include\": \"#block_keywords\"\n        }\n      ]\n    },\n    \"line_continuation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.symbols.matlab\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.continuation.matlab\"\n        }\n      },\n      \"comment\": \"Line continuations\",\n      \"match\": \"(\\\\.\\\\.\\\\.)(.*)$\",\n      \"name\": \"meta.linecontinuation.matlab\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"string.interpolated.matlab\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"Shell command\",\n          \"match\": \"^\\\\s*((!).*$\\\\n?)\"\n        },\n        {\n          \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"Character vector literal (single-quoted)\",\n          \"end\": \"'(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\s|;|:|,))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.matlab\"\n            }\n          },\n          \"name\": \"string.quoted.single.matlab\",\n          \"patterns\": [\n            {\n              \"match\": \"''\",\n              \"name\": \"constant.character.escape.matlab\"\n            },\n            {\n              \"match\": \"'(?=.)\",\n              \"name\": \"invalid.illegal.unescaped-quote.matlab\"\n            },\n            {\n              \"comment\": \"Operator symbols\",\n              \"match\": \"((\\\\%([\\\\+\\\\-0]?\\\\d{0,3}(\\\\.\\\\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\\\\%\\\\%|\\\\\\\\(b|f|n|r|t|\\\\\\\\))\",\n              \"name\": \"constant.character.escape.matlab\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.matlab\"\n            }\n          },\n          \"comment\": \"String literal (double-quoted)\",\n          \"end\": \"\\\"(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\||\\\\s|;|:|,))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.matlab\"\n            }\n          },\n          \"name\": \"string.quoted.double.matlab\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\\\"\",\n              \"name\": \"constant.character.escape.matlab\"\n            },\n            {\n              \"match\": \"\\\"(?=.)\",\n              \"name\": \"invalid.illegal.unescaped-quote.matlab\"\n            }\n          ]\n        }\n      ]\n    },\n    \"conjugate_transpose\": {\n      \"match\": \"((?<=[^\\\\s])|(?<=\\\\])|(?<=\\\\))|(?<=\\\\}))'\",\n      \"name\": \"keyword.operator.transpose.matlab\"\n    },\n    \"transpose\": {\n      \"match\": \"\\\\.'\",\n      \"name\": \"keyword.operator.transpose.matlab\"\n    },\n    \"constants\": {\n      \"comment\": \"MATLAB Constants\",\n      \"match\": \"(?<!\\\\.)\\\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\\\b\",\n      \"name\": \"constant.language.matlab\"\n    },\n    \"variables\": {\n      \"comment\": \"MATLAB variables\",\n      \"match\": \"(?<!\\\\.)\\\\b(nargin|nargout|varargin|varargout)\\\\b\",\n      \"name\": \"variable.other.function.matlab\"\n    },\n    \"end_in_parens\": {\n      \"comment\": \"end as operator symbol\",\n      \"match\": \"\\\\bend\\\\b\",\n      \"name\": \"keyword.operator.symbols.matlab\"\n    },\n    \"numbers\": {\n      \"comment\": \"Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j\",\n      \"match\": \"(?<=[\\\\s\\\\-\\\\+\\\\*\\\\/\\\\\\\\=:\\\\[\\\\(\\\\{,]|^)\\\\d*\\\\.?\\\\d+([eE][+-]?\\\\d)?([0-9&&[^\\\\.]])*(i|j)?\\\\b\",\n      \"name\": \"constant.numeric.matlab\"\n    },\n    \"operators\": {\n      \"comment\": \"Operator symbols\",\n      \"match\": \"(?<=\\\\s)(==|~=|>|>=|<|<=|&|&&|:|\\\\||\\\\|\\\\||\\\\+|-|\\\\*|\\\\.\\\\*|/|\\\\./|\\\\\\\\|\\\\.\\\\\\\\|\\\\^|\\\\.\\\\^)(?=\\\\s)\",\n      \"name\": \"keyword.operator.symbols.matlab\"\n    },\n    \"validators\": {\n      \"comment\": \"Property and argument validation. Match an identifier allowing . and ?.\",\n      \"begin\": \"\\\\s*[;]?\\\\s*([a-zA-Z][a-zA-Z0-9_\\\\.\\\\?]*)\",\n      \"end\": \"([;\\\\n%=].*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Match comments\",\n              \"match\": \"([%].*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"comment\": \"Handle things like arg = val; nextArg\",\n              \"match\": \"(=[^;]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"comment\": \"End of property/argument patterns which start a new property/argument. Look for beginning of identifier after semicolon. Otherwise treat as regular code.\",\n              \"match\": \"([\\\\n;]\\\\s*[a-zA-Z].*)\",\n              \"captures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#validators\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"comment\": \"Size declaration\",\n          \"match\": \"\\\\s*(\\\\([^\\\\)]*\\\\))\",\n          \"name\": \"storage.type.matlab\"\n        },\n        {\n          \"comment\": \"Type declaration\",\n          \"match\": \"([a-zA-Z][a-zA-Z0-9_\\\\.]*)\",\n          \"name\": \"storage.type.matlab\"\n        },\n        {\n          \"include\": \"#braced_validator_list\"\n        }\n      ]\n    },\n    \"braced_validator_list\": {\n      \"comment\": \"Validator functions. Treated as a recursive group to permit nested brackets, quotes, etc.\",\n      \"begin\": \"\\\\s*({)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.matlab\"\n        }\n      },\n      \"end\": \"(})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.matlab\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#braced_validator_list\"\n        },\n        {\n          \"include\": \"#validator_strings\"\n        },\n        {\n          \"include\": \"#line_continuation\"\n        },\n        {\n          \"match\": \"([^{}}'\\\"\\\\.]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.matlab\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"storage.type.matlab\"\n        }\n      ]\n    },\n    \"validator_strings\": {\n      \"comment\": \"Simplified string patterns nested inside validator functions which don't change scopes of matches.\",\n      \"patterns\": [\n        {\n          \"patterns\": [\n            {\n              \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)'\",\n              \"comment\": \"Character vector literal (single-quoted)\",\n              \"end\": \"'(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\s|;|:|,))\",\n              \"name\": \"storage.type.matlab\",\n              \"patterns\": [\n                {\n                  \"match\": \"''\"\n                },\n                {\n                  \"match\": \"'(?=.)\"\n                },\n                {\n                  \"match\": \"([^']+)\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"((?<=(\\\\[|\\\\(|\\\\{|=|\\\\s|;|:|,|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^))|^)\\\"\",\n              \"comment\": \"String literal (double-quoted)\",\n              \"end\": \"\\\"(?=(\\\\[|\\\\(|\\\\{|\\\\]|\\\\)|\\\\}|=|~|<|>|&|\\\\||-|\\\\+|\\\\*|/|\\\\\\\\|\\\\.|\\\\^|\\\\||\\\\s|;|:|,))\",\n              \"name\": \"storage.type.matlab\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\"\\\"\"\n                },\n                {\n                  \"match\": \"\\\"(?=.)\"\n                },\n                {\n                  \"match\": \"[^\\\"]+\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.matlab\",\n  \"uuid\": \"48F8858B-72FF-11D9-BFEE-000D93589AF6\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/mdx.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"mdx\",\n  \"patterns\": [\n    {\n      \"include\": \"#jsx\"\n    },\n    {\n      \"include\": \"#markdown\"\n    }\n  ],\n  \"repository\": {\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-module\"\n        },\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ],\n      \"repository\": {\n        \"jsx-module\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^(?=(import|export)\\\\b)\",\n              \"while\": \"^(?!\\\\s*$)\",\n              \"contentName\": \"source.js.jsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js.jsx\"\n                }\n              ]\n            }\n          ]\n        },\n        \"jsx-tag\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^(?=<([a-z]|[A-Z]))\",\n              \"end\": \"(?<=>)\",\n              \"contentName\": \"source.js.jsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js.jsx\"\n                }\n              ]\n            }\n          ]\n        }\n      }\n    },\n    \"markdown\": {\n      \"contentName\": \"text.html.markdown\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.markdown\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.html.markdown.jsx\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/mermaid.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"mermaid\"],\n  \"patterns\": [\n    {\n      \"include\": \"#mermaid\"\n    }\n  ],\n  \"repository\": {\n    \"mermaid\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Class Diagram\",\n          \"begin\": \"^\\\\s*(classDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(class name) (\\\"multiplicity relationship\\\")? (relationship) (\\\"multiplicity relationship\\\")? (class name) :? (labelText)?\",\n              \"match\": \"([\\\\w-]+)\\\\s(\\\"(?:\\\\d+|\\\\*|0..\\\\d+|1..\\\\d+|1..\\\\*)\\\")?\\\\s?(--o|--\\\\*|\\\\<--|--\\\\>|<\\\\.\\\\.|\\\\.\\\\.\\\\>|\\\\<\\\\|\\\\.\\\\.|\\\\.\\\\.\\\\|\\\\>|\\\\<\\\\|--|--\\\\|>|--\\\\*|--|\\\\.\\\\.|\\\\*--|o--)\\\\s(\\\"(?:\\\\d+|\\\\*|0..\\\\d+|1..\\\\d+|1..\\\\*)\\\")?\\\\s?([\\\\w-]+)\\\\s?(:)?\\\\s(.*)$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$\",\n              \"match\": \"([\\\\w-]+)\\\\s?(:)\\\\s([\\\\+~#-])?([\\\\w-]+)(\\\\()([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?\\\\s?([\\\\w-]+)?(\\\\))([*\\\\$])?\\\\s?([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.parenthesis.open.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"8\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"9\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"10\": {\n                  \"name\": \"entity.name.variable.parameter.mermaid\"\n                },\n                \"11\": {\n                  \"name\": \"punctuation.parenthesis.closed.mermaid\"\n                },\n                \"12\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"13\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"14\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"15\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"16\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(class name) : (visibility)?(datatype/generic data type) (attribute name)$\",\n              \"match\": \"([\\\\w-]+)\\\\s?(:)\\\\s([\\\\+~#-])?([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s([\\\\w-]+)?$\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"8\": {\n                  \"name\": \"entity.name.variable.field.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"<<(Annotation)>> (class name)\",\n              \"match\": \"(<<)([\\\\w-]+)(>>)\\\\s?([\\\\w-]+)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"class (class name) ~?(generic type)?~? ({)\",\n              \"begin\": \"(class)\\\\s+([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s?({)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                },\n                {\n                  \"comment\": \"(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$\",\n                  \"begin\": \"\\\\s([\\\\+~#-])?([\\\\w-]+)(\\\\()\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.name.function.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.parenthesis.open.mermaid\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"comment\": \"(TBD)\",\n                      \"match\": \"\\\\s*,?\\\\s*([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?\\\\s?([\\\\w-]+)?\",\n                      \"captures\": {\n                        \"1\": {\n                          \"name\": \"storage.type.mermaid\"\n                        },\n                        \"2\": {\n                          \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                        },\n                        \"3\": {\n                          \"name\": \"storage.type.mermaid\"\n                        },\n                        \"4\": {\n                          \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                        },\n                        \"5\": {\n                          \"name\": \"entity.name.variable.parameter.mermaid\"\n                        }\n                      }\n                    }\n                  ],\n                  \"end\": \"(\\\\))([*\\\\$])?\\\\s?([\\\\w-]+)?(~)?([\\\\w-]+)?(~)?$\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.parenthesis.closed.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(visibility)?(datatype/generic data type) (attribute name)$\",\n                  \"match\": \"\\\\s([\\\\+~#-])?([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\\\\s([\\\\w-]+)?$\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"entity.name.variable.field.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"<<(Annotation)>> (class name)\",\n                  \"match\": \"(<<)([\\\\w-]+)(>>)\\\\s?([\\\\w-]+)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"entity.name.type.class.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"(})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"class (class name) ~?(generic type)?~?\",\n              \"match\": \"(class)\\\\s+([\\\\w-]+)(~)?([\\\\w-]+)?(~)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.typeparameters.begin.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"storage.type.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.typeparameters.end.mermaid\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Entity Relationship Diagram\",\n          \"begin\": \"^\\\\s*(erDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(entity)\",\n              \"match\": \"^\\\\s*([\\\\w-]+)$\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(entity) {\",\n              \"begin\": \"\\\\s+([\\\\w-]+)\\\\s+({)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(type) (name) (PK|FK)? (\\\"comment\\\")?\",\n                  \"match\": \"\\\\s*([\\\\w-]+)\\\\s+([\\\\w-]+)\\\\s+(PK|FK)?\\\\s*(\\\"[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*\\\")?\\\\s*\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.type.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"variable\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"(})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(entity) (relationship) (entity) : (label)\",\n              \"match\": \"\\\\s*([\\\\w-]+)\\\\s+((?:\\\\|o|\\\\|\\\\||}o|}\\\\|)(?:..|--)(?:o\\\\||\\\\|\\\\||o{|\\\\|{))\\\\s+([\\\\w-]+)\\\\s+(:)\\\\s+((?:\\\"[\\\\w\\\\s]*\\\")|(?:[\\\\w-]+))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Gantt Diagram\",\n          \"begin\": \"^\\\\s*(gantt)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"(dateFormat)\\\\s+([\\\\w-]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              }\n            },\n            {\n              \"match\": \"(axisFormat)\\\\s+([\\\\w\\\\%/-]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              }\n            },\n            {\n              \"match\": \"(title)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"match\": \"(section)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\s(.*)(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"(crit|done|active|after)\",\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                }\n              ],\n              \"end\": \"$\"\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Git Graph\",\n          \"begin\": \"^\\\\s*(gitGraph)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"commit\",\n              \"begin\": \"\\\\s*(commit)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(id)(:) (\\\"id\\\")\",\n                  \"match\": \"\\\\s*(id)(:)\\\\s?(\\\"[^\\\"\\\\n]*\\\")\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(type)(:) (COMMIT_TYPE)\",\n                  \"match\": \"\\\\s*(type)(:)\\\\s?(NORMAL|REVERSE|HIGHLIGHT)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"entity.name.function.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(tag)(:) (\\\"tag\\\")\",\n                  \"match\": \"\\\\s*(tag)(:)\\\\s?(\\\"[\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*\\\")\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"(checkout) (branch-name)\",\n              \"match\": \"\\\\s*(checkout)\\\\s*([^\\\\s\\\"]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(branch) (branch-name) (order)?(:) (number)\",\n              \"match\": \"\\\\s*(branch)\\\\s*([^\\\\s\\\"]*)\\\\s*(?:(order)(:)\\\\s?(\\\\d+))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.decimal.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(merge) (branch-name) (tag: \\\"tag-name\\\")?\",\n              \"match\": \"\\\\s*(merge)\\\\s*([^\\\\s\\\"]*)\\\\s*(?:(tag)(:)\\\\s?(\\\"[^\\\"\\\\n]*\\\"))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(cherry-pick) (id)(:)(\\\"commit-id\\\")\",\n              \"match\": \"\\\\s*(cherry-pick)\\\\s+(id)(:)\\\\s*(\\\"[^\\\"\\\\n]*\\\")\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Graph\",\n          \"begin\": \"^\\\\s*(graph|flowchart)\\\\s+([A-Za-z\\\\ 0-9]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"\\\\b(subgraph)\\\\s+([A-Za-z\\\\ 0-9]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                }\n              },\n              \"name\": \"meta.function.mermaid\"\n            },\n            {\n              \"match\": \"\\\\b(end|RB|BT|RL|TD|LR)\\\\b\",\n              \"name\": \"keyword.control.mermaid\"\n            },\n            {\n              \"comment\": \"(Entity From)(Graph Link)\",\n              \"begin\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|<-->)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                },\n                {\n                  \"comment\": \"(Graph Link Text)?(Graph Link)(Entity To)?(Edge/Shape)?(Text)?(Edge/Shape)?\",\n                  \"match\": \"(\\\\s*(?:\\\"[^\\\"]+\\\")|(?:[\\\\($&%\\\\^/#.,?!;:*+<>_\\\\'\\\\\\\\\\\\w\\\\s]*))?\\\\s*(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|\\\\|)(\\\\s*[-\\\\w]+\\\\b)(\\\\[|\\\\(+|\\\\>|\\\\{)?(\\\\s*[-\\\\w]+\\\\b)?(\\\\]|\\\\)+|\\\\})?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"string\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"variable\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"5\": {\n                      \"name\": \"string\"\n                    },\n                    \"6\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(Entity To)(Edge/Shape)?(Text)?(Edge/Shape)?\",\n                  \"match\": \"(\\\\s*[-\\\\w]+\\\\b)(\\\\[|\\\\(+|\\\\>|\\\\{)?(\\\\s*[-\\\\w]+\\\\b)?(\\\\]|\\\\)+|\\\\})?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n              \"begin\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{|\\\\(\\\\()(\\\\s*(?:\\\"[^\\\"]+\\\")|(?:[$&%\\\\^/#.,?!;:*+<>_\\\\'\\\\\\\\\\\\w\\\\s]*))(\\\\]|\\\\)+|\\\\}|\\\\)\\\\))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n                  \"match\": \"(\\\\s*\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{)(\\\\s*[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)(\\\\]|\\\\)+|\\\\})\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    },\n                    \"4\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(Graph Link)(Graph Link Text)(Graph Link)(Entity)(Edge/Shape)(Text)(Edge/Shape)\",\n                  \"match\": \"(\\\\s*-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?)(\\\\s*[-\\\\w\\\\s]+\\\\b)?(-?-[-\\\\>]\\\\|?|=?=[=\\\\>]|(?:\\\\.-|-\\\\.)-?\\\\>?|\\\\|)?(\\\\s*\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\[|\\\\(+|\\\\>|\\\\{)(\\\\s*[\\\"\\\\($&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)?(\\\\]|\\\\)+|\\\\})\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"string\"\n                    },\n                    \"3\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"4\": {\n                      \"name\": \"variable\"\n                    },\n                    \"5\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"6\": {\n                      \"name\": \"string\"\n                    },\n                    \"7\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"match\": \"(\\\\b[-\\\\w]+\\\\b\\\\s*)\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(Class)(Node(s))(ClassName)\",\n              \"match\": \"\\\\s*(class)\\\\s+(\\\\b[-,\\\\w]+)\\\\s+(\\\\b\\\\w+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(ClassDef)(ClassName)(Styles)\",\n              \"match\": \"\\\\s*(classDef)\\\\s+(\\\\b\\\\w+\\\\b)\\\\s+(\\\\b[-,:;#\\\\w]+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Click)(Entity)(Link)?(Tooltip)\",\n              \"match\": \"\\\\s*(click)\\\\s+(\\\\b[-\\\\w]+\\\\b\\\\s*)(\\\\b\\\\w+\\\\b)?\\\\s(\\\"*.*\\\")\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Pie Chart\",\n          \"begin\": \"^\\\\s*(pie)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"match\": \"(title)\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!;:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"begin\": \"\\\\s(.*)(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"string\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\%%.*\",\n                  \"name\": \"comment\"\n                }\n              ],\n              \"end\": \"$\"\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"Sequence Diagram\",\n          \"begin\": \"^\\\\s*(sequenceDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\%%|#).*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"(title)(title text)\",\n              \"match\": \"(title)\\\\s*(:)?\\\\s+(\\\\s*[\\\"\\\\(\\\\)$&%\\\\^/#.,?!:*+=<>\\\\'\\\\\\\\\\\\-\\\\w\\\\s]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(participant)(Actor)(as)?(Label)?\",\n              \"match\": \"\\\\s*(participant|actor)\\\\s+((?:(?! as )[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s])+)\\\\s*(as)?\\\\s([\\\"\\\\(\\\\)$&%\\\\^/#.,?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(activate/deactivate)(Actor)\",\n              \"match\": \"\\\\s*((?:de)?activate)\\\\s+(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)\",\n              \"match\": \"\\\\s*(Note)\\\\s+((?:left|right)\\\\sof|over)\\\\s+(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)(,)?(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b\\\\s*)?(:)(?:\\\\s+([^;#]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"variable\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"7\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(loop)(loop text)\",\n              \"match\": \"\\\\s*(loop)(?:\\\\s+([^;#]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(end)\",\n              \"match\": \"\\\\s*(end)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(alt/else/opt/par/and/autonumber)(text)\",\n              \"match\": \"\\\\s*(alt|else|opt|par|and|rect|autonumber)(?:\\\\s+([^#;]*))?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(Actor)(Arrow)(Actor)(:)(Message)\",\n              \"match\": \"\\\\s*(\\\\b[\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b)\\\\s*(-?-(?:\\\\>|x|\\\\))\\\\>?[+-]?)\\\\s*([\\\"\\\\(\\\\)$&%\\\\^/#.?!*=<>\\\\'\\\\\\\\\\\\w\\\\s]+\\\\b)\\\\s*(:)\\\\s*([^;#]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        },\n        {\n          \"comment\": \"State Diagram\",\n          \"begin\": \"^\\\\s*(stateDiagram)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.mermaid\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\%%.*\",\n              \"name\": \"comment\"\n            },\n            {\n              \"comment\": \"}\",\n              \"match\": \"\\\\s+(})\\\\s+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"--\",\n              \"match\": \"\\\\s+(--)\\\\s+\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            },\n            {\n              \"comment\": \"(state)\",\n              \"match\": \"^\\\\s*([\\\\w-]+)$\",\n              \"name\": \"variable\"\n            },\n            {\n              \"comment\": \"(state) : (description)\",\n              \"match\": \"([\\\\w-]+)\\\\s+(:)\\\\s+(\\\\s*[-\\\\w\\\\s]+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"state\",\n              \"begin\": \"(state)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"\\\"(description)\\\" as (state)\",\n                  \"match\": \"\\\\s+(\\\"[-\\\\w\\\\s]+\\\\b\\\")\\\\s+(as)\\\\s+([\\\\w-]+)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"string\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"variable\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(state name) {\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s+({)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"(state name) <<fork|join>>\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s+(<<(?:fork|join)>>)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"(state) -->\",\n              \"begin\": \"([\\\\w-]+)\\\\s+(-->)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"(state) (:)? (transition text)?\",\n                  \"match\": \"\\\\s+([\\\\w-]+)\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"variable\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                },\n                {\n                  \"comment\": \"[*] (:)? (transition text)?\",\n                  \"match\": \"(\\\\[\\\\*\\\\])\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.control.mermaid\"\n                    },\n                    \"3\": {\n                      \"name\": \"string\"\n                    }\n                  }\n                }\n              ],\n              \"end\": \"$\"\n            },\n            {\n              \"comment\": \"[*] --> (state) (:)? (transition text)?\",\n              \"match\": \"(\\\\[\\\\*\\\\])\\\\s+(-->)\\\\s+([\\\\w-]+)\\\\s*(:)?\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"3\": {\n                  \"name\": \"variable\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"5\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"note left|right of (state name)\",\n              \"match\": \"(note (?:left|right) of)\\\\s+([\\\\w-]+)\\\\s+(:)\\\\s*(\\\\s*[-\\\\w\\\\s]+\\\\b)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"4\": {\n                  \"name\": \"string\"\n                }\n              }\n            },\n            {\n              \"comment\": \"note left|right of (state name) (note text) end note\",\n              \"begin\": \"(note (?:left|right) of)\\\\s+([\\\\w-]+)(.|\\\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                },\n                \"2\": {\n                  \"name\": \"variable\"\n                }\n              },\n              \"contentName\": \"string\",\n              \"end\": \"(end note)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.mermaid\"\n                }\n              }\n            }\n          ],\n          \"end\": \"(^|\\\\G)(?=\\\\s*[`~]{3,}\\\\s*$)\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.mermaid\",\n  \"name\": \"mermaid\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/nginx.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\n    \"conf.erb\",\n    \"conf\",\n    \"ngx\",\n    \"nginx.conf\",\n    \"mime.types\",\n    \"fastcgi_params\",\n    \"scgi_params\",\n    \"uwsgi_params\"\n  ],\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~N\",\n  \"name\": \"nginx\",\n  \"patterns\": [\n    {\n      \"name\": \"comment.line.number-sign\",\n      \"match\": \"\\\\#.*\"\n    },\n    {\n      \"name\": \"meta.context.lua.nginx\",\n      \"begin\": \"\\\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua(?:_block)?)\\\\s*\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"contentName\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.lua.nginx\",\n      \"begin\": \"\\\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua)\\\\s*'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"contentName\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"include\": \"source.lua\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.events.nginx\",\n      \"begin\": \"\\\\b(events) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.http.nginx\",\n      \"begin\": \"\\\\b(http) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.mail.nginx\",\n      \"begin\": \"\\\\b(mail) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.stream.nginx\",\n      \"begin\": \"\\\\b(stream) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.server.nginx\",\n      \"begin\": \"\\\\b(server) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.location.nginx\",\n      \"begin\": \"\\\\b(location) +([\\\\^]?~[\\\\*]?|=) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nginx\"\n        },\n        \"3\": {\n          \"name\": \"string.regexp.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.location.nginx\",\n      \"begin\": \"\\\\b(location) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.context.location.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.limit_except.nginx\",\n      \"begin\": \"\\\\b(limit_except) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.if.nginx\",\n      \"begin\": \"\\\\b(if) +\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#if_condition\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.upstream.nginx\",\n      \"begin\": \"\\\\b(upstream) +(.*?)\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.context.location.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.types.nginx\",\n      \"begin\": \"\\\\b(types) +\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.context.map.nginx\",\n      \"begin\": \"\\\\b(map) +(\\\\$)([A-Za-z0-9\\\\_]+) +(\\\\$)([A-Za-z0-9\\\\_]+) *\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.directive.context.nginx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.variable.nginx\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.nginx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.variable.nginx\"\n        },\n        \"5\": {\n          \"name\": \"variable.other.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        },\n        {\n          \"name\": \"punctuation.terminator.nginx\",\n          \"match\": \";\"\n        },\n        {\n          \"name\": \"comment.line.number-sign\",\n          \"match\": \"\\\\#.*\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.block.nginx\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(return)\\\\b\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(rewrite)\\\\s+\",\n      \"end\": \"(last|break|redirect|permanent)?(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.nginx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(server)\\\\s+\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#server_parameters\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(internal|empty_gif|f4f|flv|hls|mp4|break|status|stub_status|ip_hash|ntlm|least_conn|upstream_conf|least_conn|zone_sync)\\\\b\",\n      \"end\": \"(;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      }\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(accept_)(mutex|mutex_delay)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(debug_)(connection|points)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(error_)(log|page)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ssl_)(engine|buffer_size|certificate|certificate_key|ciphers|client_certificate|conf_command|crl|dhparam|early_data|ecdh_curve|ocsp|ocsp_cache|ocsp_responder|password_file|prefer_server_ciphers|protocols|reject_handshake|session_cache|session_ticket_key|session_tickets|session_timeout|stapling|stapling_file|stapling_responder|stapling_verify|trusted_certificate|verify_client|verify_depth|alpn|handshake_timeout|preread)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(worker_)(aio_requests|connections|cpu_affinity|priority|processes|rlimit_core|rlimit_nofile|shutdown_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(auth_)(delay|basic|basic_user_file|jwt|jwt_claim_set|jwt_header_set|jwt_key_file|jwt_key_request|jwt_leeway|jwt_type|jwt_require|request|request_set|http|http_header|http_pass_client_cert|http_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(client_)(body_buffer_size|body_in_file_only|body_in_single_buffer|body_temp_path|body_timeout|header_buffer_size|header_timeout|max_body_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(keepalive_)(disable|requests|time|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(limit_)(rate|rate_after|conn|conn_dry_run|conn_log_level|conn_status|conn_zone|zone|req|req_dry_run|req_log_level|req_status|req_zone)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(lingering_)(close|time|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(log_)(not_found|subrequest|format)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(max_)(ranges|errors)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(msie_)(padding|refresh)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(open_)(file_cache|file_cache_errors|file_cache_min_uses|file_cache_valid|log_file_cache)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(send_)(lowat|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(server_)(name|name_in_redirect|names_hash_bucket_size|names_hash_max_size|tokens)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(tcp_)(nodelay|nopush)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(types_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(variables_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(add_)(before_body|after_body|header|trailer)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(status_)(zone|format)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(autoindex_)(exact_size|format|localtime)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ancient_)(browser|browser_value)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(modern_)(browser|browser_value)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(charset_)(map|types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(dav_)(access|methods)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(fastcgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|catch_stderr|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|index|intercept_errors|keep_conn|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_lowat|send_timeout|socket_keepalive|split_path_info|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(geoip_)(country|city|org|proxy|proxy_recursive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(grpc_)(bind|buffer_size|connect_timeout|hide_header|ignore_headers|intercept_errors|next_upstream|next_upstream_timeout|next_upstream_tries|pass|pass_header|read_timeout|send_timeout|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(gzip_)(buffers|comp_level|disable|http_version|min_length|proxied|types|vary|static)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(hls_)(buffers|forward_args|fragment|mp4_buffer_size|mp4_max_buffer_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(image_)(filter|filter_buffer|filter_interlace|filter_jpeg_quality|filter_sharpen|filter_transparency|filter_webp_quality)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(map_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(memcached_)(bind|buffer_size|connect_timeout|force_ranges|gzip_flag|next_upstream|next_upstream_timeout|next_upstream_tries|pass|read_timeout|send_timeout|socket_keepalive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(mp4_)(buffer_size|max_buffer_size|limit_rate|limit_rate_after)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(perl_)(modules|require|set)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(proxy_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_convert_head|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|cookie_domain|cookie_flags|cookie_path|force_ranges|headers_hash_bucket_size|headers_hash_max_size|hide_header|http_version|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|method|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|redirect|request_buffering|send_lowat|send_timeout|set_body|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path|buffer|pass_error_message|protocol|smtp_auth|timeout|protocol_timeout|download_rate|half_close|requests|responses|session_drop|ssl|upload_rate)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(real_)(ip_header|ip_recursive)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(referer_)(hash_bucket_size|hash_max_size)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(scgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(secure_)(link|link_md5|link_secret)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(session_)(log|log_format|log_zone)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(spdy_)(chunk_size|headers_comp)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(ssi_)(last_modified|min_file_chunk|silent_errors|types|value_length)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(sub_)(filter|filter_last_modified|filter_once|filter_types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(health_)(check|check_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(userid_)(domain|expires|flags|mark|name|p3p|path|service)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(uwsgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|modifier1|modifier2|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(http2_)(body_preread_size|chunk_size|idle_timeout|max_concurrent_pushes|max_concurrent_streams|max_field_size|max_header_size|max_requests|push|push_preload|recv_buffer_size|recv_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(xslt_)(last_modified|param|string_param|stylesheet|types)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(imap_)(auth|capabilities|client_buffer)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(pop3_)(auth|capabilities)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(smtp_)(auth|capabilities|client_buffer|greeting_delay)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(preread_)(buffer_size|timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(zone_)(sync_buffers|sync_connect_retry_interval|sync_connect_timeout|sync_interval|sync_recv_buffer_size|sync_server|sync_ssl|sync_ssl_certificate|sync_ssl_certificate_key|sync_ssl_ciphers|sync_ssl_conf_command|sync_ssl_crl|sync_ssl_name|sync_ssl_password_file|sync_ssl_protocols|sync_ssl_server_name|sync_ssl_trusted_certificate|sync_ssl_verify|sync_ssl_verify_depth|sync_timeout)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(js_)(body_filter|content|fetch_ciphers|fetch_protocols|fetch_trusted_certificate|fetch_verify_depth|header_filter|import|include|path|set|var|access|filter|preread)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"([\\\"'\\\\s]|^)(daemon|env|include|pid|use|user|aio|alias|directio|etag|listen|resolver|root|satisfy|sendfile|allow|deny|api|autoindex|charset|geo|gunzip|gzip|expires|index|keyval|mirror|perl|set|slice|ssi|ssl|zone|state|hash|keepalive|queue|random|sticky|match|userid|protocol|timeout|xclient|starttls|load_module|lock_file|master_process|multi_accept|pcre_jit|thread_pool|timer_resolution|working_directory|absolute_redirect|aio_write|chunked_transfer_encoding|connection_pool_size|default_type|directio_alignment|disable_symlinks|if_modified_since|ignore_invalid_headers|large_client_header_buffers|merge_slashes|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver_timeout|sendfile_max_chunk|subrequest_output_buffer_size|try_files|underscores_in_headers|addition_types|override_charset|source_charset|create_full_put_path|min_delete_depth|f4f_buffer_size|gunzip_buffers|keyval_zone|access_log|mirror_request_body|random_index|set_real_ip_from|valid_referers|rewrite_log|uninitialized_variable_warn|split_clients|least_time|sticky_cookie_insert|xml_entities|google_perftools_profiles)([\\\"'\\\\s]|$)\",\n      \"end\": \";\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.directive.nginx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.directive.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b([a-zA-Z0-9\\\\_]+)\\\\s+\",\n      \"end\": \"(;|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.directive.unknown.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b([a-z]+\\\\/[A-Za-z0-9\\\\-\\\\.\\\\+]+)\\\\b\",\n      \"end\": \"(;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.other.mediatype.nginx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.nginx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"if_condition\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?\\\\~\\\\*?\\\\s\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?\\\\-[fdex]\\\\s\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\!?=[^=]\"\n        },\n        {\n          \"include\": \"#regexp_and_string\"\n        }\n      ]\n    },\n    \"server_parameters\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:^|\\\\s)(weight|max_conn|max_fails|fail_timeout|slow_start)(=)([0-9][0-9\\\\.]*[bBkKmMgGtTsShHdD]?)(?:\\\\s|;|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.nginx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nginx\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.nginx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#values\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\$)([A-Za-z0-9\\\\_]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.nginx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$\\\\{)([A-Za-z0-9\\\\_]+)(\\\\})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.nginx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.nginx\"\n            }\n          }\n        }\n      ]\n    },\n    \"regexp_and_string\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.nginx\",\n          \"match\": \"\\\\^.*?\\\\$\"\n        },\n        {\n          \"name\": \"string.quoted.double.nginx\",\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.nginx\",\n              \"match\": \"\\\\\\\\[\\\"'nt\\\\\\\\]\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.nginx\",\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.escape.nginx\",\n              \"match\": \"\\\\\\\\[\\\"'nt\\\\\\\\]\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"name\": \"comment.line.number-sign\",\n          \"match\": \"\\\\#.*\"\n        },\n        {\n          \"match\": \"[\\\\t ](=?[0-9][0-9\\\\.]*[bBkKmMgGtTsShHdD]?)(?=[\\\\t ;])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.nginx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.language.nginx\",\n          \"match\": \"[\\\\t ](on|off|true|false)(?=[\\\\t ;])\"\n        },\n        {\n          \"name\": \"constant.language.nginx\",\n          \"match\": \"[\\\\t ](kqueue|rtsig|epoll|\\\\/dev\\\\/poll|select|poll|eventport|max|all|default_server|default|main|crit|error|debug|warn|notice|last)(?=[\\\\t ;])\"\n        },\n        {\n          \"name\": \"keyword.operator.nginx\",\n          \"match\": \"\\\\\\\\.*\\\\ |\\\\~\\\\*|\\\\~|\\\\!\\\\~\\\\*|\\\\!\\\\~\"\n        },\n        {\n          \"include\": \"#regexp_and_string\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nginx\",\n  \"uuid\": \"0C04066A-12D2-43CA-8238-00A12CE4C12D\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/nim.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"nim\"],\n  \"keyEquivalent\": \"^~N\",\n  \"name\": \"nim\",\n  \"patterns\": [\n    {\n      \"begin\": \"[ \\\\t]*##\\\\[\",\n      \"contentName\": \"comment.block.doc-comment.content.nim\",\n      \"end\": \"\\\\]##\",\n      \"name\": \"comment.block.doc-comment.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinedoccomment\",\n          \"name\": \"comment.block.doc-comment.nested.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"[ \\\\t]*#\\\\[\",\n      \"contentName\": \"comment.block.content.nim\",\n      \"end\": \"\\\\]#\",\n      \"name\": \"comment.block.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinecomment\",\n          \"name\": \"comment.block.nested.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=##)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"##\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.nim\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.doc-comment.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#[^\\\\[])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.nim\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.nim\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"A nim procedure or method\",\n      \"name\": \"meta.proc.nim\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(proc|method|template|macro|iterator|converter|func)\\\\s+\\\\`?([^\\\\:\\\\{\\\\s\\\\`\\\\*\\\\(]*)\\\\`?(\\\\s*\\\\*)?\\\\s*(?=\\\\(|\\\\=|:|\\\\[|\\\\n|\\\\{)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.nim\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.export\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"discard \\\"\\\"\\\"\",\n      \"comment\": \"A discarded triple string literal comment\",\n      \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n      \"name\": \"comment.line.discarded.nim\"\n    },\n    {\n      \"include\": \"#float_literal\"\n    },\n    {\n      \"include\": \"#integer_literal\"\n    },\n    {\n      \"comment\": \"Operator as function name\",\n      \"match\": \"(?<=\\\\`)[^\\\\` ]+(?=\\\\`)\",\n      \"name\": \"entity.name.function.nim\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export\"\n        }\n      },\n      \"comment\": \"Export qualifier.\",\n      \"match\": \"\\\\b\\\\s*(\\\\*)(?:\\\\s*(?=[,:])|\\\\s+(?=[=]))\"\n    },\n    {\n      \"comment\": \"Export qualifier following a type def.\",\n      \"match\": \"\\\\b([A-Z]\\\\w+)(\\\\*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.nim\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.export\"\n        }\n      }\n    },\n    {\n      \"include\": \"#string_literal\"\n    },\n    {\n      \"comment\": \"Language Constants.\",\n      \"match\": \"\\\\b(true|false|Inf|NegInf|NaN|nil)\\\\b\",\n      \"name\": \"constant.language.nim\"\n    },\n    {\n      \"comment\": \"Keywords that affect program control flow or scope.\",\n      \"match\": \"\\\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\\\b\",\n      \"name\": \"keyword.control.nim\"\n    },\n    {\n      \"comment\": \"Keyword boolean operators for expressions.\",\n      \"match\": \"(\\\\b(and|in|is|isnot|not|notin|or|xor)\\\\b)\",\n      \"name\": \"keyword.boolean.nim\"\n    },\n    {\n      \"comment\": \"Generic operators for expressions.\",\n      \"match\": \"(=|\\\\+|-|\\\\*|/|<|>|@|\\\\$|~|&|%|!|\\\\?|\\\\^|\\\\.|:|\\\\\\\\)+\",\n      \"name\": \"keyword.operator.nim\"\n    },\n    {\n      \"comment\": \"Other keywords.\",\n      \"match\": \"(\\\\b(addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template)\\\\b)\",\n      \"name\": \"keyword.other.nim\"\n    },\n    {\n      \"comment\": \"Invalid and unused keywords.\",\n      \"match\": \"(\\\\b(generic|interface|lambda|out|shared)\\\\b)\",\n      \"name\": \"invalid.illegal.invalid-keyword.nim\"\n    },\n    {\n      \"comment\": \"Common functions\",\n      \"match\": \"\\\\b(new|await|assert|echo|defined|declared|newException|countup|countdown|high|low)\\\\b\",\n      \"name\": \"keyword.other.common.function.nim\"\n    },\n    {\n      \"comment\": \"Built-in, concrete types.\",\n      \"match\": \"\\\\b(((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)\\\\b\",\n      \"name\": \"storage.type.concrete.nim\"\n    },\n    {\n      \"comment\": \"Built-in, generic types.\",\n      \"match\": \"\\\\b(range|array|seq|set|pointer)\\\\b\",\n      \"name\": \"storage.type.generic.nim\"\n    },\n    {\n      \"comment\": \"Special types.\",\n      \"match\": \"\\\\b(openarray|varargs|void)\\\\b\",\n      \"name\": \"storage.type.generic.nim\"\n    },\n    {\n      \"comment\": \"Other constants.\",\n      \"match\": \"\\\\b[A-Z][A-Z0-9_]+\\\\b\",\n      \"name\": \"support.constant.nim\"\n    },\n    {\n      \"comment\": \"Other types.\",\n      \"match\": \"\\\\b[A-Z]\\\\w+\\\\b\",\n      \"name\": \"support.type.nim\"\n    },\n    {\n      \"comment\": \"Function call.\",\n      \"match\": \"\\\\b\\\\w+\\\\b(?=(\\\\[([a-zA-Z0-9_,]|\\\\s)+\\\\])?\\\\()\",\n      \"name\": \"support.function.any-method.nim\"\n    },\n    {\n      \"comment\": \"Function call (no parenthesis).\",\n      \"match\": \"(?!(openarray|varargs|void|range|array|seq|set|pointer|new|await|assert|echo|defined|declared|newException|countup|countdown|high|low|((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed|addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template|and|in|is|isnot|not|notin|or|xor|proc|method|template|macro|iterator|converter|func|true|false|Inf|NegInf|NaN|nil|block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\\\b)\\\\w+\\\\s+(?!(and|in|is|isnot|not|notin|or|xor|[^a-zA-Z0-9_\\\"'`(-+]+)\\\\b)(?=[a-zA-Z0-9_\\\"'`(-+])\",\n      \"name\": \"support.function.any-method.nim\"\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=\\\\{\\\\.emit: ?\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\\\\.(emit:) ?(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.c\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")(\\\\.{0,1}\\\\})?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.c\"\n            }\n          },\n          \"name\": \"meta.embedded.block.c\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\`\",\n              \"end\": \"\\\\`\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.c\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\{\\\\.\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.pragma.start.nim\"\n        }\n      },\n      \"end\": \"\\\\.?\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.pragma.end.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(?:\\\\s|\\\\s*:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"(?=\\\\.?\\\\}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)\\\\(\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b([[:alpha:]]\\\\w*)(?=\\\\.?\\\\}|,)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(\\\"\\\"\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.triple.raw.nim\"\n        },\n        {\n          \"begin\": \"\\\\b([[:alpha:]]\\\\w*)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.nim\"\n        },\n        {\n          \"begin\": \"\\\\b(hint\\\\[\\\\w+\\\\]):\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.nim\"\n            }\n          },\n          \"end\": \"(?=\\\\.?\\\\}|,)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.nim\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.comma.nim\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=asm \\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(asm) (\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.asm\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.asm\"\n            }\n          },\n          \"name\": \"meta.embedded.block.asm\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\`\",\n              \"end\": \"\\\\`\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.asm\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.nim\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.nim\"\n        }\n      },\n      \"comment\": \"tmpl specifier\",\n      \"match\": \"(tmpl(i)?)(?=( (html|xml|js|css|glsl|md))?\\\"\\\"\\\")\"\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=html\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(html)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.html\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=xml\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(xml)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.xml\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=js\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(js)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.js\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=css\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(css)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.css\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=glsl\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(glsl)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"source.glsl\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"source.glsl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.glsl\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"source.glsl\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^\\\\s*)?(?=md\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.leading.nim\"\n        }\n      },\n      \"end\": \"(?!\\\\G)(\\\\s*$\\\\n?)?\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.whitespace.embedded.trailing.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(md)(\\\"\\\"\\\")\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.nim\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.begin.nim\"\n            }\n          },\n          \"contentName\": \"text.html.markdown\",\n          \"end\": \"(\\\")\\\"\\\"(?!\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.nim\"\n            },\n            \"1\": {\n              \"name\": \"text.html.markdown\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html.markdown\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\(\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)\\\\{\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\$)(\\\\$)(for|while|case|of|when|if|else|elif)( )\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nim\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.nim\"\n                }\n              },\n              \"end\": \"(\\\\{|\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"plain\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"source.nim\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(?<!\\\\$)(\\\\$\\\\w+)\",\n              \"name\": \"keyword.operator.nim\"\n            },\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"multilinecomment\": {\n      \"begin\": \"#\\\\[\",\n      \"end\": \"\\\\]#\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinecomment\"\n        }\n      ]\n    },\n    \"multilinedoccomment\": {\n      \"begin\": \"##\\\\[\",\n      \"end\": \"\\\\]##\",\n      \"patterns\": [\n        {\n          \"include\": \"#multilinedoccomment\"\n        }\n      ]\n    },\n    \"char_escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[cC]|\\\\\\\\[rR]\",\n          \"name\": \"constant.character.escape.carriagereturn.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[lL]|\\\\\\\\[nN]\",\n          \"name\": \"constant.character.escape.linefeed.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[fF]\",\n          \"name\": \"constant.character.escape.formfeed.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[tT]\",\n          \"name\": \"constant.character.escape.tabulator.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[vV]\",\n          \"name\": \"constant.character.escape.verticaltabulator.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\"\",\n          \"name\": \"constant.character.escape.double-quote.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\'\",\n          \"name\": \"constant.character.escape.single-quote.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[0-9]+\",\n          \"name\": \"constant.character.escape.chardecimalvalue.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[aA]\",\n          \"name\": \"constant.character.escape.alert.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[bB]\",\n          \"name\": \"constant.character.escape.backspace.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[eE]\",\n          \"name\": \"constant.character.escape.escape.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[xX]\\\\h\\\\h\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.backslash.nim\"\n        }\n      ]\n    },\n    \"string_escapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[pP]\",\n          \"name\": \"constant.character.escape.newline.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[uU]\\\\h\\\\h\\\\h\\\\h\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"match\": \"\\\\\\\\[uU]\\\\{\\\\h+\\\\}\",\n          \"name\": \"constant.character.escape.hex.nim\"\n        },\n        {\n          \"include\": \"#char_escapes\"\n        }\n      ]\n    },\n    \"raw_string_escapes\": {\n      \"match\": \"[^\\\"](\\\"\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.double-quote.nim\"\n        }\n      }\n    },\n    \"fmt_interpolation\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.nim\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.nim\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \":\",\n          \"end\": \"(?=\\\\})\",\n          \"name\": \"meta.template.format-specifier.nim\"\n        },\n        {\n          \"include\": \"source.nim\"\n        }\n      ],\n      \"name\": \"meta.template.expression.nim\"\n    },\n    \"string_literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_string_triple\"\n        },\n        {\n          \"include\": \"#fmt_string_triple_operator\"\n        },\n        {\n          \"include\": \"#extended_string_quoted_triple_raw\"\n        },\n        {\n          \"include\": \"#string_quoted_triple_raw\"\n        },\n        {\n          \"include\": \"#fmt_string_operator\"\n        },\n        {\n          \"include\": \"#fmt_string\"\n        },\n        {\n          \"include\": \"#fmt_string_call\"\n        },\n        {\n          \"include\": \"#string_quoted_double_raw\"\n        },\n        {\n          \"include\": \"#extended_string_quoted_double_raw\"\n        },\n        {\n          \"include\": \"#string_quoted_single\"\n        },\n        {\n          \"include\": \"#string_quoted_triple\"\n        },\n        {\n          \"include\": \"#string_quoted_double\"\n        }\n      ]\n    },\n    \"fmt_string\": {\n      \"begin\": \"\\\\b(fmt)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\")\\\"(?!\\\")\",\n          \"name\": \"invalid.illegal.nim\"\n        },\n        {\n          \"include\": \"#raw_string_escapes\"\n        },\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_triple\": {\n      \"begin\": \"\\\\b(fmt)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_operator\": {\n      \"begin\": \"(&)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.nim\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\",\n          \"name\": \"invalid.illegal.nim\"\n        },\n        {\n          \"include\": \"#string_escapes\"\n        },\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_triple_operator\": {\n      \"begin\": \"(&)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#fmt_interpolation\"\n        }\n      ]\n    },\n    \"fmt_string_call\": {\n      \"begin\": \"(fmt)\\\\((?=\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.nim\"\n            }\n          },\n          \"end\": \"\\\"(?=\\\\))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.nim\"\n            }\n          },\n          \"name\": \"string.quoted.double.nim\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\",\n              \"name\": \"invalid.illegal.nim\"\n            },\n            {\n              \"include\": \"#string_escapes\"\n            },\n            {\n              \"include\": \"#fmt_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_quoted_double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Double Quoted String\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escapes\"\n        }\n      ]\n    },\n    \"string_quoted_double_raw\": {\n      \"begin\": \"\\\\br\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#raw_string_escapes\"\n        }\n      ]\n    },\n    \"extended_string_quoted_double_raw\": {\n      \"begin\": \"\\\\b(\\\\w+)(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.double.raw.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#raw_string_escapes\"\n        }\n      ]\n    },\n    \"string_quoted_single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Single quoted character literal\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.single.nim\",\n      \"patterns\": [\n        {\n          \"include\": \"#char_escapes\"\n        },\n        {\n          \"match\": \"([^']{2,}?)\",\n          \"name\": \"invalid.illegal.character.nim\"\n        }\n      ]\n    },\n    \"string_quoted_triple\": {\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Triple Quoted String\",\n      \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.nim\"\n    },\n    \"string_quoted_triple_raw\": {\n      \"begin\": \"r\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"comment\": \"Raw Triple Quoted String\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\"\n    },\n    \"extended_string_quoted_triple_raw\": {\n      \"begin\": \"\\\\b(\\\\w+)(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.any-method.nim\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.nim\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.nim\"\n        }\n      },\n      \"name\": \"string.quoted.triple.raw.nim\"\n    },\n    \"float_literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\d[_\\\\d]*((\\\\.\\\\d[_\\\\d]*([eE][\\\\+\\\\-]?\\\\d[_\\\\d]*)?)|([eE][\\\\+\\\\-]?\\\\d[_\\\\d]*))('([fF](32|64|128)|[fFdD]))?\",\n          \"name\": \"constant.numeric.float.decimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0[xX]\\\\h[_\\\\h]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.hexadecimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0o[0-7][_0-7]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.octal.nim\"\n        },\n        {\n          \"match\": \"\\\\b0(b|B)[01][_01]*'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.binary.nim\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[_\\\\d]*)'([fF](32|64|128)|[fFdD])\",\n          \"name\": \"constant.numeric.float.decimal.nim\"\n        }\n      ]\n    },\n    \"integer_literal\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(0[xX]\\\\h[_\\\\h]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.hexadecimal.nim\"\n        },\n        {\n          \"match\": \"\\\\b(0o[0-7][_0-7]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.octal.nim\"\n        },\n        {\n          \"match\": \"\\\\b(0(b|B)[01][_01]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.binary.nim\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[_\\\\d]*)('(([iIuU](8|16|32|64))|[uU]))?\",\n          \"name\": \"constant.numeric.integer.decimal.nim\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nim\",\n  \"uuid\": \"6DD62CE8-B129-4554-BD8E-CE5DB490E5A4\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/nix.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"nix\"],\n  \"name\": \"nix\",\n  \"patterns\": [\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"attribute-bind\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-name\"\n        },\n        {\n          \"include\": \"#attribute-bind-from-equals\"\n        }\n      ]\n    },\n    \"attribute-bind-from-equals\": {\n      \"begin\": \"\\\\=\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.bind.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.bind.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"attribute-inherit\": {\n      \"begin\": \"\\\\binherit\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.inherit.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.inherit.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.arguments.nix\"\n            }\n          },\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.function.arguments.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#bad-reserved\"\n                },\n                {\n                  \"include\": \"#attribute-name-single\"\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[a-zA-Z\\\\_])\",\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bad-reserved\"\n            },\n            {\n              \"include\": \"#attribute-name-single\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"attribute-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"name\": \"entity.other.attribute-name.multipart.nix\"\n        },\n        {\n          \"match\": \"\\\\.\"\n        },\n        {\n          \"include\": \"#string-quoted\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"attribute-name-single\": {\n      \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n      \"name\": \"entity.other.attribute-name.single.nix\"\n    },\n    \"attrset-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute-inherit\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#attribute-bind\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"attrset-definition\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\})\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-definition-brace-opened\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\})\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.attrset.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-contents\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-for-sure\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\brec\\\\b)\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\brec\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.other.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#attrset-definition\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\{\\\\s*(\\\\}|[^,?]*(=|;)))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-definition\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attrset-or-function\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.attrset-or-function.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(\\\\s*\\\\}|\\\\\\\"|\\\\binherit\\\\b|\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*(\\\\s*\\\\.|\\\\s*=[^=])))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#attrset-definition-brace-opened\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(\\\\.\\\\.\\\\.|\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\\\\s*[,?]))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-definition-brace-opened\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter.function.maybe.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\.)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attrset-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\s*(\\\\,)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.nix\"\n                }\n              },\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\=)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-bind-from-equals\"\n                },\n                {\n                  \"include\": \"#attrset-definition-brace-opened\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\?)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-parameter-default\"\n                },\n                {\n                  \"begin\": \"\\\\,\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"keyword.operator.nix\"\n                    }\n                  },\n                  \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#function-definition-brace-opened\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"bad-reserved\": {\n      \"match\": \"\\\\b(if|then|else|assert|with|let|in|rec|inherit)\\\\b\",\n      \"name\": \"invalid.illegal.reserved.nix\"\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*([^*]|\\\\*[^\\\\/])*\",\n          \"end\": \"\\\\*\\\\/\",\n          \"name\": \"comment.block.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-remark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\#\",\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment-remark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment-remark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"markup.bold.comment.nix\"\n        }\n      },\n      \"match\": \"(TODO|FIXME|BUG|\\\\!\\\\!\\\\!):?\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(builtins|true|false|null)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.language.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.function.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b[0-9]+\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#parens-and-cont\"\n        },\n        {\n          \"include\": \"#list-and-cont\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#with-assert\"\n        },\n        {\n          \"include\": \"#function-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-or-function\"\n        },\n        {\n          \"include\": \"#let\"\n        },\n        {\n          \"include\": \"#if\"\n        },\n        {\n          \"include\": \"#operator-unary\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#parameter-name-and-cont\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"expression-cont\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#function-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-for-sure\"\n        },\n        {\n          \"include\": \"#attrset-or-function\"\n        },\n        {\n          \"match\": \"(\\\\bor\\\\b|\\\\.|==|!=|!|\\\\<\\\\=|\\\\<|\\\\>\\\\=|\\\\>|&&|\\\\|\\\\||-\\\\>|//|\\\\?|\\\\+\\\\+|-|\\\\*|/(?=([^*]|$))|\\\\+)\",\n          \"name\": \"keyword.operator.nix\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-body\": {\n      \"begin\": \"(@\\\\s*([a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\\\\s*)?(\\\\:)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-body-from-colon\": {\n      \"begin\": \"(\\\\:)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.function.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-contents\": {\n      \"patterns\": [\n        {\n          \"include\": \"#bad-reserved\"\n        },\n        {\n          \"include\": \"#function-parameter\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-definition\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body-from-colon\"\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.parameter.function.4.nix\"\n                }\n              },\n              \"end\": \"(?=\\\\:)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\@\",\n                  \"end\": \"(?=\\\\:)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#function-header-until-colon-no-arg\"\n                    },\n                    {\n                      \"include\": \"#others\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=\\\\{)\",\n              \"end\": \"(?=\\\\:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-header-until-colon-with-arg\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-definition-brace-opened\": {\n      \"begin\": \"(?=.?)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-body-from-colon\"\n        },\n        {\n          \"begin\": \"(?=.?)\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-header-close-brace-with-arg\"\n            },\n            {\n              \"begin\": \"(?=.?)\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-contents\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-for-sure\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\\\\s*[:@]|\\\\{[^}]*\\\\}\\\\s*:|\\\\{[^#}\\\"'/=]*[,\\\\?]))\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-definition\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-header-close-brace-no-arg\": {\n      \"begin\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-close-brace-with-arg\": {\n      \"begin\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-terminal-arg\"\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-open-brace\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.entity.function.2.nix\"\n        }\n      },\n      \"end\": \"(?=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-contents\"\n        }\n      ]\n    },\n    \"function-header-terminal-arg\": {\n      \"begin\": \"(?=@)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\@\",\n          \"end\": \"(?=\\\\:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*)\",\n              \"end\": \"(?=\\\\:)\",\n              \"name\": \"variable.parameter.function.3.nix\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-header-until-colon-no-arg\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-open-brace\"\n        },\n        {\n          \"include\": \"#function-header-close-brace-no-arg\"\n        }\n      ]\n    },\n    \"function-header-until-colon-with-arg\": {\n      \"begin\": \"(?=\\\\{)\",\n      \"end\": \"(?=\\\\:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-header-open-brace\"\n        },\n        {\n          \"include\": \"#function-header-close-brace-with-arg\"\n        }\n      ]\n    },\n    \"function-parameter\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\.\\\\.\\\\.)\",\n          \"end\": \"(,|(?=\\\\}))\",\n          \"name\": \"keyword.operator.nix\",\n          \"patterns\": [\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.parameter.function.1.nix\"\n            }\n          },\n          \"end\": \"(,|(?=\\\\}))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#whitespace\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-parameter-default\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#others\"\n        }\n      ]\n    },\n    \"function-parameter-default\": {\n      \"begin\": \"\\\\?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.nix\"\n        }\n      },\n      \"end\": \"(?=[,}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"if\": {\n      \"begin\": \"(?=\\\\bif\\\\b)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bif\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"\\\\bth(?=en\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=th)en\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"\\\\bel(?=se\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=el)se\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"illegal\": {\n      \"match\": \".\",\n      \"name\": \"invalid.illegal\"\n    },\n    \"interpolation\": {\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.nix\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.nix\"\n        }\n      },\n      \"name\": \"markup.italic\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"let\": {\n      \"begin\": \"(?=\\\\blet\\\\b)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\blet\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(in|else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\{)\",\n              \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#attrset-contents\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(^|(?<=\\\\}))\",\n                  \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-cont\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#others\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#attrset-contents\"\n            },\n            {\n              \"include\": \"#others\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bin\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.other.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"list\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.nix\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"list-and-cont\": {\n      \"begin\": \"(?=\\\\[)\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"operator-unary\": {\n      \"match\": \"(!|-)\",\n      \"name\": \"keyword.operator.unary.nix\"\n    },\n    \"others\": {\n      \"patterns\": [\n        {\n          \"include\": \"#whitespace\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#illegal\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"variable.parameter.name.nix\"\n        }\n      },\n      \"match\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\"\n    },\n    \"parameter-name-and-cont\": {\n      \"begin\": \"\\\\b[a-zA-Z\\\\_][a-zA-Z0-9\\\\_\\\\'\\\\-]*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.parameter.name.nix\"\n        }\n      },\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"parens\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.expression.nix\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.expression.nix\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"parens-and-cont\": {\n      \"begin\": \"(?=\\\\()\",\n      \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"include\": \"#expression-cont\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\'\\\\')\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\'\\\\'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.other.start.nix\"\n                }\n              },\n              \"end\": \"\\\\'\\\\'(?!\\\\$|\\\\'|\\\\\\\\.)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.other.end.nix\"\n                }\n              },\n              \"name\": \"string.quoted.other.nix\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\'\\\\'(\\\\$|\\\\'|\\\\\\\\.)\",\n                  \"name\": \"constant.character.escape.nix\"\n                },\n                {\n                  \"include\": \"#interpolation\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\\\\")\",\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#string-quoted\"\n            },\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]*(\\\\/[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+)+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.path.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\<[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+(\\\\/[a-zA-Z0-9\\\\.\\\\_\\\\-\\\\+]+)*\\\\>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.spath.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([a-zA-Z][a-zA-Z0-9\\\\+\\\\-\\\\.]*\\\\:[a-zA-Z0-9\\\\%\\\\/\\\\?\\\\:\\\\@\\\\&\\\\=\\\\+\\\\$\\\\,\\\\-\\\\_\\\\.\\\\!\\\\~\\\\*\\\\']+)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"string.unquoted.url.nix\"\n            }\n          },\n          \"end\": \"(?=([\\\\])};,]|\\\\b(else|then)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-cont\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-quoted\": {\n      \"begin\": \"\\\\\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.double.start.nix\"\n        }\n      },\n      \"end\": \"\\\\\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.double.end.nix\"\n        }\n      },\n      \"name\": \"string.quoted.double.nix\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.nix\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"whitespace\": {\n      \"match\": \"\\\\s+\"\n    },\n    \"with-assert\": {\n      \"begin\": \"\\\\b(with|assert)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.nix\"\n        }\n      },\n      \"end\": \"\\\\;\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.nix\",\n  \"uuid\": \"0514fd5f-acb6-436d-b42c-7643e6d36c8f\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/objective-c.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-objc-syntax/blob/master/autogenerated/objc.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-objc-syntax/commit/119b75fb1f4d3e8726fa62588e3b935e0b719294\",\n  \"name\": \"objective-c\",\n  \"scopeName\": \"source.objc\",\n  \"patterns\": [\n    {\n      \"include\": \"#anonymous_pattern_1\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_2\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_3\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_4\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_5\"\n    },\n    {\n      \"include\": \"#apple_foundation_functional_macros\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_7\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_8\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_9\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_10\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_11\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_12\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_13\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_14\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_15\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_16\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_17\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_18\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_19\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_20\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_21\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_22\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_23\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_24\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_25\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_26\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_27\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_28\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_29\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_30\"\n    },\n    {\n      \"include\": \"#bracketed_content\"\n    },\n    {\n      \"include\": \"#c_lang\"\n    }\n  ],\n  \"repository\": {\n    \"anonymous_pattern_1\": {\n      \"begin\": \"((@)(interface|protocol))(?!.+;)\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*((:)(?:\\\\s*)([A-Za-z][A-Za-z0-9]*))?(\\\\s|\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objc\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.entity.other.inherited-class.objc\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.objc\"\n        },\n        \"8\": {\n          \"name\": \"meta.divider.objc\"\n        },\n        \"9\": {\n          \"name\": \"meta.inherited-class.objc\"\n        }\n      },\n      \"contentName\": \"meta.scope.interface.objc\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.interface-or-protocol.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_10\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(defs|encode)\\\\b\",\n      \"name\": \"keyword.other.objc\"\n    },\n    \"anonymous_pattern_11\": {\n      \"match\": \"\\\\bid\\\\b\",\n      \"name\": \"storage.type.id.objc\"\n    },\n    \"anonymous_pattern_12\": {\n      \"match\": \"\\\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\\\b\",\n      \"name\": \"storage.type.objc\"\n    },\n    \"anonymous_pattern_13\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"match\": \"(@)(class|protocol)\\\\b\",\n      \"name\": \"storage.type.objc\"\n    },\n    \"anonymous_pattern_14\": {\n      \"begin\": \"((@)selector)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"contentName\": \"meta.selector.method-name.objc\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        }\n      },\n      \"name\": \"meta.selector.objc\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"match\": \"\\\\b(?:[a-zA-Z_:][\\\\w]*)+\",\n          \"name\": \"support.function.any-method.name-of-parameter.objc\"\n        }\n      ]\n    },\n    \"anonymous_pattern_15\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.modifier.objc\"\n        }\n      },\n      \"match\": \"(@)(synchronized|public|package|private|protected)\\\\b\",\n      \"name\": \"storage.modifier.objc\"\n    },\n    \"anonymous_pattern_16\": {\n      \"match\": \"\\\\b(YES|NO|Nil|nil)\\\\b\",\n      \"name\": \"constant.language.objc\"\n    },\n    \"anonymous_pattern_17\": {\n      \"match\": \"\\\\bNSApp\\\\b\",\n      \"name\": \"support.variable.foundation.objc\"\n    },\n    \"anonymous_pattern_18\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.cocoa.leopard.objc\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.leopard.objc\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\\\b\"\n    },\n    \"anonymous_pattern_19\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.leading.cocoa.objc\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.objc\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\\\b\"\n    },\n    \"anonymous_pattern_2\": {\n      \"begin\": \"((@)(implementation))\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*(?::\\\\s*([A-Za-z][A-Za-z0-9]*))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objc\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objc\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.objc\"\n        }\n      },\n      \"contentName\": \"meta.scope.implementation.objc\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.implementation.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_20\": {\n      \"match\": \"\\\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\\\b\",\n      \"name\": \"support.class.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_21\": {\n      \"match\": \"\\\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\\\b\",\n      \"name\": \"support.class.cocoa.objc\"\n    },\n    \"anonymous_pattern_22\": {\n      \"match\": \"\\\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\\\b\",\n      \"name\": \"support.type.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_23\": {\n      \"match\": \"\\\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\\\b\",\n      \"name\": \"support.class.quartz.objc\"\n    },\n    \"anonymous_pattern_24\": {\n      \"match\": \"\\\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\\\b\",\n      \"name\": \"support.type.quartz.objc\"\n    },\n    \"anonymous_pattern_25\": {\n      \"match\": \"\\\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\\\b\",\n      \"name\": \"support.type.cocoa.objc\"\n    },\n    \"anonymous_pattern_26\": {\n      \"match\": \"\\\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\\\b\",\n      \"name\": \"support.constant.cocoa.objc\"\n    },\n    \"anonymous_pattern_27\": {\n      \"match\": \"\\\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_28\": {\n      \"match\": \"\\\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.objc\"\n    },\n    \"anonymous_pattern_29\": {\n      \"match\": \"\\\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\\\b\",\n      \"name\": \"support.constant.cocoa.leopard.objc\"\n    },\n    \"anonymous_pattern_3\": {\n      \"begin\": \"@\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.objc\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.objc\"\n        }\n      },\n      \"name\": \"string.quoted.double.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"match\": \"(?x)%\\n\\t\\t\\t\\t\\t\\t(\\\\d+\\\\$)?                             # field (argument #)\\n\\t\\t\\t\\t\\t\\t[#0\\\\- +']*                          # flags\\n\\t\\t\\t\\t\\t\\t((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\n\\t\\t\\t\\t\\t\\t(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\n\\t\\t\\t\\t\\t\\t[@]                                  # conversion type\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.placeholder.objc\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    \"anonymous_pattern_30\": {\n      \"match\": \"\\\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\\\b\",\n      \"name\": \"support.constant.cocoa.objc\"\n    },\n    \"anonymous_pattern_4\": {\n      \"begin\": \"\\\\b(id)\\\\s*(?=<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objc\"\n        }\n      },\n      \"end\": \"(?<=>)\",\n      \"name\": \"meta.id-with-protocol.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#protocol_list\"\n        }\n      ]\n    },\n    \"anonymous_pattern_5\": {\n      \"match\": \"\\\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\\\b\",\n      \"name\": \"keyword.control.macro.objc\"\n    },\n    \"anonymous_pattern_7\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(try|catch|finally|throw)\\\\b\",\n      \"name\": \"keyword.control.exception.objc\"\n    },\n    \"anonymous_pattern_8\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(synchronized)\\\\b\",\n      \"name\": \"keyword.control.synchronize.objc\"\n    },\n    \"anonymous_pattern_9\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(required|optional)\\\\b\",\n      \"name\": \"keyword.control.protocol-specification.objc\"\n    },\n    \"apple_foundation_functional_macros\": {\n      \"begin\": \"(\\\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.apple-foundation.objc\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objc\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objc\"\n        }\n      },\n      \"name\": \"meta.preprocessor.macro.callable.apple-foundation.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#c_lang\"\n        }\n      ]\n    },\n    \"bracketed_content\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.objc\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.objc\"\n        }\n      },\n      \"name\": \"meta.bracketed.objc\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.predicate.objc\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\bargument(Array|s)(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objc\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"invalid.illegal.unknown-method.objc\"\n            },\n            {\n              \"begin\": \"@\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(AND|OR|NOT|IN)\\\\b\",\n                  \"name\": \"keyword.operator.logical.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(ALL|ANY|SOME|NONE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\\\b\",\n                  \"name\": \"keyword.operator.comparison.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\bC(ASEINSENSITIVE|I)\\\\b\",\n                  \"name\": \"keyword.other.modifier.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\\\b\",\n                  \"name\": \"keyword.other.predicate.cocoa.objc\"\n                },\n                {\n                  \"match\": \"\\\\\\\\(\\\\\\\\|[abefnrtv'\\\"?]|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-zA-Z0-9]+)\",\n                  \"name\": \"constant.character.escape.objc\"\n                },\n                {\n                  \"match\": \"\\\\\\\\.\",\n                  \"name\": \"invalid.illegal.unknown-escape.objc\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\w)(?<=[\\\\w\\\\])\\\"] )(\\\\w+(?:(:)|(?=\\\\])))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.objc\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objc\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objc\"\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"include\": \"#c_functions\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"c_functions\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.support.function.leading.objc\"\n            },\n            \"2\": {\n              \"name\": \"support.function.C99.objc\"\n            }\n          },\n          \"match\": \"(\\\\s*)\\\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.function-call.leading.objc\"\n            },\n            \"2\": {\n              \"name\": \"support.function.any-method.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.objc\"\n            }\n          },\n          \"match\": \"(?x) (?: (?= \\\\s )  (?:(?<=else|new|return) | (?<!\\\\w)) (\\\\s+))?\\n            \\t\\t\\t(\\\\b \\n            \\t\\t\\t\\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\\\s*\\\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\\\b | :: )++                  # actual name\\n            \\t\\t\\t)\\n            \\t\\t\\t \\\\s*(\\\\()\",\n          \"name\": \"meta.function-call.objc\"\n        }\n      ]\n    },\n    \"c_lang\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"match\": \"\\\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\\\b\",\n          \"name\": \"keyword.control.objc\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"match\": \"typedef\",\n          \"name\": \"keyword.other.typedef.objc\"\n        },\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.other.in.objc\"\n        },\n        {\n          \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline|__block)\\\\b\",\n          \"name\": \"storage.modifier.objc\"\n        },\n        {\n          \"match\": \"\\\\bk[A-Z]\\\\w*\\\\b\",\n          \"name\": \"constant.other.variable.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\bg[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.global.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\bs[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.static.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n          \"name\": \"constant.language.objc\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+\\t# define\\n((?<id>[a-zA-Z_$][\\\\w$]*))\\t  # macro name\\n(?:\\n  (\\\\()\\n\\t(\\n\\t  \\\\s* \\\\g<id> \\\\s*\\t\\t # first argument\\n\\t  ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t  (?:\\\\.\\\\.\\\\.)?\\t\\t\\t# varargs ellipsis?\\n\\t)\\n  (\\\\))\\n)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.define.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.objc\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.preprocessor.objc\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.parameters.objc\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.macro.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.diagnostic.$3.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.diagnostic.objc\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"[^'\\\"]\",\n              \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"string.unquoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.$3.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.include.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.objc\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.objc\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.line.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.undef.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objc\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.pragma.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.pragma.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n              \"name\": \"entity.other.attribute-name.pragma.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n          \"name\": \"support.type.sys-types.objc\"\n        },\n        {\n          \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n          \"name\": \"support.type.pthread.objc\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n          \"name\": \"support.type.stdint.objc\"\n        },\n        {\n          \"match\": \"\\\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\\\b\",\n          \"name\": \"support.constant.mac-classic.objc\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\n\\\\b\",\n          \"name\": \"support.type.mac-classic.objc\"\n        },\n        {\n          \"match\": \"\\\\b([A-Za-z0-9_]+_t)\\\\b\",\n          \"name\": \"support.type.posix-reserved.objc\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"name\": \"meta.function.objc\",\n          \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"name\": \"meta.bracket.square.access.objc\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.objc\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.modifier.array.bracket.square.objc\",\n          \"match\": \"\\\\[\\\\s*\\\\]\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.objc\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.objc\"\n        }\n      ],\n      \"repository\": {\n        \"probably_a_parameter\": {\n          \"match\": \"(?<=(?:[a-zA-Z_0-9] |[&*>\\\\]\\\\)]))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:,|\\\\)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.probably.objc\"\n            }\n          }\n        },\n        \"access-method\": {\n          \"name\": \"meta.function-call.member.objc\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.dot-access.objc\"\n                },\n                {\n                  \"match\": \"->\",\n                  \"name\": \"punctuation.separator.pointer-access.objc\"\n                },\n                {\n                  \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n                  \"name\": \"variable.object.objc\"\n                },\n                {\n                  \"name\": \"everything.else.objc\",\n                  \"match\": \".+\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"name\": \"meta.block.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"block_innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-enabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-conditional-block\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#c_function_call\"\n            },\n            {\n              \"name\": \"meta.initialization.objc\",\n              \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.initialization.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#parens-block\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"c_function_call\": {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)\",\n          \"name\": \"meta.function-call.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"comments\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.block.objc\"\n                }\n              },\n              \"match\": \"^/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*/$\\\\n?\",\n              \"name\": \"comment.block.objc\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.objc\"\n                }\n              },\n              \"end\": \"\\\\*/\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.objc\"\n                }\n              },\n              \"name\": \"comment.block.objc\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.line.objc\"\n                }\n              },\n              \"match\": \"^// =(\\\\s*.*?)\\\\s*=\\\\s*$\\\\n?\",\n              \"name\": \"comment.line.banner.objc\"\n            },\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.objc\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"//\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.objc\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\n)\",\n                  \"name\": \"comment.line.double-slash.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"disabled\": {\n          \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n          \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        \"line_continuation_character\": {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\)\\\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.line-continuation.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"parens\": {\n          \"name\": \"meta.parens.objc\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"parens-block\": {\n          \"name\": \"meta.parens.block.objc\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!:):(?!:))\",\n              \"name\": \"punctuation.range-based.objc\"\n            }\n          ]\n        },\n        \"pragma-mark\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.pragma.pragma-mark.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.pragma-mark.objc\"\n            }\n          },\n          \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n          \"name\": \"meta.section.objc\"\n        },\n        \"operators\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<![\\\\w$])(sizeof)(?![\\\\w$])\",\n              \"name\": \"keyword.operator.sizeof.objc\"\n            },\n            {\n              \"match\": \"--\",\n              \"name\": \"keyword.operator.decrement.objc\"\n            },\n            {\n              \"match\": \"\\\\+\\\\+\",\n              \"name\": \"keyword.operator.increment.objc\"\n            },\n            {\n              \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n              \"name\": \"keyword.operator.assignment.compound.objc\"\n            },\n            {\n              \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n              \"name\": \"keyword.operator.assignment.compound.bitwise.objc\"\n            },\n            {\n              \"match\": \"<<|>>\",\n              \"name\": \"keyword.operator.bitwise.shift.objc\"\n            },\n            {\n              \"match\": \"!=|<=|>=|==|<|>\",\n              \"name\": \"keyword.operator.comparison.objc\"\n            },\n            {\n              \"match\": \"&&|!|\\\\|\\\\|\",\n              \"name\": \"keyword.operator.logical.objc\"\n            },\n            {\n              \"match\": \"&|\\\\||\\\\^|~\",\n              \"name\": \"keyword.operator.objc\"\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"keyword.operator.assignment.objc\"\n            },\n            {\n              \"match\": \"%|\\\\*|/|-|\\\\+\",\n              \"name\": \"keyword.operator.objc\"\n            },\n            {\n              \"begin\": \"(\\\\?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"end\": \"(:)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            }\n          ]\n        },\n        \"string_escaped_char\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n              \"name\": \"constant.character.escape.objc\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unknown-escape.objc\"\n            }\n          ]\n        },\n        \"string_placeholder\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n              \"name\": \"constant.other.placeholder.objc\"\n            },\n            {\n              \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.placeholder.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"storage_types\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.primitive.objc\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.objc\"\n            },\n            {\n              \"match\": \"(?-mix:\\\\b(asm|__asm__|enum|struct|union)\\\\b)\",\n              \"name\": \"storage.type.$1.objc\"\n            }\n          ]\n        },\n        \"vararg_ellipses\": {\n          \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n          \"name\": \"punctuation.vararg-ellipses.objc\"\n        },\n        \"preprocessor-rule-conditional\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objc\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-line\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            {\n              \"match\": \"\\\\bdefined\\\\b\",\n              \"name\": \"invalid.illegal.macro-name.objc\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n              \"name\": \"constant.language.objc\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objc\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objc\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objc\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objc\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objc\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.preprocessor.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objc\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objc\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objc\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objc\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objc\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objc\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-contents\": {\n          \"patterns\": [\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"name\": \"meta.block.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\(\",\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n              \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"meta.function.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.double.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objc\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objc\"\n                }\n              },\n              \"name\": \"string.quoted.single.objc\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-blocks\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objc\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-define-line-contents\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-functions\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"function-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"name\": \"meta.function.definition.parameters.objc\",\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"function-call-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objc\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"default_statement\": {\n          \"name\": \"meta.conditional.case.objc\",\n          \"begin\": \"((?<!\\\\w)default(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.objc\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.default.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"case_statement\": {\n          \"name\": \"meta.conditional.case.objc\",\n          \"begin\": \"((?<!\\\\w)case(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.objc\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"switch_statement\": {\n          \"name\": \"meta.block.switch.objc\",\n          \"begin\": \"(((?<!\\\\w)switch(?!\\\\w)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.head.switch.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.switch.objc\"\n            }\n          },\n          \"end\": \"(?:(?<=\\\\})|(?=[;>\\\\[\\\\]=]))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.head.switch.objc\",\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"((?:\\\\{|(?=;)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.switch.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#switch_conditional_parentheses\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.body.switch.objc\",\n              \"begin\": \"(?<=\\\\{)\",\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.switch.objc\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#default_statement\"\n                },\n                {\n                  \"include\": \"#case_statement\"\n                },\n                {\n                  \"include\": \"$base\"\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.tail.switch.objc\",\n              \"begin\": \"(?<=})[\\\\s\\\\n]*\",\n              \"end\": \"[\\\\s\\\\n]*(?=;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"switch_conditional_parentheses\": {\n          \"name\": \"meta.conditional.switch.objc\",\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"static_assert\": {\n          \"begin\": \"(static_assert|_Static_assert)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.static_assert.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.static_assert.message.objc\",\n              \"begin\": \"(,)\\\\s*(?=(?:L|u8|u|U\\\\s*\\\\\\\")?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.delimiter.objc\"\n                }\n              },\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#string_context_c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#function_call_context\"\n            }\n          ]\n        },\n        \"conditional_context\": {\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"member_access\": {\n          \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*(\\\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\\\w*\\\\b(?!\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objc\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objc\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objc\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objc\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.objc\"\n            }\n          }\n        },\n        \"method_access\": {\n          \"contentName\": \"meta.function-call.member.objc\",\n          \"begin\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*([a-zA-Z_]\\\\w*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objc\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objc\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objc\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objc\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objc\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"numbers\": {\n          \"begin\": \"(?<!\\\\w)(?=\\\\d|\\\\.\\\\d)\",\n          \"end\": \"(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\G0[xX])(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objc\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objc\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objc\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.decimal.point.objc\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objc\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objc\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objc\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.binary.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.binary.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.octal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.octal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objc\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objc\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objc\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objc\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objc\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objc\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objc\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objc\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objc\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objc\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objc\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))+\",\n              \"name\": \"invalid.illegal.constant.numeric.objc\"\n            }\n          ]\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.objc\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.objc\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.objc\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.objc\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.objc\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n                  \"name\": \"punctuation.separator.continuation.objc\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"comment\": \"eat nested preprocessor if(def)s\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b.*$\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        }\n      ]\n    },\n    \"implementation_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-implementation\"\n        },\n        {\n          \"include\": \"#property_directive\"\n        },\n        {\n          \"include\": \"#method_super\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"interface_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-interface\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"#protocol_list\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"method\": {\n      \"begin\": \"^(-|\\\\+)\\\\s*\",\n      \"end\": \"(?=\\\\{|#)|;\",\n      \"name\": \"meta.function.objc\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objc\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.objc\"\n            }\n          },\n          \"name\": \"meta.return-type.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b\\\\w+(?=:)\",\n          \"name\": \"entity.name.function.name-of-parameter.objc\"\n        },\n        {\n          \"begin\": \"((:))\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.name-of-parameter.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.type.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objc\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.objc\"\n            }\n          },\n          \"name\": \"meta.argument-type.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"method_super\": {\n      \"begin\": \"^(?=-|\\\\+)\",\n      \"end\": \"(?<=\\\\})|(?=#)\",\n      \"name\": \"meta.function-with-body.objc\",\n      \"patterns\": [\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"pragma-mark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.pragma.objc\"\n        },\n        \"3\": {\n          \"name\": \"meta.toc-list.pragma-mark.objc\"\n        }\n      },\n      \"match\": \"^\\\\s*(#\\\\s*(pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section.objc\"\n    },\n    \"preprocessor-rule-disabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objc\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#implementation_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objc\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objc\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objc\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objc\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-other-implementation\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"preprocessor-rule-other-interface\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objc\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objc\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)property)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.scope.begin.objc\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.scope.end.objc\"\n            }\n          },\n          \"name\": \"meta.property-with-attributes.objc\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\\\b\",\n              \"name\": \"keyword.other.property.attribute.objc\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objc\"\n            }\n          },\n          \"match\": \"((@)property)\\\\b\",\n          \"name\": \"meta.property.objc\"\n        }\n      ]\n    },\n    \"property_directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objc\"\n        }\n      },\n      \"match\": \"(@)(dynamic|synthesize)\\\\b\",\n      \"name\": \"keyword.other.property.directive.objc\"\n    },\n    \"protocol_list\": {\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.objc\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.end.objc\"\n        }\n      },\n      \"name\": \"meta.protocol-list.objc\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\\\b\",\n          \"name\": \"support.other.protocol.objc\"\n        }\n      ]\n    },\n    \"protocol_type_qualifier\": {\n      \"match\": \"\\\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\\\b\",\n      \"name\": \"storage.modifier.protocol.objc\"\n    },\n    \"special_variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b_cmd\\\\b\",\n          \"name\": \"variable.other.selector.objc\"\n        },\n        {\n          \"match\": \"\\\\b(self|super)\\\\b\",\n          \"name\": \"variable.language.objc\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape.objc\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.objc\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder.objc\"\n        },\n        {\n          \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.placeholder.objc\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/objective-cpp.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jeff-hykin/better-objcpp-syntax/blob/master/autogenerated/objcpp.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jeff-hykin/better-objcpp-syntax/commit/5a7eb15eee382dd5aa388bc04fdb60a0d2128e14\",\n  \"name\": \"objective-cpp\",\n  \"scopeName\": \"source.objcpp\",\n  \"patterns\": [\n    {\n      \"include\": \"#cpp_lang\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_1\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_2\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_3\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_4\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_5\"\n    },\n    {\n      \"include\": \"#apple_foundation_functional_macros\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_7\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_8\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_9\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_10\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_11\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_12\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_13\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_14\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_15\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_16\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_17\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_18\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_19\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_20\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_21\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_22\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_23\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_24\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_25\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_26\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_27\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_28\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_29\"\n    },\n    {\n      \"include\": \"#anonymous_pattern_30\"\n    },\n    {\n      \"include\": \"#bracketed_content\"\n    },\n    {\n      \"include\": \"#c_lang\"\n    }\n  ],\n  \"repository\": {\n    \"anonymous_pattern_1\": {\n      \"begin\": \"((@)(interface|protocol))(?!.+;)\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*((:)(?:\\\\s*)([A-Za-z][A-Za-z0-9]*))?(\\\\s|\\\\n)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objcpp\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.entity.other.inherited-class.objcpp\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.objcpp\"\n        },\n        \"8\": {\n          \"name\": \"meta.divider.objcpp\"\n        },\n        \"9\": {\n          \"name\": \"meta.inherited-class.objcpp\"\n        }\n      },\n      \"contentName\": \"meta.scope.interface.objcpp\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.interface-or-protocol.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_10\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objcpp\"\n        }\n      },\n      \"match\": \"(@)(defs|encode)\\\\b\",\n      \"name\": \"keyword.other.objcpp\"\n    },\n    \"anonymous_pattern_11\": {\n      \"match\": \"\\\\bid\\\\b\",\n      \"name\": \"storage.type.id.objcpp\"\n    },\n    \"anonymous_pattern_12\": {\n      \"match\": \"\\\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\\\b\",\n      \"name\": \"storage.type.objcpp\"\n    },\n    \"anonymous_pattern_13\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        }\n      },\n      \"match\": \"(@)(class|protocol)\\\\b\",\n      \"name\": \"storage.type.objcpp\"\n    },\n    \"anonymous_pattern_14\": {\n      \"begin\": \"((@)selector)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        }\n      },\n      \"contentName\": \"meta.selector.method-name.objcpp\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        }\n      },\n      \"name\": \"meta.selector.objcpp\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.arguments.objcpp\"\n            }\n          },\n          \"match\": \"\\\\b(?:[a-zA-Z_:][\\\\w]*)+\",\n          \"name\": \"support.function.any-method.name-of-parameter.objcpp\"\n        }\n      ]\n    },\n    \"anonymous_pattern_15\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage.modifier.objcpp\"\n        }\n      },\n      \"match\": \"(@)(synchronized|public|package|private|protected)\\\\b\",\n      \"name\": \"storage.modifier.objcpp\"\n    },\n    \"anonymous_pattern_16\": {\n      \"match\": \"\\\\b(YES|NO|Nil|nil)\\\\b\",\n      \"name\": \"constant.language.objcpp\"\n    },\n    \"anonymous_pattern_17\": {\n      \"match\": \"\\\\bNSApp\\\\b\",\n      \"name\": \"support.variable.foundation.objcpp\"\n    },\n    \"anonymous_pattern_18\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.cocoa.leopard.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.leopard.objcpp\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\\\b\"\n    },\n    \"anonymous_pattern_19\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.support.function.leading.cocoa.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"support.function.cocoa.objcpp\"\n        }\n      },\n      \"match\": \"(\\\\s*)\\\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\\\b\"\n    },\n    \"anonymous_pattern_2\": {\n      \"begin\": \"((@)(implementation))\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*(?::\\\\s*([A-Za-z][A-Za-z0-9]*))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.storage.type.objcpp\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.objcpp\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.objcpp\"\n        }\n      },\n      \"contentName\": \"meta.scope.implementation.objcpp\",\n      \"end\": \"((@)end)\\\\b\",\n      \"name\": \"meta.implementation.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"anonymous_pattern_20\": {\n      \"match\": \"\\\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\\\b\",\n      \"name\": \"support.class.cocoa.leopard.objcpp\"\n    },\n    \"anonymous_pattern_21\": {\n      \"match\": \"\\\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\\\b\",\n      \"name\": \"support.class.cocoa.objcpp\"\n    },\n    \"anonymous_pattern_22\": {\n      \"match\": \"\\\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\\\b\",\n      \"name\": \"support.type.cocoa.leopard.objcpp\"\n    },\n    \"anonymous_pattern_23\": {\n      \"match\": \"\\\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\\\b\",\n      \"name\": \"support.class.quartz.objcpp\"\n    },\n    \"anonymous_pattern_24\": {\n      \"match\": \"\\\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\\\b\",\n      \"name\": \"support.type.quartz.objcpp\"\n    },\n    \"anonymous_pattern_25\": {\n      \"match\": \"\\\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\\\b\",\n      \"name\": \"support.type.cocoa.objcpp\"\n    },\n    \"anonymous_pattern_26\": {\n      \"match\": \"\\\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\\\b\",\n      \"name\": \"support.constant.cocoa.objcpp\"\n    },\n    \"anonymous_pattern_27\": {\n      \"match\": \"\\\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.leopard.objcpp\"\n    },\n    \"anonymous_pattern_28\": {\n      \"match\": \"\\\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\\\b\",\n      \"name\": \"support.constant.notification.cocoa.objcpp\"\n    },\n    \"anonymous_pattern_29\": {\n      \"match\": \"\\\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\\\b\",\n      \"name\": \"support.constant.cocoa.leopard.objcpp\"\n    },\n    \"anonymous_pattern_3\": {\n      \"begin\": \"@\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.objcpp\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.objcpp\"\n        }\n      },\n      \"name\": \"string.quoted.double.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#string_escaped_char\"\n        },\n        {\n          \"match\": \"(?x)%\\n\\t\\t\\t\\t\\t\\t(\\\\d+\\\\$)?                             # field (argument #)\\n\\t\\t\\t\\t\\t\\t[#0\\\\- +']*                          # flags\\n\\t\\t\\t\\t\\t\\t((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\n\\t\\t\\t\\t\\t\\t(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\n\\t\\t\\t\\t\\t\\t[@]                                  # conversion type\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.placeholder.objcpp\"\n        },\n        {\n          \"include\": \"#string_placeholder\"\n        }\n      ]\n    },\n    \"anonymous_pattern_30\": {\n      \"match\": \"\\\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\\\b\",\n      \"name\": \"support.constant.cocoa.objcpp\"\n    },\n    \"anonymous_pattern_4\": {\n      \"begin\": \"\\\\b(id)\\\\s*(?=<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.objcpp\"\n        }\n      },\n      \"end\": \"(?<=>)\",\n      \"name\": \"meta.id-with-protocol.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#protocol_list\"\n        }\n      ]\n    },\n    \"anonymous_pattern_5\": {\n      \"match\": \"\\\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\\\b\",\n      \"name\": \"keyword.control.macro.objcpp\"\n    },\n    \"anonymous_pattern_7\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objcpp\"\n        }\n      },\n      \"match\": \"(@)(try|catch|finally|throw)\\\\b\",\n      \"name\": \"keyword.control.exception.objcpp\"\n    },\n    \"anonymous_pattern_8\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objcpp\"\n        }\n      },\n      \"match\": \"(@)(synchronized)\\\\b\",\n      \"name\": \"keyword.control.synchronize.objcpp\"\n    },\n    \"anonymous_pattern_9\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objcpp\"\n        }\n      },\n      \"match\": \"(@)(required|optional)\\\\b\",\n      \"name\": \"keyword.control.protocol-specification.objcpp\"\n    },\n    \"apple_foundation_functional_macros\": {\n      \"begin\": \"(\\\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\\\s)+)?(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.preprocessor.apple-foundation.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objcpp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objcpp\"\n        }\n      },\n      \"name\": \"meta.preprocessor.macro.callable.apple-foundation.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#c_lang\"\n        }\n      ]\n    },\n    \"bracketed_content\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.objcpp\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.objcpp\"\n        }\n      },\n      \"name\": \"meta.bracketed.objcpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objcpp\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.predicate.objcpp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objcpp\"\n                }\n              },\n              \"match\": \"\\\\bargument(Array|s)(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objcpp\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objcpp\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"invalid.illegal.unknown-method.objcpp\"\n            },\n            {\n              \"begin\": \"@\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(AND|OR|NOT|IN)\\\\b\",\n                  \"name\": \"keyword.operator.logical.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\b(ALL|ANY|SOME|NONE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\\\b\",\n                  \"name\": \"constant.language.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\\\b\",\n                  \"name\": \"keyword.operator.comparison.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\bC(ASEINSENSITIVE|I)\\\\b\",\n                  \"name\": \"keyword.other.modifier.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\\\b\",\n                  \"name\": \"keyword.other.predicate.cocoa.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\(\\\\\\\\|[abefnrtv'\\\"?]|[0-3]\\\\d{,2}|[4-7]\\\\d?|x[a-zA-Z0-9]+)\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\.\",\n                  \"name\": \"invalid.illegal.unknown-escape.objcpp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\w)(?<=[\\\\w\\\\])\\\"] )(\\\\w+(?:(:)|(?=\\\\])))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.any-method.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objcpp\"\n            }\n          },\n          \"end\": \"(?=\\\\])\",\n          \"name\": \"meta.function-call.objcpp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.arguments.objcpp\"\n                }\n              },\n              \"match\": \"\\\\b\\\\w+(:)\",\n              \"name\": \"support.function.any-method.name-of-parameter.objcpp\"\n            },\n            {\n              \"include\": \"#special_variables\"\n            },\n            {\n              \"include\": \"#c_functions\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"include\": \"#c_functions\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"c_functions\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.support.function.leading.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"support.function.C99.objcpp\"\n            }\n          },\n          \"match\": \"(\\\\s*)\\\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.function-call.leading.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"support.function.any-method.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.objcpp\"\n            }\n          },\n          \"match\": \"(?x) (?: (?= \\\\s )  (?:(?<=else|new|return) | (?<!\\\\w)) (\\\\s+))?\\n            \\t\\t\\t(\\\\b \\n            \\t\\t\\t\\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\\\s*\\\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\\\b | :: )++                  # actual name\\n            \\t\\t\\t)\\n            \\t\\t\\t \\\\s*(\\\\()\",\n          \"name\": \"meta.function-call.objcpp\"\n        }\n      ]\n    },\n    \"c_lang\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#switch_statement\"\n        },\n        {\n          \"match\": \"\\\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\\\b\",\n          \"name\": \"keyword.control.objcpp\"\n        },\n        {\n          \"include\": \"#storage_types\"\n        },\n        {\n          \"match\": \"typedef\",\n          \"name\": \"keyword.other.typedef.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bin\\\\b\",\n          \"name\": \"keyword.other.in.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline|__block)\\\\b\",\n          \"name\": \"storage.modifier.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bk[A-Z]\\\\w*\\\\b\",\n          \"name\": \"constant.other.variable.mac-classic.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bg[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.global.mac-classic.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bs[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.static.mac-classic.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n          \"name\": \"constant.language.objcpp\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#special_variables\"\n        },\n        {\n          \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+\\t# define\\n((?<id>[a-zA-Z_$][\\\\w$]*))\\t  # macro name\\n(?:\\n  (\\\\()\\n\\t(\\n\\t  \\\\s* \\\\g<id> \\\\s*\\t\\t # first argument\\n\\t  ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t  (?:\\\\.\\\\.\\\\.)?\\t\\t\\t# varargs ellipsis?\\n\\t)\\n  (\\\\))\\n)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.define.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.preprocessor.objcpp\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.parameters.objcpp\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.macro.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.diagnostic.$3.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.diagnostic.objcpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"[^'\\\"]\",\n              \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"string.unquoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.$3.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.include.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.objcpp\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.objcpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.line.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.undef.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objcpp\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.pragma.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.pragma.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n              \"name\": \"entity.other.attribute-name.pragma.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n          \"name\": \"support.type.sys-types.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n          \"name\": \"support.type.pthread.objcpp\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n          \"name\": \"support.type.stdint.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\\\b\",\n          \"name\": \"support.constant.mac-classic.objcpp\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\\n\\\\b\",\n          \"name\": \"support.type.mac-classic.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b([A-Za-z0-9_]+_t)\\\\b\",\n          \"name\": \"support.type.posix-reserved.objcpp\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#parens\"\n        },\n        {\n          \"name\": \"meta.function.objcpp\",\n          \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"name\": \"meta.bracket.square.access.objcpp\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.objcpp\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.modifier.array.bracket.square.objcpp\",\n          \"match\": \"\\\\[\\\\s*\\\\]\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.objcpp\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.objcpp\"\n        }\n      ],\n      \"repository\": {\n        \"probably_a_parameter\": {\n          \"match\": \"(?<=(?:[a-zA-Z_0-9] |[&*>\\\\]\\\\)]))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:,|\\\\)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.probably.objcpp\"\n            }\n          }\n        },\n        \"access-method\": {\n          \"name\": \"meta.function-call.member.objcpp\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.object.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objcpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.dot-access.objcpp\"\n                },\n                {\n                  \"match\": \"->\",\n                  \"name\": \"punctuation.separator.pointer-access.objcpp\"\n                },\n                {\n                  \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n                  \"name\": \"variable.object.objcpp\"\n                },\n                {\n                  \"name\": \"everything.else.objcpp\",\n                  \"match\": \".+\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"name\": \"meta.block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"block_innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-enabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-conditional-block\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#c_function_call\"\n            },\n            {\n              \"name\": \"meta.initialization.objcpp\",\n              \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.initialization.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#parens-block\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"c_function_call\": {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)\",\n          \"name\": \"meta.function-call.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"comments\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.block.objcpp\"\n                }\n              },\n              \"match\": \"^/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*/$\\\\n?\",\n              \"name\": \"comment.block.objcpp\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\\*/\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.objcpp\"\n                }\n              },\n              \"name\": \"comment.block.objcpp\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.line.objcpp\"\n                }\n              },\n              \"match\": \"^// =(\\\\s*.*?)\\\\s*=\\\\s*$\\\\n?\",\n              \"name\": \"comment.line.banner.objcpp\"\n            },\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.objcpp\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"//\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\n)\",\n                  \"name\": \"comment.line.double-slash.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"disabled\": {\n          \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n          \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        \"line_continuation_character\": {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\)\\\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.line-continuation.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"parens\": {\n          \"name\": \"meta.parens.objcpp\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"parens-block\": {\n          \"name\": \"meta.parens.block.objcpp\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!:):(?!:))\",\n              \"name\": \"punctuation.range-based.objcpp\"\n            }\n          ]\n        },\n        \"pragma-mark\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.pragma.pragma-mark.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.pragma-mark.objcpp\"\n            }\n          },\n          \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n          \"name\": \"meta.section.objcpp\"\n        },\n        \"operators\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<![\\\\w$])(sizeof)(?![\\\\w$])\",\n              \"name\": \"keyword.operator.sizeof.objcpp\"\n            },\n            {\n              \"match\": \"--\",\n              \"name\": \"keyword.operator.decrement.objcpp\"\n            },\n            {\n              \"match\": \"\\\\+\\\\+\",\n              \"name\": \"keyword.operator.increment.objcpp\"\n            },\n            {\n              \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n              \"name\": \"keyword.operator.assignment.compound.objcpp\"\n            },\n            {\n              \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n              \"name\": \"keyword.operator.assignment.compound.bitwise.objcpp\"\n            },\n            {\n              \"match\": \"<<|>>\",\n              \"name\": \"keyword.operator.bitwise.shift.objcpp\"\n            },\n            {\n              \"match\": \"!=|<=|>=|==|<|>\",\n              \"name\": \"keyword.operator.comparison.objcpp\"\n            },\n            {\n              \"match\": \"&&|!|\\\\|\\\\|\",\n              \"name\": \"keyword.operator.logical.objcpp\"\n            },\n            {\n              \"match\": \"&|\\\\||\\\\^|~\",\n              \"name\": \"keyword.operator.objcpp\"\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"keyword.operator.assignment.objcpp\"\n            },\n            {\n              \"match\": \"%|\\\\*|/|-|\\\\+\",\n              \"name\": \"keyword.operator.objcpp\"\n            },\n            {\n              \"begin\": \"(\\\\?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"end\": \"(:)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            }\n          ]\n        },\n        \"string_escaped_char\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n              \"name\": \"constant.character.escape.objcpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unknown-escape.objcpp\"\n            }\n          ]\n        },\n        \"string_placeholder\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n              \"name\": \"constant.other.placeholder.objcpp\"\n            },\n            {\n              \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.placeholder.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"storage_types\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.primitive.objcpp\"\n            },\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\\\w))\",\n              \"name\": \"storage.type.built-in.objcpp\"\n            },\n            {\n              \"match\": \"(?-mix:\\\\b(asm|__asm__|enum|struct|union)\\\\b)\",\n              \"name\": \"storage.type.$1.objcpp\"\n            }\n          ]\n        },\n        \"vararg_ellipses\": {\n          \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n          \"name\": \"punctuation.vararg-ellipses.objcpp\"\n        },\n        \"preprocessor-rule-conditional\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-line\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            {\n              \"match\": \"\\\\bdefined\\\\b\",\n              \"name\": \"invalid.illegal.macro-name.objcpp\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#numbers\"\n            },\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"match\": \"\\\\b(NULL|true|false|TRUE|FALSE)\\\\b\",\n              \"name\": \"constant.language.objcpp\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objcpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objcpp\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objcpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objcpp\",\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.preprocessor.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.else-branch.in-block.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#block_innards\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-contents\": {\n          \"patterns\": [\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"name\": \"meta.block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\(\",\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n              \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"meta.function.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-blocks\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-define-line-contents\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-functions\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"function-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#vararg_ellipses\"\n            },\n            {\n              \"name\": \"meta.function.definition.parameters.objcpp\",\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"function-call-innards\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#storage_types\"\n            },\n            {\n              \"include\": \"#method_access\"\n            },\n            {\n              \"include\": \"#member_access\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"default_statement\": {\n          \"name\": \"meta.conditional.case.objcpp\",\n          \"begin\": \"((?<!\\\\w)default(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.default.objcpp\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.default.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"case_statement\": {\n          \"name\": \"meta.conditional.case.objcpp\",\n          \"begin\": \"((?<!\\\\w)case(?!\\\\w))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.case.objcpp\"\n            }\n          },\n          \"end\": \"(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.case.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"switch_statement\": {\n          \"name\": \"meta.block.switch.objcpp\",\n          \"begin\": \"(((?<!\\\\w)switch(?!\\\\w)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.head.switch.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.switch.objcpp\"\n            }\n          },\n          \"end\": \"(?:(?<=\\\\})|(?=[;>\\\\[\\\\]=]))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.head.switch.objcpp\",\n              \"begin\": \"\\\\G ?\",\n              \"end\": \"((?:\\\\{|(?=;)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.switch.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#switch_conditional_parentheses\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.body.switch.objcpp\",\n              \"begin\": \"(?<=\\\\{)\",\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.switch.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#default_statement\"\n                },\n                {\n                  \"include\": \"#case_statement\"\n                },\n                {\n                  \"include\": \"$base\"\n                },\n                {\n                  \"include\": \"#block_innards\"\n                }\n              ]\n            },\n            {\n              \"name\": \"meta.tail.switch.objcpp\",\n              \"begin\": \"(?<=})[\\\\s\\\\n]*\",\n              \"end\": \"[\\\\s\\\\n]*(?=;)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"switch_conditional_parentheses\": {\n          \"name\": \"meta.conditional.switch.objcpp\",\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.conditional.switch.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.conditional.switch.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#conditional_context\"\n            }\n          ]\n        },\n        \"static_assert\": {\n          \"begin\": \"(static_assert|_Static_assert)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.static_assert.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"meta.static_assert.message.objcpp\",\n              \"begin\": \"(,)\\\\s*(?=(?:L|u8|u|U\\\\s*\\\\\\\")?)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.delimiter.objcpp\"\n                }\n              },\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_context\"\n                },\n                {\n                  \"include\": \"#string_context_c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#function_call_context\"\n            }\n          ]\n        },\n        \"conditional_context\": {\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            },\n            {\n              \"include\": \"#block_innards\"\n            }\n          ]\n        },\n        \"member_access\": {\n          \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*(\\\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\\\w*\\\\b(?!\\\\())\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objcpp\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objcpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objcpp\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objcpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objcpp\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.objcpp\"\n            }\n          }\n        },\n        \"method_access\": {\n          \"contentName\": \"meta.function-call.member.objcpp\",\n          \"begin\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))((?:[a-zA-Z_]\\\\w*\\\\s*(?-mix:(?:(?:\\\\.\\\\*|\\\\.))|(?:(?:->\\\\*|->)))\\\\s*)*)\\\\s*([a-zA-Z_]\\\\w*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#special_variables\"\n                },\n                {\n                  \"name\": \"variable.other.object.access.objcpp\",\n                  \"match\": \"(.+)\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objcpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#member_access\"\n                },\n                {\n                  \"include\": \"#method_access\"\n                },\n                {\n                  \"match\": \"((?:[a-zA-Z_]\\\\w*|(?<=\\\\]|\\\\)))\\\\s*)(?:((?:\\\\.\\\\*|\\\\.))|((?:->\\\\*|->)))\",\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"include\": \"#special_variables\"\n                        },\n                        {\n                          \"name\": \"variable.other.object.access.objcpp\",\n                          \"match\": \"(.+)\"\n                        }\n                      ]\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.dot-access.objcpp\"\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.separator.pointer-access.objcpp\"\n                    }\n                  }\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards\"\n            }\n          ]\n        },\n        \"numbers\": {\n          \"begin\": \"(?<!\\\\w)(?=\\\\d|\\\\.\\\\d)\",\n          \"end\": \"(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\G0[xX])(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F])))(?:([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.hexadecimal.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.hexadecimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objcpp\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objcpp\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objcpp\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?((?:(?<=[0-9])\\\\.|\\\\.(?=[0-9])))(?:([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*))?(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.numeric.decimal.point.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.numeric.decimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"6\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"8\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objcpp\"\n                },\n                \"9\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objcpp\"\n                },\n                \"10\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objcpp\"\n                },\n                \"11\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"12\": {\n                  \"name\": \"keyword.other.unit.suffix.floating-point.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.binary.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.binary.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.octal.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.octal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.unit.hexadecimal.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.hexadecimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.hexadecimal.objcpp\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.hexadecimal.objcpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.hexadecimal.objcpp\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.hexadecimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(\\\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\\\+)?(\\\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\\\w)))?(?!(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.numeric.decimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"keyword.other.unit.exponent.decimal.objcpp\"\n                },\n                \"6\": {\n                  \"name\": \"keyword.operator.plus.exponent.decimal.objcpp\"\n                },\n                \"7\": {\n                  \"name\": \"keyword.operator.minus.exponent.decimal.objcpp\"\n                },\n                \"8\": {\n                  \"name\": \"constant.numeric.exponent.decimal.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])\",\n                      \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n                    }\n                  ]\n                },\n                \"9\": {\n                  \"name\": \"keyword.other.unit.suffix.integer.objcpp\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?:(?:['0-9a-zA-Z_\\\\.']|(?<=[eEpP])[+-]))+\",\n              \"name\": \"invalid.illegal.constant.numeric.objcpp\"\n            }\n          ]\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.objcpp\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.objcpp\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.objcpp\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.objcpp\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.objcpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n                  \"name\": \"punctuation.separator.continuation.objcpp\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"cpp_lang\": {\n      \"patterns\": [\n        {\n          \"include\": \"#special_block\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"\\\\b(friend|explicit|virtual|override|final|noexcept)\\\\b\",\n          \"name\": \"storage.modifier.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(private:|protected:|public:)\",\n          \"name\": \"storage.type.modifier.access.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(catch|try|throw|using)\\\\b\",\n          \"name\": \"keyword.control.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bdelete\\\\b(\\\\s*\\\\[\\\\])?|\\\\bnew\\\\b(?!])\",\n          \"name\": \"keyword.control.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(f|m)[A-Z]\\\\w*\\\\b\",\n          \"name\": \"variable.other.readwrite.member.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"variable.language.this.objcpp\"\n        },\n        {\n          \"match\": \"\\\\bnullptr\\\\b\",\n          \"name\": \"constant.language.objcpp\"\n        },\n        {\n          \"include\": \"#template_definition\"\n        },\n        {\n          \"match\": \"\\\\btemplate\\\\b\\\\s*\",\n          \"name\": \"storage.type.template.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\\\b\\\\s*\",\n          \"name\": \"keyword.operator.cast.objcpp\"\n        },\n        {\n          \"name\": \"punctuation.separator.namespace.access.objcpp\",\n          \"match\": \"((?:[a-zA-Z_][a-zA-Z_0-9]*::)*)([a-zA-Z_][a-zA-Z_0-9]*)(::)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.scope.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.scope.name.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.access.objcpp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\b\",\n          \"name\": \"keyword.operator.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(decltype|wchar_t|char16_t|char32_t)\\\\b\",\n          \"name\": \"storage.type.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(constexpr|export|mutable|typename|thread_local)\\\\b\",\n          \"name\": \"storage.modifier.objcpp\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\n  ^ |                  # beginning of line\\n  (?:(?<!else|new|=))  # or word + space before name\\n)\\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\\n\\\\s*(\\\\()              # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.objcpp\"\n            }\n          },\n          \"name\": \"meta.function.destructor.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\n  ^ |                  # beginning of line\\n  (?:(?<!else|new|=))  # or word + space before name\\n)\\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\\n\\\\s*(\\\\()              # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.objcpp\"\n            }\n          },\n          \"name\": \"meta.function.destructor.prototype.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#c_lang\"\n        }\n      ],\n      \"repository\": {\n        \"template_definition\": {\n          \"begin\": \"\\\\b(template)\\\\s*(<)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"meta.template.angle-brackets.start.objcpp\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.template.angle-brackets.end.objcpp\"\n            }\n          },\n          \"name\": \"template.definition.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#template_definition_argument\"\n            }\n          ]\n        },\n        \"template_definition_argument\": {\n          \"match\": \"\\\\s*(?:([a-zA-Z_][a-zA-Z_0-9]*\\\\s*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)|([a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(\\\\.\\\\.\\\\.)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(=)\\\\s*(\\\\w+))(,|(?=>))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"5\": {\n              \"name\": \"meta.template.operator.ellipsis.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"9\": {\n              \"name\": \"keyword.operator.assignment.objcpp\"\n            },\n            \"10\": {\n              \"name\": \"constant.language.objcpp\"\n            },\n            \"11\": {\n              \"name\": \"meta.template.operator.comma.objcpp\"\n            }\n          }\n        },\n        \"angle_brackets\": {\n          \"begin\": \"<\",\n          \"end\": \">\",\n          \"name\": \"meta.angle-brackets.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#angle_brackets\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"block\": {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n            }\n          },\n          \"name\": \"meta.block.objcpp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.objcpp\"\n                }\n              },\n              \"match\": \"(?x)\\n(\\n  (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\n  (?:\\\\b[A-Za-z_][A-Za-z0-9_]*+\\\\b|::)*+ # actual name\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"name\": \"meta.function-call.objcpp\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"constructor\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?x)\\n(?:^\\\\s*)  # beginning of line\\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\\n\\\\s*(\\\\()  # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.constructor.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.objcpp\"\n                }\n              },\n              \"name\": \"meta.function.constructor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n(:)\\n(\\n  (?=\\n    \\\\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\\n    \\\\s* (\\\\() # opening bracket\\n  )\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.objcpp\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"name\": \"meta.function.constructor.initializer-list.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"special_block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(using)\\\\b\\\\s*(namespace)\\\\b\\\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\\\b(::)?)*)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"storage.type.namespace.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.objcpp\"\n                }\n              },\n              \"end\": \";\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.terminator.statement.objcpp\"\n                }\n              },\n              \"name\": \"meta.using-namespace-declaration.objcpp\"\n            },\n            {\n              \"begin\": \"\\\\b(namespace)\\\\b\\\\s*([_A-Za-z][_A-Za-z0-9]*\\\\b)?+\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.namespace.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.objcpp\"\n                }\n              },\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.namespace.$2.objcpp\"\n                }\n              },\n              \"end\": \"(?<=\\\\})|(?=(;|,|\\\\(|\\\\)|>|\\\\[|\\\\]|=))\",\n              \"name\": \"meta.namespace-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.scope.objcpp\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.scope.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"#constructor\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(?:(class)|(struct))\\\\b\\\\s*([_A-Za-z][_A-Za-z0-9]*\\\\b)?+(\\\\s*:\\\\s*(public|protected|private)\\\\s*([_A-Za-z][_A-Za-z0-9]*\\\\b)((\\\\s*,\\\\s*(public|protected|private)\\\\s*[_A-Za-z][_A-Za-z0-9]*\\\\b)*))?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"storage.type.struct.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"storage.type.modifier.access.objcpp\"\n                },\n                \"6\": {\n                  \"name\": \"entity.name.type.inherited.objcpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(public|protected|private)\",\n                      \"name\": \"storage.type.modifier.access.objcpp\"\n                    },\n                    {\n                      \"match\": \"[_A-Za-z][_A-Za-z0-9]*\",\n                      \"name\": \"entity.name.type.inherited.objcpp\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"(?<=\\\\})|(?=(;|\\\\(|\\\\)|>|\\\\[|\\\\]|=))\",\n              \"name\": \"meta.class-struct-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angle_brackets\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"end\": \"(\\\\})(\\\\s*\\\\n)?\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"invalid.illegal.you-forgot-semicolon.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"#constructor\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(extern)(?=\\\\s*\\\")\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.objcpp\"\n                }\n              },\n              \"end\": \"(?<=\\\\})|(?=\\\\w)|(?=\\\\s*#\\\\s*endif\\\\b)\",\n              \"name\": \"meta.extern-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"end\": \"\\\\}|(?=\\\\s*#\\\\s*endif\\\\b)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(u|u8|U|L)?\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"meta.encoding.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\u\\\\h{4}|\\\\\\\\U\\\\h{8}\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\[0-7]{1,3}\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\x\\\\h+\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"include\": \"#string_placeholder\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(u|u8|U|L)?R\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"meta.encoding.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.delimiter-too-long.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\\\\2(\\\\3)\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.delimiter-too-long.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.raw.objcpp\"\n            }\n          ]\n        }\n      }\n    },\n    \"cpp_lang_newish\": {\n      \"patterns\": [\n        {\n          \"include\": \"#special_block\"\n        },\n        {\n          \"match\": \"(?-mix:##[a-zA-Z_]\\\\w*(?!\\\\w))\",\n          \"name\": \"variable.other.macro.argument.objcpp\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)((?:inline|constexpr|mutable|friend|explicit|virtual))(?!\\\\w)\",\n          \"name\": \"storage.modifier.specificer.functional.pre-parameters.$1.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)((?:final|override|volatile|const|noexcept))(?!\\\\w)(?=\\\\s*(?:(?:(?:(?:\\\\{|;))|[\\\\n\\\\r])))\",\n          \"name\": \"storage.modifier.specifier.functional.post-parameters.$1.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)((?:const|static|volatile|register|restrict|extern))(?!\\\\w)\",\n          \"name\": \"storage.modifier.specifier.$1.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)((?:private|protected|public)) *:\",\n          \"name\": \"storage.type.modifier.access.control.$1.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(?:throw|try|catch)(?!\\\\w)\",\n          \"name\": \"keyword.control.exception.$1.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)(using|typedef)(?!\\\\w)\",\n          \"name\": \"keyword.other.$1.objcpp\"\n        },\n        {\n          \"include\": \"#memory_operators\"\n        },\n        {\n          \"match\": \"\\\\bthis\\\\b\",\n          \"name\": \"variable.language.this.objcpp\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#template_definition\"\n        },\n        {\n          \"match\": \"\\\\btemplate\\\\b\\\\s*\",\n          \"name\": \"storage.type.template.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\\\b\\\\s*\",\n          \"name\": \"keyword.operator.cast.$1.objcpp\"\n        },\n        {\n          \"include\": \"#scope_resolution\"\n        },\n        {\n          \"match\": \"\\\\b(decltype|wchar_t|char16_t|char32_t)\\\\b\",\n          \"name\": \"storage.type.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(constexpr|export|mutable|typename|thread_local)\\\\b\",\n          \"name\": \"storage.modifier.objcpp\"\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\n  ^ |                  # beginning of line\\n  (?:(?<!else|new|=))  # or word + space before name\\n)\\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\\n\\\\s*(\\\\()              # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.destructor.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.destructor.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.destructor.objcpp\"\n            }\n          },\n          \"name\": \"meta.function.destructor.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(?:\\n  ^ |                  # beginning of line\\n  (?:(?<!else|new|=))  # or word + space before name\\n)\\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\\n\\\\s*(\\\\()              # opening bracket\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.objcpp\"\n            }\n          },\n          \"name\": \"meta.function.destructor.prototype.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#preprocessor-rule-enabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-conditional\"\n        },\n        {\n          \"include\": \"#comments-c\"\n        },\n        {\n          \"match\": \"\\\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\\\b\",\n          \"name\": \"keyword.control.$1.objcpp\"\n        },\n        {\n          \"include\": \"#storage_types_c\"\n        },\n        {\n          \"match\": \"\\\\b(const|extern|register|restrict|static|volatile|inline)\\\\b\",\n          \"name\": \"storage.modifier.objcpp\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#operator_overload\"\n        },\n        {\n          \"include\": \"#number_literal\"\n        },\n        {\n          \"include\": \"#strings-c\"\n        },\n        {\n          \"begin\": \"(?x)\\n^\\\\s* ((\\\\#)\\\\s*define) \\\\s+\\t# define\\n((?<id>[a-zA-Z_$][\\\\w$]*))\\t  # macro name\\n(?:\\n  (\\\\()\\n\\t(\\n\\t  \\\\s* \\\\g<id> \\\\s*\\t\\t # first argument\\n\\t  ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n\\t  (?:\\\\.\\\\.\\\\.)?\\t\\t\\t# varargs ellipsis?\\n\\t)\\n  (\\\\))\\n)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.define.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.parameters.begin.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"variable.parameter.preprocessor.objcpp\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.separator.parameters.objcpp\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.macro.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(error|warning))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.diagnostic.$3.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.diagnostic.objcpp\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"[^'\\\"]\",\n              \"end\": \"(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"string.unquoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#line_continuation_character\"\n                },\n                {\n                  \"include\": \"#comments-c\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*(include(?:_next)?|import))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.$3.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.include.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.include.objcpp\"\n            },\n            {\n              \"begin\": \"<\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \">\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.other.lt-gt.include.objcpp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        },\n        {\n          \"begin\": \"^\\\\s*((#)\\\\s*line)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.line.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings-c\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*undef))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.undef.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.objcpp\",\n          \"patterns\": [\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*(?:((#)\\\\s*pragma))\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.directive.pragma.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=(?://|/\\\\*))|(?<!\\\\\\\\)(?=\\\\n)\",\n          \"name\": \"meta.preprocessor.pragma.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#strings-c\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w\\\\-$]*\",\n              \"name\": \"entity.other.attribute-name.pragma.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\\\b\",\n          \"name\": \"support.type.sys-types.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\\\b\",\n          \"name\": \"support.type.pthread.objcpp\"\n        },\n        {\n          \"match\": \"(?x) \\\\b\\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\\n|uintmax_t|uintmax_t)\\n\\\\b\",\n          \"name\": \"support.type.stdint.objcpp\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)[a-zA-Z_](?:\\\\w)*_t(?!\\\\w)\",\n          \"name\": \"support.type.posix-reserved.objcpp\"\n        },\n        {\n          \"include\": \"#block-c\"\n        },\n        {\n          \"include\": \"#parens-c\"\n        },\n        {\n          \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\\\s*\\\\()(?=[a-zA-Z_]\\\\w*\\\\s*\\\\()\",\n          \"end\": \"(?<=\\\\))\",\n          \"name\": \"meta.function.definition.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-innards-c\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_continuation_character\"\n        },\n        {\n          \"name\": \"meta.bracket.square.access.objcpp\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))?(\\\\[)(?!\\\\])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.begin.bracket.square.objcpp\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.square.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards-c\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.modifier.array.bracket.square.objcpp\",\n          \"match\": \"(?-mix:(?<!delete))\\\\\\\\[\\\\\\\\s*\\\\\\\\]\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement.objcpp\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.objcpp\"\n        }\n      ],\n      \"repository\": {\n        \"literal_numeric_seperator\": {\n          \"match\": \"(?<!')'(?!')\",\n          \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n        },\n        \"number_literal\": {\n          \"match\": \"((?<!\\\\w)(?:(?:(?:(0[xX])(?:([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*))?((?:(?:(?<=[0-9a-fA-F])\\\\.|\\\\.(?=[0-9a-fA-F]))))(?:([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*))?(?:([pP])(\\\\+)?(\\\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?|(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?((?:(?:(?<=[0-9])\\\\.|\\\\.(?=[0-9]))))(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?(?:([eE])(\\\\+)?(\\\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:([lLfF](?!\\\\w)))?|(?:(?:(?:(?:(?:(0[bB])((?:(?:(?:[01]|((?<!')'(?!')))))+)|(0)((?:(?:(?:[0-7]|((?<!')'(?!')))))+)))|(0[xX])([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*)(?:([pP])(\\\\+)?(\\\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?))|([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*)(?:([eE])(\\\\+)?(\\\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:((?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:LL[uU]|ll[uU]))|[uU]LL))|[uU]ll))|ll))|LL))|[uUlL]))(?!\\\\w)))?))(\\\\w*))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"keyword.other.unit.hexadecimal.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.hexadecimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"5\": {\n              \"name\": \"constant.numeric.hexadecimal.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"constant.numeric.hexadecimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"8\": {\n              \"name\": \"keyword.other.unit.exponent.hexadecimal.objcpp\"\n            },\n            \"9\": {\n              \"name\": \"keyword.operator.plus.exponent.hexadecimal.objcpp\"\n            },\n            \"10\": {\n              \"name\": \"keyword.operator.minus.exponent.hexadecimal.objcpp\"\n            },\n            \"11\": {\n              \"name\": \"constant.numeric.exponent.hexadecimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"12\": {\n              \"name\": \"constant.numeric.decimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"13\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"14\": {\n              \"name\": \"constant.numeric.decimal.point.objcpp\"\n            },\n            \"15\": {\n              \"name\": \"constant.numeric.decimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"16\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"17\": {\n              \"name\": \"keyword.other.unit.exponent.decimal.objcpp\"\n            },\n            \"18\": {\n              \"name\": \"keyword.operator.plus.exponent.decimal.objcpp\"\n            },\n            \"19\": {\n              \"name\": \"keyword.operator.minus.exponent.decimal.objcpp\"\n            },\n            \"20\": {\n              \"name\": \"constant.numeric.exponent.decimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"21\": {\n              \"name\": \"keyword.other.unit.suffix.floating-point.objcpp\"\n            },\n            \"22\": {\n              \"name\": \"keyword.other.unit.binary.objcpp\"\n            },\n            \"23\": {\n              \"name\": \"constant.numeric.binary.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"24\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"25\": {\n              \"name\": \"keyword.other.unit.octal.objcpp\"\n            },\n            \"26\": {\n              \"name\": \"constant.numeric.octal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"27\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"28\": {\n              \"name\": \"keyword.other.unit.hexadecimal.objcpp\"\n            },\n            \"29\": {\n              \"name\": \"constant.numeric.hexadecimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"30\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"31\": {\n              \"name\": \"keyword.other.unit.exponent.hexadecimal.objcpp\"\n            },\n            \"32\": {\n              \"name\": \"keyword.operator.plus.exponent.hexadecimal.objcpp\"\n            },\n            \"33\": {\n              \"name\": \"keyword.operator.minus.exponent.hexadecimal.objcpp\"\n            },\n            \"34\": {\n              \"name\": \"constant.numeric.exponent.hexadecimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"35\": {\n              \"name\": \"constant.numeric.decimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"36\": {\n              \"name\": \"punctuation.separator.constant.numeric.objcpp\"\n            },\n            \"37\": {\n              \"name\": \"keyword.other.unit.exponent.decimal.objcpp\"\n            },\n            \"38\": {\n              \"name\": \"keyword.operator.plus.exponent.decimal.objcpp\"\n            },\n            \"39\": {\n              \"name\": \"keyword.operator.minus.exponent.decimal.objcpp\"\n            },\n            \"40\": {\n              \"name\": \"constant.numeric.exponent.decimal.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literal_numeric_seperator\"\n                }\n              ]\n            },\n            \"41\": {\n              \"name\": \"keyword.other.unit.suffix.integer.objcpp\"\n            },\n            \"42\": {\n              \"name\": \"keyword.other.unit.user-defined.objcpp\"\n            }\n          }\n        },\n        \"constants\": {\n          \"match\": \"(?<!\\\\w)(?:NULL|true|false|nullptr)(?!\\\\w)\",\n          \"name\": \"constant.language.objcpp\"\n        },\n        \"storage_types_c\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?<!\\\\w)(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t)(?!\\\\w)\",\n              \"name\": \"storage.type.primitive.objcpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(?:u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)(?!\\\\w)\",\n              \"name\": \"storage.type.objcpp\"\n            },\n            {\n              \"match\": \"(?<!\\\\w)(asm|__asm__|enum|union|struct)(?!\\\\w)\",\n              \"name\": \"storage.type.$1.objcpp\"\n            }\n          ]\n        },\n        \"memory_operators\": {\n          \"match\": \"(?<!\\\\w)(?:(?:(delete)\\\\s*(\\\\[\\\\])|(delete))|(new))(?!\\\\w)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.memory.delete.array.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.memory.delete.array.bracket.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.memory.delete.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.memory.new.objcpp\"\n            }\n          },\n          \"name\": \"keyword.operator.memory.objcpp\"\n        },\n        \"template_call_innards\": {\n          \"match\": \"<(?:[\\\\s<>,\\\\w])*>\\\\s*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.template.call.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#storage_types_c\"\n                },\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"include\": \"#scope_resolution\"\n                },\n                {\n                  \"match\": \"(?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w)\",\n                  \"name\": \"storage.type.user-defined.objcpp\"\n                },\n                {\n                  \"include\": \"#operators\"\n                },\n                {\n                  \"include\": \"#number_literal\"\n                },\n                {\n                  \"include\": \"#strings\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.comma.template.argument.objcpp\"\n                }\n              ]\n            }\n          }\n        },\n        \"template_definition\": {\n          \"name\": \"meta.template.definition.objcpp\",\n          \"begin\": \"(?-mix:(?<!\\\\w)(template)\\\\s*(<))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.angle-brackets.start.template.definition.objcpp\"\n            }\n          },\n          \"end\": \"(?-mix:(>))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.angle-brackets.end.template.definition.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#scope_resolution\"\n            },\n            {\n              \"include\": \"#template_definition_argument\"\n            },\n            {\n              \"include\": \"#template_call_innards\"\n            }\n          ]\n        },\n        \"template_definition_argument\": {\n          \"match\": \"((?:(?:(?:(?:(?:(?:\\\\s*([a-zA-Z_]\\\\w*)|((?:[a-zA-Z_]\\\\w*\\\\s+)+)([a-zA-Z_]\\\\w*)))|([a-zA-Z_]\\\\w*)\\\\s*(\\\\.\\\\.\\\\.)\\\\s*([a-zA-Z_]\\\\w*)))|((?:[a-zA-Z_]\\\\w*\\\\s+)*)([a-zA-Z_]\\\\w*)\\\\s*([=])\\\\s*(\\\\w+)))\\\\s*(?:(?:(,)|(?=>))))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"storage.type.template.argument.$1.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.template.argument.$2.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.ellipsis.template.definition.objcpp\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"8\": {\n              \"name\": \"storage.type.template.objcpp\"\n            },\n            \"9\": {\n              \"name\": \"entity.name.type.template.objcpp\"\n            },\n            \"10\": {\n              \"name\": \"keyword.operator.assignment.objcpp\"\n            },\n            \"11\": {\n              \"name\": \"constant.other.objcpp\"\n            },\n            \"12\": {\n              \"name\": \"punctuation.separator.comma.template.argument.objcpp\"\n            }\n          }\n        },\n        \"scope_resolution\": {\n          \"match\": \"((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*\\\\s*)([a-zA-Z_]\\\\w*)\\\\s*((?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?(::)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#scope_resolution\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"entity.name.namespace.scope-resolution.objcpp\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#template_call_innards\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.namespace.access.objcpp\"\n            }\n          },\n          \"name\": \"meta.scope-resolution.objcpp\"\n        },\n        \"angle_brackets\": {\n          \"begin\": \"<\",\n          \"end\": \">\",\n          \"name\": \"meta.angle-brackets.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#angle_brackets\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"block\": {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n            }\n          },\n          \"name\": \"meta.block.objcpp\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.objcpp\"\n                }\n              },\n              \"match\": \"(?x)\\n(\\n  (?!while|for|do|if|else|switch|catch|return)\\n  (?:\\\\b[A-Za-z_][A-Za-z0-9_]*+\\\\b|::)*+ # actual name\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"name\": \"meta.function-call.objcpp\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"constructor\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(?x)\\n(?:^\\\\s*)  # beginning of line\\n((?!while|for|do|if|else|switch|catch)[A-Za-z_][A-Za-z0-9_:]*) # actual name\\n\\\\s*(\\\\()  # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.constructor.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.constructor.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.constructor.objcpp\"\n                }\n              },\n              \"name\": \"meta.function.constructor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?x)\\n(:)\\n(\\n  (?=\\n    \\\\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\\n    \\\\s* (\\\\() # opening bracket\\n  )\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.initializer-list.parameters.objcpp\"\n                }\n              },\n              \"end\": \"(?=\\\\{)\",\n              \"name\": \"meta.function.constructor.initializer-list.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"special_block\": {\n          \"patterns\": [\n            {\n              \"comment\": \"https://en.cppreference.com/w/cpp/language/namespace\",\n              \"begin\": \"\\\\b(using)\\\\s+(namespace)\\\\s+(?:((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*)\\\\s*)?((?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))(?=;|\\\\n)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.using.directive.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.namespace.directive.objcpp storage.type.namespace.directive.objcpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#scope_resolution\"\n                    }\n                  ]\n                },\n                \"4\": {\n                  \"name\": \"entity.name.namespace.objcpp\"\n                }\n              },\n              \"end\": \";\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.terminator.statement.objcpp\"\n                }\n              },\n              \"name\": \"meta.using-namespace-declaration.objcpp\"\n            },\n            {\n              \"begin\": \"(?<!\\\\w)(namespace)\\\\s+(?:(?:((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*[a-zA-Z_]\\\\w*)|(?={)))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.namespace.definition.objcpp storage.type.namespace.definition.objcpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?-mix:(?<!\\\\w)[a-zA-Z_]\\\\w*(?!\\\\w))\",\n                      \"name\": \"entity.name.type.objcpp\"\n                    },\n                    {\n                      \"match\": \"::\",\n                      \"name\": \"punctuation.separator.namespace.access.objcpp\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"(?<=\\\\})|(?=(;|,|\\\\(|\\\\)|>|\\\\[|\\\\]|=))\",\n              \"name\": \"meta.namespace-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.scope.objcpp\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.scope.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"#constructor\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(?:(class)|(struct))\\\\b\\\\s*([_A-Za-z][_A-Za-z0-9]*\\\\b)?+(\\\\s*:\\\\s*(public|protected|private)\\\\s*([_A-Za-z][_A-Za-z0-9]*\\\\b)((\\\\s*,\\\\s*(public|protected|private)\\\\s*[_A-Za-z][_A-Za-z0-9]*\\\\b)*))?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.class.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"storage.type.struct.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.objcpp\"\n                },\n                \"5\": {\n                  \"name\": \"storage.type.modifier.access.objcpp\"\n                },\n                \"6\": {\n                  \"name\": \"entity.name.type.inherited.objcpp\"\n                },\n                \"7\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"(public|protected|private)\",\n                      \"name\": \"storage.type.modifier.access.objcpp\"\n                    },\n                    {\n                      \"match\": \"[_A-Za-z][_A-Za-z0-9]*\",\n                      \"name\": \"entity.name.type.inherited.objcpp\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"(?<=\\\\})|(;)|(?=(\\\\(|\\\\)|>|\\\\[|\\\\]|=))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.terminator.statement.objcpp\"\n                }\n              },\n              \"name\": \"meta.class-struct-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angle_brackets\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"end\": \"(\\\\})(\\\\s*\\\\n)?\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"invalid.illegal.you-forgot-semicolon.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"#constructor\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(extern)(?=\\\\s*\\\")\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.objcpp\"\n                }\n              },\n              \"end\": \"(?<=\\\\})|(?=\\\\w)|(?=\\\\s*#\\\\s*endif\\\\b)\",\n              \"name\": \"meta.extern-block.objcpp\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"end\": \"\\\\}|(?=\\\\s*#\\\\s*endif\\\\b)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#special_block\"\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings\": {\n          \"patterns\": [\n            {\n              \"begin\": \"(u|u8|U|L)?\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"meta.encoding.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\u\\\\h{4}|\\\\\\\\U\\\\h{8}\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\['\\\"?\\\\\\\\abfnrtv]\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\[0-7]{1,3}\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"match\": \"\\\\\\\\x\\\\h+\",\n                  \"name\": \"constant.character.escape.objcpp\"\n                },\n                {\n                  \"include\": \"#string_placeholder-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(u|u8|U|L)?R\\\"(?:([^ ()\\\\\\\\\\\\t]{0,16})|([^ ()\\\\\\\\\\\\t]*))\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"meta.encoding.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.delimiter-too-long.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\\\\2(\\\\3)\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.delimiter-too-long.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.raw.objcpp\"\n            }\n          ]\n        },\n        \"probably_a_parameter\": {\n          \"match\": \"(?:(?:([a-zA-Z_]\\\\w*)\\\\s*(?==)|(?<=\\\\w\\\\s|\\\\*\\\\/|[&*>\\\\]\\\\)])\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?=(?:\\\\[\\\\]\\\\s*)?(?:(?:,|\\\\))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.probably.defaulted.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.probably.objcpp\"\n            }\n          }\n        },\n        \"operator_overload\": {\n          \"begin\": \"((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*)\\\\s*(operator)((?:(?:\\\\s*(?:\\\\+\\\\+|\\\\-\\\\-|\\\\(\\\\)|\\\\[\\\\]|\\\\->|\\\\+\\\\+|\\\\-\\\\-|\\\\+|\\\\-|!|~|\\\\*|&|\\\\->\\\\*|\\\\*|\\\\/|%|\\\\+|\\\\-|<<|>>|<=>|<|<=|>|>=|==|!=|&|\\\\^|\\\\||&&|\\\\|\\\\||=|\\\\+=|\\\\-=|\\\\*=|\\\\/=|%=|<<=|>>=|&=|\\\\^=|\\\\|=|,)|\\\\s+(?:(?:(?:new|new\\\\[\\\\]|delete|delete\\\\[\\\\])|(?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*[a-zA-Z_]\\\\w*\\\\s*(?:&)?)))))\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.scope.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.operator.overload.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.operator.overloadee.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.parameters.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parameters.end.bracket.round.objcpp\"\n            }\n          },\n          \"name\": \"meta.function.definition.parameters.operator-overload.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#probably_a_parameter\"\n            },\n            {\n              \"include\": \"#function-innards-c\"\n            }\n          ]\n        },\n        \"access-method\": {\n          \"name\": \"meta.function-call.member.objcpp\",\n          \"begin\": \"([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\\\]\\\\)]))\\\\s*(?:(\\\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\\\s*(?:(?:\\\\.)|(?:->)))*)\\\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objcpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.dot-access.objcpp\"\n                },\n                {\n                  \"match\": \"->\",\n                  \"name\": \"punctuation.separator.pointer-access.objcpp\"\n                },\n                {\n                  \"match\": \"[a-zA-Z_][a-zA-Z_0-9]*\",\n                  \"name\": \"variable.other.object.objcpp\"\n                },\n                {\n                  \"name\": \"everything.else.objcpp\",\n                  \"match\": \".+\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.member.objcpp\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.arguments.begin.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.arguments.end.bracket.round.function.member.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards-c\"\n            }\n          ]\n        },\n        \"access-member\": {\n          \"name\": \"variable.other.object.access.objcpp\",\n          \"match\": \"(?:(?:([a-zA-Z_]\\\\w*)|(?<=\\\\]|\\\\))))\\\\s*(?:(?:((?:(?:\\\\.|\\\\.\\\\*)))|((?:(?:->|->\\\\*)))))\\\\s*((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:\\\\.|->))\\\\s*)*)\\\\b(?!(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t))([a-zA-Z_]\\\\w*)\\\\b(?!\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.object.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.dot-access.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.pointer-access.objcpp\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.dot-access.objcpp\"\n                },\n                {\n                  \"match\": \"->\",\n                  \"name\": \"punctuation.separator.pointer-access.objcpp\"\n                },\n                {\n                  \"match\": \"[a-zA-Z_]\\\\w*\",\n                  \"name\": \"variable.other.object.objcpp\"\n                },\n                {\n                  \"match\": \".+\",\n                  \"name\": \"everything.else.objcpp\"\n                }\n              ]\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.objcpp\"\n            }\n          }\n        },\n        \"block-c\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"name\": \"meta.block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards-c\"\n                }\n              ]\n            }\n          ]\n        },\n        \"block_innards-c\": {\n          \"patterns\": [\n            {\n              \"include\": \"#preprocessor-rule-enabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-disabled-block\"\n            },\n            {\n              \"include\": \"#preprocessor-rule-conditional-block\"\n            },\n            {\n              \"include\": \"#access-method\"\n            },\n            {\n              \"include\": \"#access-member\"\n            },\n            {\n              \"include\": \"#c_function_call\"\n            },\n            {\n              \"name\": \"meta.initialization.objcpp\",\n              \"begin\": \"(?x)\\n(?:\\n  (?:\\n\\t(?=\\\\s)(?<!else|new|return)\\n\\t(?<=\\\\w) \\\\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)  # or word + space before name\\n  )\\n)\\n(\\n  (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++   # actual name\\n  |\\n  (?:(?<=operator) (?:[-*&<>=+!]+ | \\\\(\\\\) | \\\\[\\\\]))\\n)\\n\\\\s*(\\\\() # opening bracket\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.initialization.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.initialization.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#block_innards-c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#parens-block-c\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"c_function_call\": {\n          \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(?=\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?\\\\(  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n          \"end\": \"(?<=\\\\))(?!\\\\w)\",\n          \"name\": \"meta.function-call.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-call-innards-c\"\n            }\n          ]\n        },\n        \"comments-c\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.block.objcpp\"\n                }\n              },\n              \"match\": \"^/\\\\* =(\\\\s*.*?)\\\\s*= \\\\*/$\\\\n?\",\n              \"name\": \"comment.block.objcpp\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\\*/\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.end.objcpp\"\n                }\n              },\n              \"name\": \"comment.block.objcpp\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.toc-list.banner.line.objcpp\"\n                }\n              },\n              \"match\": \"^// =(\\\\s*.*?)\\\\s*=\\\\s*$\\\\n?\",\n              \"name\": \"comment.line.banner.objcpp\"\n            },\n            {\n              \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.objcpp\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"//\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\n)\",\n                  \"name\": \"comment.line.double-slash.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#line_continuation_character\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"disabled\": {\n          \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n          \"end\": \"^\\\\s*#\\\\s*endif\\\\b\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        \"line_continuation_character\": {\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\)\\\\n\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.escape.line-continuation.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"parens-c\": {\n          \"name\": \"punctuation.section.parens-c\\b.objcpp\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"parens-block-c\": {\n          \"name\": \"meta.block.parens.objcpp\",\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards-c\"\n            },\n            {\n              \"match\": \"(?<!:):(?!:)\",\n              \"name\": \"punctuation.range-based.objcpp\"\n            }\n          ]\n        },\n        \"pragma-mark\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.pragma.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.directive.pragma.pragma-mark.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.pragma-mark.objcpp\"\n            }\n          },\n          \"match\": \"^\\\\s*(((#)\\\\s*pragma\\\\s+mark)\\\\s+(.*))\",\n          \"name\": \"meta.section.objcpp\"\n        },\n        \"operators\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?-mix:(?<!\\\\w)((?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept))(?!\\\\w))\",\n              \"name\": \"keyword.operator.$1.objcpp\"\n            },\n            {\n              \"match\": \"--\",\n              \"name\": \"keyword.operator.decrement.objcpp\"\n            },\n            {\n              \"match\": \"\\\\+\\\\+\",\n              \"name\": \"keyword.operator.increment.objcpp\"\n            },\n            {\n              \"match\": \"%=|\\\\+=|-=|\\\\*=|(?<!\\\\()/=\",\n              \"name\": \"keyword.operator.assignment.compound.objcpp\"\n            },\n            {\n              \"match\": \"&=|\\\\^=|<<=|>>=|\\\\|=\",\n              \"name\": \"keyword.operator.assignment.compound.bitwise.objcpp\"\n            },\n            {\n              \"match\": \"<<|>>\",\n              \"name\": \"keyword.operator.bitwise.shift.objcpp\"\n            },\n            {\n              \"match\": \"!=|<=|>=|==|<|>\",\n              \"name\": \"keyword.operator.comparison.objcpp\"\n            },\n            {\n              \"match\": \"&&|!|\\\\|\\\\|\",\n              \"name\": \"keyword.operator.logical.objcpp\"\n            },\n            {\n              \"match\": \"&|\\\\||\\\\^|~\",\n              \"name\": \"keyword.operator.objcpp\"\n            },\n            {\n              \"match\": \"=\",\n              \"name\": \"keyword.operator.assignment.objcpp\"\n            },\n            {\n              \"match\": \"%|\\\\*|/|-|\\\\+\",\n              \"name\": \"keyword.operator.objcpp\"\n            },\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"end\": \":\",\n              \"applyEndPatternLast\": true,\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#access-method\"\n                },\n                {\n                  \"include\": \"#access-member\"\n                },\n                {\n                  \"include\": \"#c_function_call\"\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"strings-c\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char-c\"\n                },\n                {\n                  \"include\": \"#string_placeholder-c\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?-mix:(?<![\\\\da-fA-F])')\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char-c\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            }\n          ]\n        },\n        \"string_escaped_char-c\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n              \"name\": \"constant.character.escape.objcpp\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unknown-escape.objcpp\"\n            }\n          ]\n        },\n        \"string_placeholder-c\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n              \"name\": \"constant.other.placeholder.objcpp\"\n            }\n          ]\n        },\n        \"vararg_ellipses-c\": {\n          \"match\": \"(?<!\\\\.)\\\\.\\\\.\\\\.(?!\\\\.)\",\n          \"name\": \"punctuation.vararg-ellipses.objcpp\"\n        },\n        \"preprocessor-rule-conditional\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if(?:n?def)?\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards-c\"\n                }\n              ]\n            },\n            {\n              \"match\": \"^\\\\s*#\\\\s*(else|elif|endif)\\\\b\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.stray-$1.objcpp\"\n                }\n              }\n            }\n          ]\n        },\n        \"preprocessor-rule-conditional-line\": {\n          \"patterns\": [\n            {\n              \"match\": \"(?:\\\\bdefined\\\\b\\\\s*$)|(?:\\\\bdefined\\\\b(?=\\\\s*\\\\(*\\\\s*(?:(?!defined\\\\b)[a-zA-Z_$][\\\\w$]*\\\\b)\\\\s*\\\\)*\\\\s*(?:\\\\n|//|/\\\\*|\\\\?|\\\\:|&&|\\\\|\\\\||\\\\\\\\\\\\s*\\\\n)))\",\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            {\n              \"match\": \"\\\\bdefined\\\\b\",\n              \"name\": \"invalid.illegal.macro-name.objcpp\"\n            },\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"include\": \"#strings-c\"\n            },\n            {\n              \"include\": \"#number_literal\"\n            },\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"match\": \"[a-zA-Z_$][\\\\w$]*\",\n              \"name\": \"entity.name.function.preprocessor.objcpp\"\n            },\n            {\n              \"include\": \"#line_continuation_character\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)|(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments-c\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objcpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments-c\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-elif-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-enabled-else-block\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-disabled-elif\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                      \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n                      \"name\": \"meta.preprocessor.objcpp\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#preprocessor-rule-conditional-line\"\n                        }\n                      ]\n                    },\n                    {\n                      \"include\": \"#block_innards-c\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-disabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0+\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*(?:elif|else|endif)\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n              \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#disabled\"\n                },\n                {\n                  \"include\": \"#pragma-mark\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.numeric.preprocessor.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments-c\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.else-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.if-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$base\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-block\": {\n          \"patterns\": [\n            {\n              \"begin\": \"^\\\\s*((#)\\\\s*if\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"end\": \"^\\\\s*((#)\\\\s*endif\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.preprocessor.objcpp\"\n                },\n                \"1\": {\n                  \"name\": \"keyword.control.directive.conditional.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.directive.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n                  \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?=\\\\n)\",\n                  \"name\": \"meta.preprocessor.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#preprocessor-rule-conditional-line\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#comments-c\"\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.else-branch.in-block.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.if-branch.in-block.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\n\",\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#block_innards-c\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$base\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-elif-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*elif\\\\b)(?=\\\\s*\\\\(*\\\\b0*1\\\\b\\\\)*\\\\s*(?:$|//|/\\\\*))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=.)(?!//|/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))\",\n              \"end\": \"(?=//)|(?=/\\\\*(?!.*\\\\\\\\\\\\s*\\\\n))|(?<!\\\\\\\\)(?=\\\\n)\",\n              \"name\": \"meta.preprocessor.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-conditional-line\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"begin\": \"\\\\n\",\n              \"end\": \"(?=^\\\\s*((#)\\\\s*(?:endif)\\\\b))\",\n              \"patterns\": [\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*(else)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.in-block.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"^\\\\s*((#)\\\\s*(elif)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.preprocessor.objcpp\"\n                    },\n                    \"1\": {\n                      \"name\": \"keyword.control.directive.conditional.objcpp\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.directive.objcpp\"\n                    }\n                  },\n                  \"end\": \"(?=^\\\\s*((#)\\\\s*(?:else|elif|endif)\\\\b))\",\n                  \"contentName\": \"comment.block.preprocessor.elif-branch.objcpp\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#disabled\"\n                    },\n                    {\n                      \"include\": \"#pragma-mark\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#block_innards-c\"\n                }\n              ]\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-enabled-else-block\": {\n          \"begin\": \"^\\\\s*((#)\\\\s*else\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.directive.conditional.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.directive.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*((#)\\\\s*endif\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#block_innards-c\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-contents\": {\n          \"patterns\": [\n            {\n              \"include\": \"#vararg_ellipses-c\"\n            },\n            {\n              \"match\": \"(?-mix:##?[a-zA-Z_]\\\\w*(?!\\\\w))\",\n              \"name\": \"variable.other.macro.argument.objcpp\"\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"name\": \"meta.block.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\(\",\n              \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\\\s*\\\\()\\n(?=\\n  (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\\\s*\\\\(  # actual name\\n  |\\n  (?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\\\s*\\\\(\\n)\",\n              \"end\": \"(?<=\\\\))(?!\\\\w)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"name\": \"meta.function.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"\\\"|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.double.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char-c\"\n                },\n                {\n                  \"include\": \"#string_placeholder-c\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"'\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.objcpp\"\n                }\n              },\n              \"end\": \"'|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.objcpp\"\n                }\n              },\n              \"name\": \"string.quoted.single.objcpp\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string_escaped_char-c\"\n                },\n                {\n                  \"include\": \"#line_continuation_character\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#access-method\"\n            },\n            {\n              \"include\": \"#access-member\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-blocks\": {\n          \"patterns\": [\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.begin.bracket.curly.objcpp\"\n                }\n              },\n              \"end\": \"}|(?=\\\\s*#\\\\s*(?:elif|else|endif)\\\\b)|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.block.end.bracket.curly.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-blocks\"\n                },\n                {\n                  \"include\": \"#preprocessor-rule-define-line-contents\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"preprocessor-rule-define-line-functions\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"include\": \"#storage_types_c\"\n            },\n            {\n              \"include\": \"#vararg_ellipses-c\"\n            },\n            {\n              \"include\": \"#access-method\"\n            },\n            {\n              \"include\": \"#access-member\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++  # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"(\\\\))|(?<!\\\\\\\\)(?=\\\\s*\\\\n)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#preprocessor-rule-define-line-functions\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#preprocessor-rule-define-line-contents\"\n            }\n          ]\n        },\n        \"function-innards-c\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"include\": \"#storage_types_c\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#vararg_ellipses-c\"\n            },\n            {\n              \"name\": \"meta.function.definition.parameters.objcpp\",\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.objcpp\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.section.parameters.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)|:\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parameters.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#probably_a_parameter\"\n                },\n                {\n                  \"include\": \"#function-innards-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-innards-c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        \"function-call-innards-c\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments-c\"\n            },\n            {\n              \"include\": \"#storage_types_c\"\n            },\n            {\n              \"include\": \"#access-method\"\n            },\n            {\n              \"include\": \"#access-member\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"begin\": \"(?x)\\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\\\s*\\\\()\\n(\\n(?:new)\\\\s*((?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?) # actual name\\n|\\n(?:(?<=operator)(?:[-*&<>=+!]+|\\\\(\\\\)|\\\\[\\\\]))\\n)\\n\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.memory.new.objcpp\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_innards\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<!\\\\w)(?!\\\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\\\s*\\\\()((?:[a-zA-Z_]\\\\w*\\\\s*(?:(?:<(?:[\\\\s<>,\\\\w])*>\\\\s*))?::)*)\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(?:((?:<(?:[\\\\s<>,\\\\w])*>\\\\s*)))?(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#scope_resolution\"\n                    }\n                  ]\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.call.objcpp\"\n                },\n                \"3\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#template_call_innards\"\n                    }\n                  ]\n                },\n                \"4\": {\n                  \"name\": \"punctuation.section.arguments.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.arguments.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards-c\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.begin.bracket.round.objcpp\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.parens.end.bracket.round.objcpp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-innards-c\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#block_innards-c\"\n            }\n          ]\n        }\n      }\n    },\n    \"disabled\": {\n      \"begin\": \"^\\\\s*#\\\\s*if(n?def)?\\\\b.*$\",\n      \"comment\": \"eat nested preprocessor if(def)s\",\n      \"end\": \"^\\\\s*#\\\\s*endif\\\\b.*$\",\n      \"patterns\": [\n        {\n          \"include\": \"#disabled\"\n        },\n        {\n          \"include\": \"#pragma-mark\"\n        }\n      ]\n    },\n    \"implementation_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-implementation\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-implementation\"\n        },\n        {\n          \"include\": \"#property_directive\"\n        },\n        {\n          \"include\": \"#method_super\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"interface_innards\": {\n      \"patterns\": [\n        {\n          \"include\": \"#preprocessor-rule-enabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-disabled-interface\"\n        },\n        {\n          \"include\": \"#preprocessor-rule-other-interface\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"#protocol_list\"\n        },\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"method\": {\n      \"begin\": \"^(-|\\\\+)\\\\s*\",\n      \"end\": \"(?=\\\\{|#)|;\",\n      \"name\": \"meta.function.objcpp\",\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.begin.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.objcpp\"\n            }\n          },\n          \"name\": \"meta.return-type.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b\\\\w+(?=:)\",\n          \"name\": \"entity.name.function.name-of-parameter.objcpp\"\n        },\n        {\n          \"begin\": \"((:))\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.name-of-parameter.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.arguments.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.type.begin.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\\\\s*(\\\\w+\\\\b)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.type.end.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.function.objcpp\"\n            }\n          },\n          \"name\": \"meta.argument-type.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#protocol_list\"\n            },\n            {\n              \"include\": \"#protocol_type_qualifier\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"method_super\": {\n      \"begin\": \"^(?=-|\\\\+)\",\n      \"end\": \"(?<=\\\\})|(?=#)\",\n      \"name\": \"meta.function-with-body.objcpp\",\n      \"patterns\": [\n        {\n          \"include\": \"#method\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    \"pragma-mark\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.pragma.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"meta.toc-list.pragma-mark.objcpp\"\n        }\n      },\n      \"match\": \"^\\\\s*(#\\\\s*(pragma\\\\s+mark)\\\\s+(.*))\",\n      \"name\": \"meta.section.objcpp\"\n    },\n    \"preprocessor-rule-disabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-disabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0)\\\\b).*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objcpp\"\n            }\n          },\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"name\": \"comment.block.preprocessor.if-branch.objcpp\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-implementation\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objcpp\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objcpp\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#implementation_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-enabled-interface\": {\n      \"begin\": \"^\\\\s*(#(if)\\\\s+(0*1)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.if.objcpp\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.preprocessor.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#\\\\s*(else)\\\\b).*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.preprocessor.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.import.else.objcpp\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.else-branch.objcpp\",\n          \"end\": \"(?=^\\\\s*#\\\\s*endif\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#disabled\"\n            },\n            {\n              \"include\": \"#pragma-mark\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\",\n          \"end\": \"(?=^\\\\s*#\\\\s*(else|endif)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface_innards\"\n            }\n          ]\n        }\n      ]\n    },\n    \"preprocessor-rule-other-implementation\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#implementation_innards\"\n        }\n      ]\n    },\n    \"preprocessor-rule-other-interface\": {\n      \"begin\": \"^\\\\s*(#\\\\s*(if(n?def)?)\\\\b.*?(?:(?=(?://|/\\\\*))|$))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.preprocessor.objcpp\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.objcpp\"\n        }\n      },\n      \"end\": \"^\\\\s*(#\\\\s*(endif)\\\\b).*?(?:(?=(?://|/\\\\*))|$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#interface_innards\"\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)property)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objcpp\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.scope.begin.objcpp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.scope.end.objcpp\"\n            }\n          },\n          \"name\": \"meta.property-with-attributes.objcpp\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\\\b\",\n              \"name\": \"keyword.other.property.attribute.objcpp\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.property.objcpp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.objcpp\"\n            }\n          },\n          \"match\": \"((@)property)\\\\b\",\n          \"name\": \"meta.property.objcpp\"\n        }\n      ]\n    },\n    \"property_directive\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.objcpp\"\n        }\n      },\n      \"match\": \"(@)(dynamic|synthesize)\\\\b\",\n      \"name\": \"keyword.other.property.directive.objcpp\"\n    },\n    \"protocol_list\": {\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.objcpp\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.end.objcpp\"\n        }\n      },\n      \"name\": \"meta.protocol-list.objcpp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\\\b\",\n          \"name\": \"support.other.protocol.objcpp\"\n        }\n      ]\n    },\n    \"protocol_type_qualifier\": {\n      \"match\": \"\\\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\\\b\",\n      \"name\": \"storage.modifier.protocol.objcpp\"\n    },\n    \"special_variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b_cmd\\\\b\",\n          \"name\": \"variable.other.selector.objcpp\"\n        },\n        {\n          \"match\": \"\\\\b(self|super)\\\\b\",\n          \"name\": \"variable.language.objcpp\"\n        }\n      ]\n    },\n    \"string_escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\\\\\\\ (\\n\\\\\\\\\\t\\t\\t |\\n[abefnprtv'\\\"?]   |\\n[0-3]\\\\d{,2}\\t |\\n[4-7]\\\\d?\\t\\t|\\nx[a-fA-F0-9]{,2} |\\nu[a-fA-F0-9]{,4} |\\nU[a-fA-F0-9]{,8} )\",\n          \"name\": \"constant.character.escape.objcpp\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unknown-escape.objcpp\"\n        }\n      ]\n    },\n    \"string_placeholder\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x) %\\n(\\\\d+\\\\$)?\\t\\t\\t\\t\\t\\t   # field (argument #)\\n[#0\\\\- +']*\\t\\t\\t\\t\\t\\t  # flags\\n[,;:_]?\\t\\t\\t\\t\\t\\t\\t  # separator character (AltiVec)\\n((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?\\t\\t  # minimum field width\\n(\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?\\t# precision\\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n[diouxXDOUeEfFgGaACcSspn%]\\t\\t   # conversion type\",\n          \"name\": \"constant.other.placeholder.objcpp\"\n        },\n        {\n          \"match\": \"(%)(?!\\\"\\\\s*(PRI|SCN))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.placeholder.objcpp\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ocaml.tmLanguage.json",
    "content": "{\n  \"name\": \"ocaml\",\n  \"scopeName\": \"source.ocaml\",\n  \"fileTypes\": [\".ml\", \".mli\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#pragma\"\n    },\n    {\n      \"include\": \"#decl\"\n    }\n  ],\n  \"repository\": {\n    \"attribute\": {\n      \"begin\": \"(\\\\[)[[:space:]]*((?<![#\\\\-:!?.@*/&%^+<=>|~$])@{1,3}(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributePayload\"\n        }\n      ]\n    },\n    \"attributeIdentifier\": {\n      \"match\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])%(?![#\\\\-:!?.@*/&%^+<=>|~$]))((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      }\n    },\n    \"attributePayload\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]%|^%))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])[:\\\\?](?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<=[[:space:]])|(?=\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pathModuleExtended\"\n            },\n            {\n              \"include\": \"#pathRecord\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=\\\\])\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=\\\\])|\\\\bwhen\\\\b\",\n              \"endCaptures\": {\n                \"1\": {}\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]when|^when))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"bindClassTerm\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\\\btype\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindClassType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\\\btype\\\\b)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"end\": \"\\\\]\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#literalClassType\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindConstructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]exception|^exception))(?![[:word:]]))|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\+=|^\\\\+=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\||^\\\\|))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(:)|(\\\\bof\\\\b)|((?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.tag\"\n            },\n            \"3\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\",\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            {\n              \"match\": \"\\\\b(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\\\\b(?![[:space:]]*(?:\\\\.|\\\\([^\\\\*]))\",\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindSignature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModuleExtended\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindStructure\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and))(?![[:word:]]))|(?=[[:upper:]])\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:(?!=))|(:?=)(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"\\\\bmodule\\\\b\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            {\n              \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"entity.name.function strong emphasis\"\n            },\n            {\n              \"begin\": \"\\\\((?!\\\\))\",\n              \"end\": \"\\\\)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n                  \"end\": \"(?=\\\\))\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#signature\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#literalUnit\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\b(and)\\\\b|((?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:=|^:=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\b(?:(and)|(with))\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#structure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindTerm\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))\",\n          \"end\": \"(\\\\bmodule\\\\b)|(\\\\bopen\\\\b)|(?<![#\\\\-:!?.@*/&%^+<=>|~$])(:)|((?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$]))(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"4\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\b(?:module|open)\\\\b)|(?=(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(\\\\brec\\\\b)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#attributeIdentifier\"\n                },\n                {\n                  \"include\": \"#comment\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]rec|^rec))(?![[:word:]]))\",\n              \"end\": \"((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?=[^[:space:][:alpha:]])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.function strong emphasis\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#bindTermArgs\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#bindTermArgs\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#declModule\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]open|^open))(?![[:word:]]))\",\n          \"end\": \"(?=\\\\bin\\\\b)|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#pathModuleSimple\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\btype\\\\b|(?=[^[:space:]])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"bindTermArgs\": {\n      \"patterns\": [\n        {\n          \"begin\": \"~|\\\\?\",\n          \"end\": \":|(?=[^[:space:]])\",\n          \"applyEndPatternLast\": true,\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]~|^~|[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?<=\\\\))\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"begin\": \"\\\\((?!\\\\*)\",\n                  \"end\": \"\\\\)\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.tag\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"begin\": \"(?<=\\\\()\",\n                      \"end\": \":|=\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n                          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?<=:)\",\n                      \"end\": \"=|(?=\\\\))\",\n                      \"endCaptures\": {\n                        \"0\": {\n                          \"name\": \"keyword\"\n                        }\n                      },\n                      \"patterns\": [\n                        {\n                          \"include\": \"#type\"\n                        }\n                      ]\n                    },\n                    {\n                      \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n                      \"end\": \"(?=\\\\))\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#term\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"bindType\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\+=|=(?![#\\\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#pathType\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"entity.name.function strong\"\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\+=|^\\\\+=|[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"\\\\band\\\\b|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindConstructor\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#commentBlock\"\n        },\n        {\n          \"include\": \"#commentDoc\"\n        }\n      ]\n    },\n    \"commentBlock\": {\n      \"begin\": \"\\\\(\\\\*(?!\\\\*[^\\\\)])\",\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment constant.regexp meta.separator.markdown\",\n      \"contentName\": \"emphasis\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentBlock\"\n        },\n        {\n          \"include\": \"#commentDoc\"\n        }\n      ]\n    },\n    \"commentDoc\": {\n      \"begin\": \"\\\\(\\\\*\\\\*\",\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment constant.regexp meta.separator.markdown\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"decl\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declClass\"\n        },\n        {\n          \"include\": \"#declException\"\n        },\n        {\n          \"include\": \"#declInclude\"\n        },\n        {\n          \"include\": \"#declModule\"\n        },\n        {\n          \"include\": \"#declOpen\"\n        },\n        {\n          \"include\": \"#declTerm\"\n        },\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"declClass\": {\n      \"begin\": \"\\\\bclass\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]class|^class))(?![[:word:]]))\",\n          \"end\": \"\\\\btype\\\\b|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.class constant.numeric markup.underline\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindClassTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindClassType\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declException\": {\n      \"begin\": \"\\\\bexception\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindConstructor\"\n        }\n      ]\n    },\n    \"declInclude\": {\n      \"begin\": \"\\\\binclude\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#signature\"\n        }\n      ]\n    },\n    \"declModule\": {\n      \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))|\\\\bmodule\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(\\\\btype\\\\b)|(?=[[:upper:]])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"\\\\brec\\\\b\",\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindSignature\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=[[:upper:]])\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"include\": \"#bindStructure\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declOpen\": {\n      \"begin\": \"\\\\bopen\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributeIdentifier\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        }\n      ]\n    },\n    \"declTerm\": {\n      \"begin\": \"\\\\b(?:(external|val)|(method)|(let))\\\\b(!?)\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type markup.underline\"\n        },\n        \"2\": {\n          \"name\": \"storage.type markup.underline\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control markup.underline\"\n        },\n        \"4\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindTerm\"\n        }\n      ]\n    },\n    \"declType\": {\n      \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))|\\\\btype\\\\b\",\n      \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword markup.underline\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#bindType\"\n        }\n      ]\n    },\n    \"extension\": {\n      \"begin\": \"(\\\\[)((?<![#\\\\-:!?.@*/&%^+<=>|~$])%{1,3}(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#attributePayload\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#termConstructor\"\n        },\n        {\n          \"include\": \"#literalArray\"\n        },\n        {\n          \"include\": \"#literalBoolean\"\n        },\n        {\n          \"include\": \"#literalCharacter\"\n        },\n        {\n          \"include\": \"#literalList\"\n        },\n        {\n          \"include\": \"#literalNumber\"\n        },\n        {\n          \"include\": \"#literalObjectTerm\"\n        },\n        {\n          \"include\": \"#literalString\"\n        },\n        {\n          \"include\": \"#literalRecord\"\n        },\n        {\n          \"include\": \"#literalUnit\"\n        }\n      ]\n    },\n    \"literalArray\": {\n      \"begin\": \"\\\\[\\\\|\",\n      \"end\": \"\\\\|\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"literalBoolean\": {\n      \"match\": \"\\\\bfalse|true\\\\b\",\n      \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n    },\n    \"literalCharacter\": {\n      \"begin\": \"(?<![[:word:]])'\",\n      \"end\": \"'\",\n      \"name\": \"markup.punctuation.quote.beginning\",\n      \"patterns\": [\n        {\n          \"include\": \"#literalCharacterEscape\"\n        }\n      ]\n    },\n    \"literalCharacterEscape\": {\n      \"match\": \"\\\\\\\\(?:[\\\\\\\\\\\"'ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])\"\n    },\n    \"literalClassType\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\bobject\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag emphasis\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\binherit\\\\b\",\n              \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\bas\\\\b\",\n                  \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variablePattern\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"include\": \"#declTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\"\n        }\n      ]\n    },\n    \"literalList\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalNumber\": {\n      \"match\": \"(?<![[:alpha:]])[[:digit:]][[:digit:]]*(\\\\.[[:digit:]][[:digit:]]*)?\",\n      \"name\": \"constant.numeric\"\n    },\n    \"literalObjectTerm\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\bobject\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag emphasis\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\binherit\\\\b\",\n              \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\bas\\\\b\",\n                  \"end\": \";;|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#variablePattern\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"include\": \"#declTerm\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\"\n        }\n      ]\n    },\n    \"literalRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalString\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string beginning.punctuation.definition.quote.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#literalStringEscape\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\{)([_[:lower:]]*?)(\\\\|)\",\n          \"end\": \"(\\\\|)(\\\\2)(\\\\})\",\n          \"name\": \"string beginning.punctuation.definition.quote.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"#literalStringEscape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"literalStringEscape\": {\n      \"match\": \"\\\\\\\\(?:[\\\\\\\\\\\"ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])\"\n    },\n    \"literalUnit\": {\n      \"match\": \"\\\\(\\\\)\",\n      \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n    },\n    \"pathModuleExtended\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixExtended\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      ]\n    },\n    \"pathModulePrefixExtended\": {\n      \"begin\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.|$|\\\\()\",\n      \"end\": \"(?![[:space:]\\\\.]|$|\\\\()\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))\",\n              \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n            },\n            {\n              \"include\": \"#structure\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.|$))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*(?:$|\\\\()))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))|(?![[:space:]\\\\.[:upper:]]|$|\\\\()\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.class constant.numeric\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function strong\"\n            },\n            \"3\": {\n              \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n            }\n          }\n        }\n      ]\n    },\n    \"pathModulePrefixExtendedParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\)))\",\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        },\n        {\n          \"include\": \"#structure\"\n        }\n      ]\n    },\n    \"pathModulePrefixSimple\": {\n      \"begin\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.)\",\n      \"end\": \"(?![[:space:]\\\\.])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\\\.))|((?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*))|(?![[:space:]\\\\.[:upper:]])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.class constant.numeric\"\n            },\n            \"2\": {\n              \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n            }\n          }\n        }\n      ]\n    },\n    \"pathModuleSimple\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixSimple\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"entity.name.class constant.numeric\"\n        }\n      ]\n    },\n    \"pathRecord\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"end\": \"(?=[^[:space:]\\\\.])(?!\\\\(\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\.|^\\\\.))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"end\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\.(?![#\\\\-:!?.@*/&%^+<=>|~$]))|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|mutable|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=\\\\))|(?<=\\\\])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword strong\"\n                }\n              },\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword strong\"\n                },\n                \"2\": {\n                  \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#pathModulePrefixSimple\"\n                },\n                {\n                  \"begin\": \"\\\\((?!\\\\*)\",\n                  \"end\": \"\\\\)\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#term\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#pattern\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"pattern\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#patternArray\"\n        },\n        {\n          \"include\": \"#patternLazy\"\n        },\n        {\n          \"include\": \"#patternList\"\n        },\n        {\n          \"include\": \"#patternMisc\"\n        },\n        {\n          \"include\": \"#patternModule\"\n        },\n        {\n          \"include\": \"#patternRecord\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#patternParens\"\n        },\n        {\n          \"include\": \"#patternType\"\n        },\n        {\n          \"include\": \"#variablePattern\"\n        },\n        {\n          \"include\": \"#termOperator\"\n        }\n      ]\n    },\n    \"patternArray\": {\n      \"begin\": \"\\\\[\\\\|\",\n      \"end\": \"\\\\|\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternLazy\": {\n      \"match\": \"lazy\",\n      \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n    },\n    \"patternList\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternMisc\": {\n      \"match\": \"((?<![#\\\\-:!?.@*/&%^+<=>|~$]),(?![#\\\\-:!?.@*/&%^+<=>|~$]))|([#\\\\-:!?.@*/&%^+<=>|~$]+)|\\\\b(as)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp strong\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      }\n    },\n    \"patternModule\": {\n      \"begin\": \"\\\\bmodule\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#declModule\"\n        }\n      ]\n    },\n    \"patternParens\": {\n      \"begin\": \"\\\\((?!\\\\))\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#pattern\"\n        }\n      ]\n    },\n    \"patternRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pattern\"\n            }\n          ]\n        }\n      ]\n    },\n    \"patternType\": {\n      \"begin\": \"\\\\btype\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"pragma\": {\n      \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])#(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n      \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#literalNumber\"\n        },\n        {\n          \"include\": \"#literalString\"\n        }\n      ]\n    },\n    \"signature\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#signatureLiteral\"\n        },\n        {\n          \"include\": \"#signatureFunctor\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#signatureParens\"\n        },\n        {\n          \"include\": \"#signatureRecovered\"\n        },\n        {\n          \"include\": \"#signatureConstraints\"\n        }\n      ]\n    },\n    \"signatureConstraints\": {\n      \"begin\": \"\\\\bwith\\\\b\",\n      \"end\": \"(?=\\\\))|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"\\\\b(?:(module)|(type))\\\\b\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            },\n            \"2\": {\n              \"name\": \"keyword\"\n            }\n          }\n        },\n        {\n          \"include\": \"#declModule\"\n        },\n        {\n          \"include\": \"#declType\"\n        }\n      ]\n    },\n    \"signatureFunctor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunctor\\\\b\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))\",\n              \"end\": \"(\\\\(\\\\))|(\\\\((?!\\\\)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?<=\\\\()\",\n              \"end\": \"(:)|(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(\\\\()|((?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag\"\n                },\n                \"2\": {\n                  \"name\": \"support.type strong\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"name\": \"support.type strong\"\n        }\n      ]\n    },\n    \"signatureLiteral\": {\n      \"begin\": \"\\\\bsig\\\\b\",\n      \"end\": \"\\\\bend\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag emphasis\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#decl\"\n        }\n      ]\n    },\n    \"signatureParens\": {\n      \"begin\": \"\\\\((?!\\\\))\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#signature\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#signature\"\n        }\n      ]\n    },\n    \"signatureRecovered\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:|[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]include|^include|[^[:word:]]open|^open))(?![[:word:]]))\",\n          \"end\": \"\\\\bmodule\\\\b|(?!$|[[:space:]]|\\\\bmodule\\\\b)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))\",\n              \"end\": \"\\\\btype\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))\",\n              \"end\": \"\\\\bof\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"structure\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#structureLiteral\"\n        },\n        {\n          \"include\": \"#structureFunctor\"\n        },\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#structureParens\"\n        }\n      ]\n    },\n    \"structureFunctor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfunctor\\\\b\",\n          \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))\",\n              \"end\": \"(\\\\(\\\\))|(\\\\((?!\\\\)))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?<=\\\\()\",\n              \"end\": \"(:)|(\\\\))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#variableModule\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.tag\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#signature\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(\\\\()|((?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.tag\"\n                },\n                \"2\": {\n                  \"name\": \"support.type strong\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#structure\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"name\": \"support.type strong\"\n        }\n      ]\n    },\n    \"structureLiteral\": {\n      \"begin\": \"\\\\bstruct\\\\b\",\n      \"end\": \"\\\\bend\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag emphasis\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#pragma\"\n        },\n        {\n          \"include\": \"#decl\"\n        }\n      ]\n    },\n    \"structureParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#structureUnpack\"\n        },\n        {\n          \"include\": \"#structure\"\n        }\n      ]\n    },\n    \"structureUnpack\": {\n      \"begin\": \"\\\\bval\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      }\n    },\n    \"term\": {\n      \"patterns\": [\n        {\n          \"include\": \"#termLet\"\n        },\n        {\n          \"include\": \"#termAtomic\"\n        }\n      ]\n    },\n    \"termAtomic\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#termConditional\"\n        },\n        {\n          \"include\": \"#termConstructor\"\n        },\n        {\n          \"include\": \"#termDelim\"\n        },\n        {\n          \"include\": \"#termFor\"\n        },\n        {\n          \"include\": \"#termFunction\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#termMatch\"\n        },\n        {\n          \"include\": \"#termMatchRule\"\n        },\n        {\n          \"include\": \"#termPun\"\n        },\n        {\n          \"include\": \"#termOperator\"\n        },\n        {\n          \"include\": \"#termTry\"\n        },\n        {\n          \"include\": \"#termWhile\"\n        },\n        {\n          \"include\": \"#pathRecord\"\n        }\n      ]\n    },\n    \"termConditional\": {\n      \"match\": \"\\\\b(?:if|then|else)\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    \"termConstructor\": {\n      \"patterns\": [\n        {\n          \"include\": \"#pathModulePrefixSimple\"\n        },\n        {\n          \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong\"\n        }\n      ]\n    },\n    \"termDelim\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\((?!\\\\))\",\n          \"end\": \"\\\\)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\bbegin\\\\b\",\n          \"end\": \"\\\\bend\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#term\"\n            }\n          ]\n        }\n      ]\n    },\n    \"termFor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bfor\\\\b\",\n          \"end\": \"\\\\bdone\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]for|^for))(?![[:word:]]))\",\n              \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])=(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"support.type strong\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#pattern\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"end\": \"\\\\b(?:downto|to)\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]to|^to))(?![[:word:]]))\",\n              \"end\": \"\\\\bdo\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\bdone\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"termFunction\": {\n      \"match\": \"\\\\b(?:(fun)|(function))\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type\"\n        },\n        \"2\": {\n          \"name\": \"storage.type\"\n        }\n      }\n    },\n    \"termLet\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<=;|\\\\())(?=[[:space:]]|\\\\blet\\\\b)|(?:(?<=(?:[^[:word:]]begin|^begin|[^[:word:]]do|^do|[^[:word:]]else|^else|[^[:word:]]in|^in|[^[:word:]]struct|^struct|[^[:word:]]then|^then|[^[:word:]]try|^try))(?![[:word:]]))|(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]@@|^@@))(?![#\\\\-:!?.@*/&%^+<=>|~$]))[[:space:]]+\",\n          \"end\": \"\\\\b(?:(and)|(let))\\\\b|(?=[^[:space:]])(?!\\\\(\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]let|^let))(?![[:word:]]))|(let)\",\n          \"end\": \"\\\\b(?:(and)|(in))\\\\b|(?=\\\\}|\\\\)|\\\\]|\\\\b(?:end|class|exception|external|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp markup.underline\"\n            },\n            \"2\": {\n              \"name\": \"storage.type markup.underline\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#bindTerm\"\n            }\n          ]\n        }\n      ]\n    },\n    \"termMatch\": {\n      \"begin\": \"\\\\bmatch\\\\b\",\n      \"end\": \"\\\\bwith\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"termMatchRule\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]fun|^fun|[^[:word:]]function|^function|[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(\\\\|)|(->)(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.type strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#attributeIdentifier\"\n            },\n            {\n              \"include\": \"#pattern\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^\\\\[#\\\\-:!?.@*/&%^+<=>|~$]\\\\||^\\\\|))(?![#\\\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\|(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])(\\\\|)|(->)(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.type strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#pattern\"\n            },\n            {\n              \"begin\": \"\\\\bwhen\\\\b\",\n              \"end\": \"(?=(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"termOperator\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])#(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n          \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        },\n        {\n          \"match\": \"<-\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.control strong\"\n            }\n          }\n        },\n        {\n          \"match\": \"(,|[#\\\\-:!?.@*/&%^+<=>|~$]+)|(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:and|assert|asr|land|lazy|lsr|lxor|mod|new|or)\\\\b\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      ]\n    },\n    \"termPun\": {\n      \"begin\": \"(?<![#\\\\-:!?.@*/&%^+<=>|~$])\\\\?|~(?![#\\\\-:!?.@*/&%^+<=>|~$])\",\n      \"end\": \":|(?=[^[:space:]:])\",\n      \"applyEndPatternLast\": true,\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]\\\\?|^\\\\?|[^#\\\\-:!?.@*/&%^+<=>|~$]~|^~))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n            }\n          }\n        }\n      ]\n    },\n    \"termTry\": {\n      \"begin\": \"\\\\btry\\\\b\",\n      \"end\": \"\\\\bwith\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#term\"\n        }\n      ]\n    },\n    \"termWhile\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\bwhile\\\\b\",\n          \"end\": \"\\\\bdone\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]while|^while))(?![[:word:]]))\",\n              \"end\": \"\\\\bdo\\\\b\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))\",\n              \"end\": \"(?=\\\\bdone\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#term\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"\\\\bnonrec\\\\b\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        {\n          \"include\": \"#pathModulePrefixExtended\"\n        },\n        {\n          \"include\": \"#typeLabel\"\n        },\n        {\n          \"include\": \"#typeObject\"\n        },\n        {\n          \"include\": \"#typeOperator\"\n        },\n        {\n          \"include\": \"#typeParens\"\n        },\n        {\n          \"include\": \"#typePolymorphicVariant\"\n        },\n        {\n          \"include\": \"#typeRecord\"\n        },\n        {\n          \"include\": \"#typeConstructor\"\n        }\n      ]\n    },\n    \"typeConstructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(_)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(')((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=[^\\\\*]\\\\)|\\\\])\",\n          \"end\": \"(?=\\\\((?!\\\\*)|\\\\*|:|,|=|\\\\.|>|-|\\\\{|\\\\[|\\\\+|\\\\}|\\\\)|\\\\]|;|\\\\|)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[:space:]*(?!\\\\(\\\\*|[[:word:]])|(?=;;|\\\\}|\\\\)|\\\\]|\\\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"comment constant.regexp meta.separator.markdown\"\n            },\n            \"3\": {\n              \"name\": \"string.other.link variable.language variable.parameter emphasis strong emphasis\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control emphasis\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixExtended\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeLabel\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\??)((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[[:space:]]*((?<![#\\\\-:!?.@*/&%^+<=>|~$]):(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(?=(?<![#\\\\-:!?.@*/&%^+<=>|~$])->(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword strong emphasis\"\n            },\n            \"2\": {\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            },\n            \"3\": {\n              \"name\": \"keyword\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeModule\": {\n      \"begin\": \"\\\\bmodule\\\\b\",\n      \"end\": \"(?=\\\\))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#pathModuleExtended\"\n        },\n        {\n          \"include\": \"#signatureConstraints\"\n        }\n      ]\n    },\n    \"typeObject\": {\n      \"begin\": \"<\",\n      \"end\": \">\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=<|;)\",\n          \"end\": \"(:)|(?=>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(?=>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"typeOperator\": {\n      \"patterns\": [\n        {\n          \"match\": \",|;|[#\\\\-:!?.@*/&%^+<=>|~$]+\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n        }\n      ]\n    },\n    \"typeParens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n        },\n        {\n          \"include\": \"#typeModule\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"typePolymorphicVariant\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": []\n    },\n    \"typeRecord\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.language constant.numeric entity.other.attribute-name.id.css strong strong\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=\\\\{|;)\",\n          \"end\": \"(:)|(=)|(;)|(with)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#pathModulePrefixSimple\"\n            },\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))\",\n          \"end\": \"(:)|(=)|(;)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp strong\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)\",\n              \"name\": \"markup.inserted constant.language support.constant.property-value entity.name.filename emphasis\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \"(;)|(=)|(?=\\\\})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            },\n            \"2\": {\n              \"name\": \"support.type strong\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?:(?<=(?:[^#\\\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\\\-:!?.@*/&%^+<=>|~$]))\",\n          \"end\": \";|(?=\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.class.js message.error variable.interpolation string.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variableModule\": {\n      \"match\": \"(?:\\\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        }\n      }\n    },\n    \"variablePattern\": {\n      \"match\": \"(\\\\b_\\\\b)|((?:(?!\\\\b(?:and|'|as|asr|assert|\\\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\\\{|\\\\(|\\\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\\\+|private|\\\\?|\\\"|rec|\\\\\\\\|\\\\}|\\\\)|\\\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\\\||virtual|when|while|with)\\\\b(?:[^']|$))\\\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"comment constant.regexp meta.separator.markdown\"\n        },\n        \"2\": {\n          \"name\": \"string.other.link variable.language variable.parameter emphasis\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/pascal.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"pas\", \"p\", \"pp\", \"dfm\", \"fmx\", \"dpr\", \"dpk\", \"lfm\", \"lpr\"],\n  \"keyEquivalent\": \"^~P\",\n  \"name\": \"pascal\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(?i:(absolute|abstract|all|and_then|array|as|asm|attribute|begin|bindable|case|class|const|contains|default|div|else|end|except|export|exports|external|far|file|finalization|finally|forward|generic|goto|if|implements|import|in|index|inherited|initialization|interrupt|is|label|library|mod|module|name|near|not|object|of|on|only|operator|or_else|otherwise|out|override|package|packed|pow|private|program|protected|public|published|interface|implementation|qualified|read|record|resident|requires|resourcestring|restricted|segment|set|shl|shr|specialize|stored|strict|then|threadvar|to|try|type|unit|uses|var|view|virtual|dynamic|overload|reintroduce|with|write|xor))\\\\b\",\n      \"name\": \"keyword.pascal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.prototype.pascal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.prototype.pascal\"\n        }\n      },\n      \"match\": \"\\\\b(?i:(function|procedure|constructor|destructor))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)?)(\\\\(.*?\\\\))?;\\\\s*(?=(?i:attribute|forward|external))\",\n      \"name\": \"meta.function.prototype.pascal\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pascal\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.pascal\"\n        }\n      },\n      \"match\": \"\\\\b(?i:(function|procedure|constructor|destructor|property|read|write))\\\\b\\\\s+(\\\\w+(\\\\.\\\\w+)?)\",\n      \"name\": \"meta.function.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(self|result))\\\\b\",\n      \"name\": \"token.variable\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(and|or))\\\\b\",\n      \"name\": \"keyword.operator.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(break|continue|exit|abort|while|do|downto|for|raise|repeat|until))\\\\b\",\n      \"name\": \"keyword.control.pascal\"\n    },\n    {\n      \"begin\": \"\\\\{\\\\$\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.regexp\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"string.regexp\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(ansichar|ansistring|boolean|byte|cardinal|char|comp|currency|double|dword|extended|file|integer|int64|longint|longword|nativeint|nativeuint|olevariant|pansichar|pchar|pwidechar|pointer|real|shortint|shortstring|single|smallint|string|uint64|variant|widechar|widestring|word|wordbool))\\\\b\",\n      \"name\": \"storage.support.type.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\d+)|(\\\\d*\\\\.\\\\d+([eE][\\\\-+]?\\\\d+)?)\\\\b\",\n      \"name\": \"constant.numeric.pascal\"\n    },\n    {\n      \"match\": \"\\\\$[0-9a-fA-F]{1,16}\\\\b\",\n      \"name\": \"constant.numeric.hex.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(true|false|nil))\\\\b\",\n      \"name\": \"constant.language.pascal\"\n    },\n    {\n      \"match\": \"\\\\b(?i:(Assert))\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.pascal\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.pascal\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.pascal.two\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\\\\*\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.pascal\"\n        }\n      },\n      \"end\": \"\\\\*\\\\)\",\n      \"name\": \"comment.block.pascal.one\"\n    },\n    {\n      \"begin\": \"\\\\{(?!\\\\$)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.pascal\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"name\": \"comment.block.pascal.two\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.pascal\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.pascal\"\n        }\n      },\n      \"name\": \"string.quoted.single.pascal\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.apostrophe.pascal\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\#\\\\d+\",\n      \"name\": \"string.other.pascal\"\n    }\n  ],\n  \"scopeName\": \"source.pascal\",\n  \"uuid\": \"F42FA544-6B1C-11D9-9517-000D93589AF6\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/perl.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/perl.tmbundle/commit/a85927a902d6e5d7805f56a653f324d34dfad53a\",\n  \"name\": \"perl\",\n  \"scopeName\": \"source.perl\",\n  \"comment\": \"\\n\\tTODO:\\tInclude RegExp syntax\\n\",\n  \"patterns\": [\n    {\n      \"include\": \"#line_comment\"\n    },\n    {\n      \"begin\": \"^(?==[a-zA-Z]+)\",\n      \"end\": \"^(=cut\\\\b.*$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#pod\"\n            }\n          ]\n        }\n      },\n      \"name\": \"comment.block.documentation.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#pod\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\b(?=qr\\\\s*[^\\\\s\\\\w])\",\n      \"comment\": \"string.regexp.compile.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.compile.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(qr)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.compile.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.compile.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.compile.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.compile.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\s\\\\w\\\\\\\\'\\\\{\\\\[\\\\(\\\\<])\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.compile.single-quote.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(qr)\\\\s*([^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\2\",\n          \"name\": \"string.regexp.compile.simple-delimiter.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n              \"name\": \"keyword.control.anchor.perl\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?<!\\\\{|\\\\+|\\\\-)\\\\b(?=m\\\\s*[^\\\\sa-zA-Z0-9])\",\n      \"comment\": \"string.regexp.find-m.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find-m.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(m)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.find-m.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.find-m.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.find-m.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.find-m.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(m)\\\\s*'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.find-m.single-quote.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?<!\\\\{|\\\\+|\\\\-)(m)(?!_)\\\\s*([^\\\\sa-zA-Z0-9'\\\\{\\\\[\\\\(\\\\<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\2\",\n          \"name\": \"string.regexp.find-m.simple-delimiter.perl\",\n          \"patterns\": [\n            {\n              \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n              \"match\": \"\\\\$(?=[^\\\\sa-zA-Z0-9'\\\\{\\\\[\\\\(\\\\<])\",\n              \"name\": \"keyword.control.anchor.perl\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"begin\": \"\\\\[\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.character-class.begin.perl\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.character-class.end.perl\"\n                }\n              },\n              \"name\": \"constant.other.character-class.set.perl\",\n              \"patterns\": [\n                {\n                  \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n                  \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n                  \"name\": \"keyword.control.anchor.perl\"\n                },\n                {\n                  \"include\": \"#escaped_char\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"\\\\b(?=(?<!\\\\&)(s)(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\{\\\\}\\\\(\\\\)\\\\[<]|$))\",\n      \"comment\": \"string.regexp.replace.perl\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\{\\\\}\\\\)\\\\]>]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s)\\\\s*\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_braces\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_ltgt\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(s)\\\\s*\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#nested_parens\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"name\": \"string.regexp.format.nested_braces.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_braces_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.format.nested_brackets.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_brackets_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \">\",\n          \"name\": \"string.regexp.format.nested_ltgt.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_ltgt_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"string.regexp.format.nested_parens.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#nested_parens_interpolated\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.format.single_quote.perl\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\['\\\\\\\\]\",\n              \"name\": \"constant.character.escape.perl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([^\\\\s\\\\w\\\\[({<;])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1\",\n          \"name\": \"string.regexp.format.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\s+\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(?=s([^\\\\sa-zA-Z0-9\\\\[({<]).*\\\\1([egimosxradlupcn]*)([\\\\}\\\\)\\\\;\\\\,]|\\\\s+))\",\n      \"comment\": \"string.regexp.replaceXXX\",\n      \"end\": \"((([egimosxradlupcn]*)))(?=([\\\\}\\\\)\\\\;\\\\,]|\\\\s+|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s\\\\s*)([^\\\\sa-zA-Z0-9\\\\[({<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"(?=\\\\2)\",\n          \"name\": \"string.regexp.replaceXXX.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'\",\n          \"name\": \"string.regexp.replaceXXX.format.single_quote.perl\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\['\\\\\\\\]\",\n              \"name\": \"constant.character.escape.perl.perl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([^\\\\sa-zA-Z0-9\\\\[({<])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1\",\n          \"name\": \"string.regexp.replaceXXX.format.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(?=(?<!\\\\\\\\)s\\\\s*([^\\\\s\\\\w\\\\[({<>]))\",\n      \"comment\": \"string.regexp.replace.extended\",\n      \"end\": \"((([egimosradlupc]*x[egimosradlupc]*)))\\\\b\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.replace.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(s)\\\\s*(.)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            },\n            \"1\": {\n              \"name\": \"support.function.perl\"\n            }\n          },\n          \"end\": \"(?=\\\\2)\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"'(?=[egimosradlupc]*x[egimosradlupc]*)\\\\b\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(.)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.perl\"\n            }\n          },\n          \"end\": \"\\\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\\\b\",\n          \"name\": \"string.regexp.replace.extended.simple_delimiter.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\(|\\\\{|~|&|\\\\||if|unless|^)\\\\s*((\\\\/))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        }\n      },\n      \"contentName\": \"string.regexp.find.perl\",\n      \"end\": \"((\\\\1([egimosxradlupcn]*)))(?=(\\\\s+\\\\S|\\\\s*[;\\\\,\\\\#\\\\{\\\\}\\\\)]|\\\\s*$))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"string.regexp.find.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.regexp-option.perl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"comment\": \"This is to prevent thinks like /foo$/ to treat $/ as a variable\",\n          \"match\": \"\\\\$(?=\\\\/)\",\n          \"name\": \"keyword.control.anchor.perl\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.key.perl\"\n        }\n      },\n      \"match\": \"\\\\b(\\\\w+)\\\\s*(?==>)\"\n    },\n    {\n      \"match\": \"(?<={)\\\\s*\\\\w+\\\\s*(?=})\",\n      \"name\": \"constant.other.bareword.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.perl\"\n        }\n      },\n      \"match\": \"^\\\\s*(package)\\\\s+([^\\\\s;]+)\",\n      \"name\": \"meta.class.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.sub.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.perl\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.method.perl\"\n        }\n      },\n      \"match\": \"\\\\b(sub)(?:\\\\s+([-a-zA-Z0-9_]+))?\\\\s*(?:\\\\([\\\\$\\\\@\\\\*;]*\\\\))?[^\\\\w\\\\{]\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.perl\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.function.perl\"\n        }\n      },\n      \"match\": \"^\\\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\\\b\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"begin\": \"^(?=(\\\\t| {4}))\",\n      \"end\": \"(?=[^\\\\t\\\\s])\",\n      \"name\": \"meta.leading-tabs\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab\"\n            }\n          },\n          \"match\": \"(\\\\t| {4})(\\\\t| {4})?\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.perl\"\n        }\n      },\n      \"match\": \"\\\\b(tr|y)\\\\s*([^A-Za-z0-9\\\\s])(.*?)(?<!\\\\\\\\)(\\\\\\\\{2})*(\\\\2)(.*?)(?<!\\\\\\\\)(\\\\\\\\{2})*(\\\\2)\",\n      \"name\": \"string.regexp.replace.perl\"\n    },\n    {\n      \"match\": \"\\\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\\\b\",\n      \"name\": \"constant.language.perl\"\n    },\n    {\n      \"begin\": \"\\\\b(__DATA__|__END__)\\\\n?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.language.perl\"\n        }\n      },\n      \"contentName\": \"comment.block.documentation.perl\",\n      \"end\": \"\\\\z\",\n      \"patterns\": [\n        {\n          \"include\": \"#pod\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<!->)\\\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\\\b\",\n      \"name\": \"keyword.control.perl\"\n    },\n    {\n      \"match\": \"\\\\b(my|our|local)\\\\b\",\n      \"name\": \"storage.modifier.perl\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)\\\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\\\b\",\n      \"name\": \"keyword.operator.filetest.perl\"\n    },\n    {\n      \"match\": \"\\\\b(and|or|xor|as|not)\\\\b\",\n      \"name\": \"keyword.operator.logical.perl\"\n    },\n    {\n      \"match\": \"(<=>|=>|->)\",\n      \"name\": \"keyword.operator.comparison.perl\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*([^\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*([^'\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx.single-quote.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.double.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqw?\\\\s*([^\\\\(\\\\{\\\\[\\\\<\\\\w\\\\s])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\1\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q.perl\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.single.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqq\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqq\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.qq-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqx\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqx\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.interpolated.qx-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<!->)\\\\bqw?\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\bqw?\\\\s*\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.other.q-ltgt.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_ltgt\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^__\\\\w+__\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.unquoted.program-block.perl\"\n    },\n    {\n      \"begin\": \"\\\\b(format)\\\\s+(\\\\w+)\\\\s*=\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.format.perl\"\n        }\n      },\n      \"end\": \"^\\\\.\\\\s*$\",\n      \"name\": \"meta.format.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.perl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.perl\"\n        }\n      },\n      \"match\": \"\\\\b(x)\\\\s*(\\\\d+)\\\\b\"\n    },\n    {\n      \"match\": \"\\\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\\\b\",\n      \"name\": \"support.function.perl\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.perl\"\n        }\n      },\n      \"comment\": \"Match empty brackets for ↩ snippet\",\n      \"match\": \"(\\\\{)(\\\\})\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.perl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.perl\"\n        }\n      },\n      \"comment\": \"Match empty parenthesis for ↩ snippet\",\n      \"match\": \"(\\\\()(\\\\))\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\d+\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\c[^\\\\s\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\g(?:\\\\{(?:\\\\w*|-\\\\d+)\\\\}|\\\\d+)\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\k(?:\\\\{\\\\w*\\\\}|<\\\\w*>|'\\\\w*')\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\N\\\\{[^\\\\}]*\\\\}\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\o\\\\{\\\\d*\\\\}\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\(?:p|P)(?:\\\\{\\\\w*\\\\}|P)\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\x(?:[0-9a-zA-Z]{2}|\\\\{\\\\w*\\\\})?\",\n          \"name\": \"constant.character.escape.perl\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((((<<(~)?) *')(HTML)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(XML)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(CSS)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(SQL)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *')([^']*)(')))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\\\\\\)((?![=\\\\d\\\\$\\\\( ])[^;,'\\\"`\\\\s\\\\)]*)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.raw.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.raw.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(HTML)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(XML)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(CSS)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(JAVASCRIPT)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(SQL)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")(POSTSCRIPT)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *\\\")([^\\\"]*)(\\\")))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(HTML)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.html\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.html.basic\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.html.basic\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(XML)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"text.xml\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"text.xml\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(CSS)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.css\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.css\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.css\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.js\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.js\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.js\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(SQL)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.sql\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.sql\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.sql\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.block.postscript\",\n          \"patterns\": [\n            {\n              \"begin\": \"^\",\n              \"end\": \"\\\\n\",\n              \"name\": \"source.postscript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"source.postscript\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *)((?![=\\\\d\\\\$\\\\( ])[^;,'\\\"`\\\\s\\\\)]*)()))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.interpolated.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((((<<(~)?) *`)([^`]*)(`)))(.*)\\\\n?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.delimiter.begin.perl\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.delimiter.end.perl\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"contentName\": \"string.unquoted.heredoc.shell.perl\",\n          \"end\": \"^((?!\\\\5)\\\\s+)?((\\\\6))$\",\n          \"endCaptures\": {\n            \"2\": {\n              \"name\": \"string.unquoted.heredoc.interpolated.perl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.perl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        }\n      ]\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.perl\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.perl\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.perl\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nested_braces\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"nested_braces_interpolated\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        }\n      ]\n    },\n    \"nested_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    \"nested_brackets_interpolated\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        }\n      ]\n    },\n    \"nested_ltgt\": {\n      \"begin\": \"<\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"include\": \"#nested_ltgt\"\n        }\n      ]\n    },\n    \"nested_ltgt_interpolated\": {\n      \"begin\": \"<\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \">\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_ltgt_interpolated\"\n        }\n      ]\n    },\n    \"nested_parens\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    \"nested_parens_interpolated\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.perl\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"comment\": \"This is to prevent thinks like qr/foo$/ to treat $/ as a variable\",\n          \"match\": \"\\\\$(?=[^\\\\s\\\\w'\\\\{\\\\[\\\\(\\\\<])\",\n          \"name\": \"keyword.control.anchor.perl\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        }\n      ]\n    },\n    \"pod\": {\n      \"patterns\": [\n        {\n          \"match\": \"^=(pod|back|cut)\\\\b\",\n          \"name\": \"storage.type.class.pod.perl\"\n        },\n        {\n          \"begin\": \"^(=begin)\\\\s+(html)\\\\s*$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\"\n            }\n          },\n          \"contentName\": \"text.embedded.html.basic\",\n          \"end\": \"^(=end)\\\\s+(html)|^(?==cut)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\"\n            }\n          },\n          \"name\": \"meta.embedded.pod.perl\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.pod.perl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#pod-formatting\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\\\b\\\\s*(.*)\"\n        },\n        {\n          \"include\": \"#pod-formatting\"\n        }\n      ]\n    },\n    \"pod-formatting\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.italic.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.italic.pod.perl\"\n            }\n          },\n          \"match\": \"I(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.bold.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.bold.pod.perl\"\n            }\n          },\n          \"match\": \"B(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.raw.pod.perl\"\n            },\n            \"2\": {\n              \"name\": \"markup.raw.pod.perl\"\n            }\n          },\n          \"match\": \"C(?:<([^<>]+)>|<+(\\\\\\\\s+(?:(?<!\\\\\\\\s)>|[^>])+\\\\\\\\s+)>+)\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"markup.underline.link.hyperlink.pod.perl\"\n            }\n          },\n          \"match\": \"L<([^>]+)>\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        },\n        {\n          \"match\": \"[EFSXZ]<[^>]*>\",\n          \"name\": \"entity.name.type.instance.pod.perl\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)&(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)`(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.pre-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)'(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.post-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)\\\\+(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.regexp.last-paren-match.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)\\\"(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.readwrite.list-separator.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)0(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.predefined.program-name.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)[_ab\\\\*\\\\.\\\\/\\\\|,\\\\\\\\;#%=\\\\-~^:?!\\\\$<>\\\\(\\\\)\\\\[\\\\]@](?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.predefined.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$)[0-9]+(?![A-Za-z0-9_])\",\n          \"name\": \"variable.other.subpattern.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"([\\\\$\\\\@\\\\%](#)?)([a-zA-Zx7f-xff\\\\$]|::)([a-zA-Z0-9_x7f-xff\\\\$]|::)*\\\\b\",\n          \"name\": \"variable.other.readwrite.global.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"(\\\\$\\\\{)(?:[a-zA-Zx7f-xff\\\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\\\$]|::)*(\\\\})\",\n          \"name\": \"variable.other.readwrite.global.perl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.perl\"\n            }\n          },\n          \"match\": \"([\\\\$\\\\@\\\\%](#)?)[0-9_]\\\\b\",\n          \"name\": \"variable.other.readwrite.global.special.perl\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/php-html.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-php/blob/master/grammars/html.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-php/commit/ff64523c94c014d68f5dec189b05557649c5872a\",\n  \"name\": \"php-html\",\n  \"scopeName\": \"text.html.php\",\n  \"injections\": {\n    \"L:meta.embedded.php.blade\": {\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"text.html.php.blade#blade\"\n        }\n      ]\n    },\n    \"text.html.php - (meta.embedded | meta.tag), L:((text.html.php meta.tag) - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.js - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.css - (meta.embedded.block.php | meta.embedded.line.php))\": {\n      \"patterns\": [\n        {\n          \"include\": \"#php-tag\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\A#!\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.php\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"comment.line.shebang.php\"\n    },\n    {\n      \"include\": \"text.html.derivative\"\n    }\n  ],\n  \"repository\": {\n    \"php-tag\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?(?![^?]*\\\\?>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.block.php\",\n          \"contentName\": \"source.php\",\n          \"patterns\": [\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?(?i:php|=)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            }\n          },\n          \"end\": \"(\\\\?)>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"source.php\"\n            }\n          },\n          \"name\": \"meta.embedded.line.php\",\n          \"contentName\": \"source.php\",\n          \"patterns\": [\n            {\n              \"include\": \"source.php\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/php.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-php/blob/master/grammars/php.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-php/commit/eb28b8aea1214dcbc732f3d9b9ed20c089c648bd\",\n  \"scopeName\": \"source.php\",\n  \"patterns\": [\n    {\n      \"include\": \"#attribute\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"match\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+([a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)(?=\\\\s*;)\",\n      \"name\": \"meta.namespace.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.namespace.php\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\",\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"(?i)(?:^|(?<=<\\\\?php))\\\\s*(namespace)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.namespace.php\"\n        }\n      },\n      \"end\": \"(?<=})|(?=\\\\?>)\",\n      \"name\": \"meta.namespace.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(?i)[a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+\",\n          \"name\": \"entity.name.type.namespace.php\",\n          \"captures\": {\n            \"0\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\",\n                  \"name\": \"punctuation.separator.inheritance.php\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.namespace.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.namespace.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[^\\\\s]+\",\n          \"name\": \"invalid.illegal.identifier.php\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\s+(?=use\\\\b)\"\n    },\n    {\n      \"begin\": \"(?i)\\\\buse\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.other.use.php\"\n        }\n      },\n      \"end\": \"(?<=})|(?=;)|(?=\\\\?>)\",\n      \"name\": \"meta.use.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(const|function)\\\\b\",\n          \"name\": \"storage.type.${1:/downcase}.php\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.use.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.use.end.bracket.curly.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#scope-resolution\"\n            },\n            {\n              \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+(final|abstract|public|private|protected|static)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-as.php\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.php\"\n                },\n                \"3\": {\n                  \"name\": \"entity.other.alias.php\"\n                }\n              }\n            },\n            {\n              \"match\": \"(?xi)\\n\\\\b(as)\\n\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-as.php\"\n                },\n                \"2\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"^(?:final|abstract|public|private|protected|static)$\",\n                      \"name\": \"storage.modifier.php\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"entity.other.alias.php\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \"(?i)\\\\b(insteadof)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.use-insteadof.php\"\n                },\n                \"2\": {\n                  \"name\": \"support.class.php\"\n                }\n              }\n            },\n            {\n              \"match\": \";\",\n              \"name\": \"punctuation.terminator.expression.php\"\n            },\n            {\n              \"include\": \"#use-inner\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#use-inner\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(trait)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.trait.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.trait.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.trait.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.trait.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.trait.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.trait.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(interface)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.interface.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interface.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.interface.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#interface-extends\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.interface.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.interface.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n\\\\b(enum)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\n(?: \\\\s* (:) \\\\s* (int | string) \\\\b )?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.php\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.enum.php\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.return-value.php\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.type.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.enum.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.enum.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class-implements\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.enum.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.enum.body.php\",\n          \"patterns\": [\n            {\n              \"match\": \"(?i)\\\\b(case)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.php\"\n                },\n                \"2\": {\n                  \"name\": \"constant.enum.php\"\n                }\n              }\n            },\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?ix)\\n(?:\\n  \\\\b(?:(abstract|final)\\\\s+)?(class)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\n  |\\\\b(new)\\\\b\\\\s*(\\\\#\\\\[.*\\\\])?\\\\s*\\\\b(class)\\\\b # anonymous class\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.${1:/downcase}.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.php\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.php\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.new.php\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attribute\"\n            }\n          ]\n        },\n        \"6\": {\n          \"name\": \"storage.type.class.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.class.end.bracket.curly.php\"\n        }\n      },\n      \"name\": \"meta.class.php\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=class)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#class-extends\"\n        },\n        {\n          \"include\": \"#class-implements\"\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.class.begin.bracket.curly.php\"\n            }\n          },\n          \"end\": \"(?=}|\\\\?>)\",\n          \"contentName\": \"meta.class.body.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#class-constant\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"include\": \"#match_statement\"\n    },\n    {\n      \"include\": \"#switch_statement\"\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(yield\\\\s+from)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.yield-from.php\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?x)\\n\\\\b(\\n  break|case|continue|declare|default|die|do|\\n  else(if)?|end(declare|for(each)?|if|switch|while)|exit|\\n  for(each)?|if|return|switch|use|while|yield\\n)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.${1:/downcase}.php\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(?i)\\\\b((?:require|include)(?:_once)?)(\\\\s+|(?=\\\\())\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.include.php\"\n        }\n      },\n      \"end\": \"(?=\\\\s|;|$|\\\\?>)\",\n      \"name\": \"meta.include.php\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(catch)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.exception.catch.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        }\n      },\n      \"name\": \"meta.catch.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n([a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*\\\\|\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)*) # union or single exception class\\n\\\\s*\\n((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?           # Variable\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.separator.delimiter.php\"\n                },\n                {\n                  \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n                  \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.class.exception.php\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#namespace\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(catch|try|throw|exception|finally)\\\\b\",\n      \"name\": \"keyword.control.exception.php\"\n    },\n    {\n      \"begin\": \"(?i)\\\\b(function)\\\\s*(?=&?\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.php\"\n        }\n      },\n      \"end\": \"(?=\\\\s*{)\",\n      \"name\": \"meta.function.closure.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(&)?\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(use)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.function.use.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function.closure.use.php\",\n          \"patterns\": [\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.php\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.reference.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.variable.php\"\n                }\n              },\n              \"match\": \"(?i)((?:(&)\\\\s*)?(\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(?=,|\\\\))\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(:)\\\\s*\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?i)\\\\b(fn)\\\\s*(?=&?\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.php\"\n        }\n      },\n      \"end\": \"=>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.arrow.php\"\n        }\n      },\n      \"name\": \"meta.function.closure.php\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(&)\\\\s*)?(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n            }\n          },\n          \"contentName\": \"meta.function.parameters.php\",\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(:)\\\\s*\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n(?=\\\\s*(?:=>|/[/*]|\\\\#|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.return-value.php\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected)\\\\s+)*)\\n(function)\\\\s+(__construct)\\n\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"final|abstract|public|private|protected\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.php\"\n        },\n        \"3\": {\n          \"name\": \"support.function.constructor.php\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"contentName\": \"meta.function.parameters.php\",\n      \"end\": \"(?xi)\\n(\\\\)) \\\\s* ( : \\\\s*\\n  (?:\\\\?\\\\s*)? (?!\\\\s) [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\\\\\s\\\\|&]+ (?<!\\\\s)\\n)?\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$|;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.return-type.php\"\n        }\n      },\n      \"name\": \"meta.function.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((?:(?:public|private|protected|readonly)(?:\\\\s+|(?=\\\\?)))++)\\n(?: (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) \\\\s+ )?\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"public|private|protected|readonly\",\n                  \"name\": \"storage.modifier.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.promoted-property.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?x)\\n((?:(?:final|abstract|public|private|protected|static)\\\\s+)*)\\n(function)\\\\s+\\n(?i:\\n  (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString|\\n        clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize))\\n  |(?:(&)?\\\\s*([a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*))\\n)\\n\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"final|abstract|public|private|protected|static\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.php\"\n        },\n        \"3\": {\n          \"name\": \"support.function.magic.php\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.php\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.parameters.begin.bracket.round.php\"\n        }\n      },\n      \"contentName\": \"meta.function.parameters.php\",\n      \"end\": \"(?xi)\\n(\\\\)) (?: \\\\s* (:) \\\\s* (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) )?\\n(?=\\\\s*(?:{|/[/*]|\\\\#|$|;))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.return-value.php\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(static)\\\\b\",\n              \"name\": \"storage.type.php\"\n            },\n            {\n              \"match\": \"\\\\b(never)\\\\b\",\n              \"name\": \"keyword.other.type.never.php\"\n            },\n            {\n              \"include\": \"#php-types\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.function.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?xi)\\n((?:(?:public|private|protected|static|readonly)(?:\\\\s+|(?=\\\\?)))++)                     # At least one modifier\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)?\\n\\\\s+ ((\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)          # Variable name\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \"public|private|protected|static|readonly\",\n              \"name\": \"storage.modifier.php\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php-types\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"variable.other.php\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    {\n      \"include\": \"#invoke-call\"\n    },\n    {\n      \"include\": \"#scope-resolution\"\n    },\n    {\n      \"include\": \"#variables\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.construct.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n        }\n      },\n      \"match\": \"(array)(\\\\()(\\\\))\",\n      \"name\": \"meta.array.empty.php\"\n    },\n    {\n      \"begin\": \"(array)\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.construct.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n        }\n      },\n      \"name\": \"meta.array.php\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i)(\\\\()\\\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\\\s*(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.storage-type.begin.bracket.round.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.php\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.storage-type.end.bracket.round.php\"\n        }\n      }\n    },\n    {\n      \"match\": \"(?i)\\\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\\\b\",\n      \"name\": \"storage.type.php\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(global|abstract|const|final|private|protected|public|static)\\\\b\",\n      \"name\": \"storage.modifier.php\"\n    },\n    {\n      \"include\": \"#object\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.expression.php\"\n    },\n    {\n      \"match\": \":\",\n      \"name\": \"punctuation.terminator.statement.php\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"match\": \"(?i)\\\\bclone\\\\b\",\n      \"name\": \"keyword.other.clone.php\"\n    },\n    {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"keyword.operator.spread.php\"\n    },\n    {\n      \"match\": \"\\\\.=?\",\n      \"name\": \"keyword.operator.string.php\"\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"keyword.operator.key.php\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.reference.php\"\n        }\n      },\n      \"match\": \"(?i)(\\\\=)(&)|(&)(?=[$a-z_])\"\n    },\n    {\n      \"match\": \"@\",\n      \"name\": \"keyword.operator.error-control.php\"\n    },\n    {\n      \"match\": \"===|==|!==|!=|<>\",\n      \"name\": \"keyword.operator.comparison.php\"\n    },\n    {\n      \"match\": \"=|\\\\+=|\\\\-=|\\\\*\\\\*?=|/=|%=|&=|\\\\|=|\\\\^=|<<=|>>=|\\\\?\\\\?=\",\n      \"name\": \"keyword.operator.assignment.php\"\n    },\n    {\n      \"match\": \"<=>|<=|>=|<|>\",\n      \"name\": \"keyword.operator.comparison.php\"\n    },\n    {\n      \"match\": \"\\\\-\\\\-|\\\\+\\\\+\",\n      \"name\": \"keyword.operator.increment-decrement.php\"\n    },\n    {\n      \"match\": \"\\\\-|\\\\+|\\\\*\\\\*?|/|%\",\n      \"name\": \"keyword.operator.arithmetic.php\"\n    },\n    {\n      \"match\": \"(?i)(!|&&|\\\\|\\\\|)|\\\\b(and|or|xor|as)\\\\b\",\n      \"name\": \"keyword.operator.logical.php\"\n    },\n    {\n      \"include\": \"#function-call\"\n    },\n    {\n      \"match\": \"<<|>>|~|\\\\^|&|\\\\|\",\n      \"name\": \"keyword.operator.bitwise.php\"\n    },\n    {\n      \"begin\": \"(?i)\\\\b(instanceof)\\\\s+(?=[\\\\\\\\$a-z_])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^\\\\\\\\$a-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#instantiation\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.goto.php\"\n        },\n        \"2\": {\n          \"name\": \"support.other.php\"\n        }\n      },\n      \"match\": \"(?i)(goto)\\\\s+([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.goto-label.php\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*(?<!default))\\\\s*:(?!:)\"\n    },\n    {\n      \"include\": \"#string-backtick\"\n    },\n    {\n      \"include\": \"#ternary_shorthand\"\n    },\n    {\n      \"include\": \"#null_coalescing\"\n    },\n    {\n      \"include\": \"#ternary_expression\"\n    },\n    {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.begin.bracket.curly.php\"\n        }\n      },\n      \"end\": \"}|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.curly.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.begin.php\"\n        }\n      },\n      \"end\": \"\\\\]|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.end.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.begin.bracket.round.php\"\n        }\n      },\n      \"end\": \"\\\\)|(?=\\\\?>)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.end.bracket.round.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.delimiter.php\"\n    }\n  ],\n  \"repository\": {\n    \"attribute-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.attribute.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b(Attribute)\\\\b\",\n          \"name\": \"support.attribute.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.attribute.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute\": {\n      \"begin\": \"\\\\#\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.attribute.php\",\n      \"patterns\": [\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"begin\": \"([a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#attribute-name\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#attribute-name\"\n        }\n      ]\n    },\n    \"class-builtin\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n(\\\\\\\\)?\\\\b\\n(Attribute|(APC|Append)Iterator|Array(Access|Iterator|Object)\\n|Bad(Function|Method)CallException\\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\\n    |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\\n|(Error)?Exception|EmptyIterator\\n|finfo\\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\\n|FANNConnection|(Filter|Filesystem)Iterator\\n|Gender\\\\\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\\n|HRTime\\\\\\\\(PerformanceCounter|StopWatch)\\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\\n|Imagick(Draw|Pixel(Iterator)?)?\\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\\n|JsonSerializable\\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\\n      |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\\n      |UpdateBatch|Write(Batch|ConcernException))?\\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\\n|mysqli(_(driver|stmt|warning|result))?\\n|MysqlndUh(Connection|PreparedStatement)\\n|NoRewindIterator|Normalizer|NumberFormatter\\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\\n|QuickHash(Int(Set|StringHash)|StringIntHash)\\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\\n     |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\\n|Soap(Client|Fault|Header|Param|Server|Var)\\n|SphinxClient|Spoofchecker\\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\\n    |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\\n|UConverter|(Underflow|UnexpectedValue)Exception\\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\\n|Worker|Weak(Map|Ref)\\n|XML(Diff\\\\\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\\n     |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\\n     |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\\n     |Response_Abstract|Router|Session|View_(Simple|Interface))\\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\\n\\\\b\",\n          \"name\": \"support.class.builtin.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"begin\": \"(?i)(?=[\\\\\\\\a-z_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"end\": \"(?xi)\\n( [a-z_\\\\x{7f}-\\\\x{10ffff}] [a-z0-9_\\\\x{7f}-\\\\x{10ffff}]* )?\\n(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inheritance-single\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=\\\\\\\\?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n          \"end\": \"(?i)([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?(?=[^a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#namespace\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#class-builtin\"\n        },\n        {\n          \"include\": \"#namespace\"\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"entity.other.inherited-class.php\"\n        }\n      ]\n    },\n    \"class-extends\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)(?=[^A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"interface-extends\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.extends.php\"\n            }\n          },\n          \"end\": \"(?i)(?={)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.classes.php\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-implements\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(implements)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.implements.php\"\n            }\n          },\n          \"end\": \"(?i)(?={)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.classes.php\"\n            },\n            {\n              \"include\": \"#inheritance-single\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-constant\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(const)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"name\": \"comment.block.documentation.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.php\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.php\"\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.double-slash.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^\\\\s+)?(?=#)(?!#\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.php\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"\\\\n|(?=\\\\?>)\",\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\\\b\",\n          \"name\": \"constant.language.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(DEFAULT_INCLUDE_PATH\\n|EAR_(INSTALL|EXTENSION)_DIR\\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\\n   |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\\n     |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\\n     |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\\n     |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\\n     |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\\n     |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\\n              |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\\n              |PRODUCTTYPE|PLATFORM)\\n     |LIBDIR|LOCALSTATEDIR)\\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\\n\\\\b\",\n          \"name\": \"support.constant.core.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\\n     |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\\n|YES(EXPR|STR))\\n\\\\b\",\n          \"name\": \"support.constant.std.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\\n     |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\\n     |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\\n            |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\\n            |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\\n            |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\\n     |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\\n     |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\\n       |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\\n        |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\\n        |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\\n        |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\\n        |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\\n        |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\\n        |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\\n        |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\\n              |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\\n        |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\\n        |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\\n        |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\\n        |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\\n        |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\\n        |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\\n        |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\\n        |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\\n                |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\\n        |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\\n        |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\\n        |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\\n        |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\\n        |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\\n        |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\\n     |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\\n     |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\\n     |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\\n           |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\\n           |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\\n           |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\\n     |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\\n          |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\\n          |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\\n          |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\\n          |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\\n          |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\\n          |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\\n          |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\\n          |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\\n          |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\\n          |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\\n          |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\\n          |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\\n          |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\\n          |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\\n          |AUTOREFERER)\\n     |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\\n     |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\\n        |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\\n        |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\\n        |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\\n        |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\\n        |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\\n        |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\\n        |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\\n             |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\\n             |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\\n        |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\\n        |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\\n     |VERSION_NOW\\n     |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\\n     |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\\n      |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\\n|DOM(STRING_SIZE_ERR)\\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\\n     |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\\n      |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\\n        |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\\n                  |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\\n        |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\\n        |FORCE_ARRAY\\n        |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\\n              |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\\n              |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\\n|FORCE_(DEFLATE|GZIP)\\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\\n        |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\\n\\\\b\",\n          \"name\": \"support.constant.ext.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(\\\\\\\\)?\\\\b\\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\\n   |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\\n   |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\\n   |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\\n   |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\\n   |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\\n   |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\\n   |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\\n   |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\\n   |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\\n   |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\\n   |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\\n\\\\b\",\n          \"name\": \"support.constant.parser-token.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.inheritance.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"constant.other.php\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attribute\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n(?: (\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n) \\\\s+ )?\\n((?:(&)\\\\s*)?(\\\\.\\\\.\\\\.)(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.variadic.php\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.variadic.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(\\n  (?:\\\\?\\\\s*)? [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ |                                        # nullable type\\n  [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+ (?: \\\\s*[|&]\\\\s* [a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+)+ # union type\\n)\\n\\\\s+ ((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#php-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.typehinted.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.assignment.php\"\n                }\n              },\n              \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parameter-default-types\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"(?xi)\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"name\": \"meta.function.parameter.no-default.php\"\n        },\n        {\n          \"begin\": \"(?xi)\\n((?:(&)\\\\s*)?(\\\\$)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable name with possible reference\\n\\\\s*(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.reference.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?:,|\\\\)|/[/*]|\\\\#))\",\n          \"name\": \"meta.function.parameter.default.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"named-arguments\": {\n      \"match\": \"(?i)(?<=^|\\\\(|,)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(:)(?!:)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.variable.parameter.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.colon.php\"\n        }\n      }\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n(\\n  \\\\\\\\?(?<![a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}])                            # Optional root namespace\\n  [a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*          # First namespace\\n  (?:\\\\\\\\[a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*)+ # Additional namespaces\\n)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\\\\\)?(?<![a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}])([a-zA-Z_\\\\x{7f}-\\\\x{10ffff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#namespace\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#support\"\n                },\n                {\n                  \"match\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n                  \"name\": \"entity.name.function.php\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.function-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?i)(?=<<<\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(\\\\1)\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.heredoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc_interior\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=<<<\\\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\\\s*$)\",\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"string.unquoted.nowdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#nowdoc_interior\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(HTML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(XML)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)([DS]QL)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JAVASCRIPT|JS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(JSON)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(CSS)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(REGEXP?)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.heredoc.php\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{10ffff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*(\\\"?)(BLADE)(\\\\2)(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html.php.blade\",\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.php.blade\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*(\\\"?)([a-z_\\\\x{7f}-\\\\x{10ffff}]+[a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(\\\\2)(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^\\\\s*(\\\\3)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"nowdoc_interior\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*'(HTML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.html\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(XML)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.xml\",\n          \"patterns\": [\n            {\n              \"include\": \"text.xml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'([DS]QL)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JAVASCRIPT|JS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(JSON)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.json\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(CSS)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(REGEXP?)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"string.regexp.nowdoc.php\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n              \"name\": \"constant.character.escape.regex.php\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.arbitrary-repitition.php\"\n                }\n              },\n              \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n              \"name\": \"string.regexp.arbitrary-repitition.php\"\n            },\n            {\n              \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.character-class.php\"\n                }\n              },\n              \"end\": \"\\\\]\",\n              \"name\": \"string.regexp.character-class.php\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[\\\\\\\\'\\\\[\\\\]]\",\n                  \"name\": \"constant.character.escape.php\"\n                }\n              ]\n            },\n            {\n              \"match\": \"[$^+*]\",\n              \"name\": \"keyword.operator.regexp.php\"\n            },\n            {\n              \"begin\": \"(?i)(?<=^|\\\\s)(#)\\\\s(?=[[a-z0-9_\\\\x{7f}-\\\\x{10ffff},. \\\\t?!-][^\\\\x{00}-\\\\x{7f}]]*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"end\": \"$\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.php\"\n                }\n              },\n              \"name\": \"comment.line.number-sign.php\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*'(BLADE)'(\\\\s*)$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.php\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"contentName\": \"text.html.php.blade\",\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.php\"\n            },\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          },\n          \"name\": \"meta.embedded.php.blade\"\n        },\n        {\n          \"begin\": \"(?i)(<<<)\\\\s*'([a-z_\\\\x{7f}-\\\\x{10ffff}]+[a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)'(\\\\s*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"invalid.illegal.trailing-whitespace.php\"\n            }\n          },\n          \"end\": \"^\\\\s*(\\\\2)(?![A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.nowdoc.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"instantiation\": {\n      \"begin\": \"(?i)(new)\\\\s+(?!class\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.new.php\"\n        }\n      },\n      \"end\": \"(?i)(?=[^a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\])\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(parent|static|self)(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}])\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[0-7]{1,3}\",\n          \"name\": \"constant.character.escape.octal.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\x[0-9A-Fa-f]{1,2}\",\n          \"name\": \"constant.character.escape.hex.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\u{[0-9A-Fa-f]+}\",\n          \"name\": \"constant.character.escape.unicode.php\"\n        },\n        {\n          \"match\": \"\\\\\\\\[nrtvef$\\\\\\\\]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"begin\": \"{(?=\\\\$.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#variable-name\"\n        }\n      ]\n    },\n    \"interpolation_double_quoted\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\"\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"invoke-call\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(?i)((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(?=\\\\s*\\\\()\",\n      \"name\": \"meta.function-call.invoke.php\"\n    },\n    \"namespace\": {\n      \"begin\": \"(?i)(?:(namespace)|[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?(\\\\\\\\)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.language.namespace.php\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      },\n      \"end\": \"(?i)(?![a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\\\\\\\\)\",\n      \"name\": \"support.other.namespace.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\",\n          \"name\": \"punctuation.separator.inheritance.php\"\n        }\n      ]\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"match\": \"0[xX][0-9a-fA-F]+(?:_[0-9a-fA-F]+)*\",\n          \"name\": \"constant.numeric.hex.php\"\n        },\n        {\n          \"match\": \"0[bB][01]+(?:_[01]+)*\",\n          \"name\": \"constant.numeric.binary.php\"\n        },\n        {\n          \"match\": \"0[oO][0-7]+(?:_[0-7]+)*\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"0(?:_?[0-7]+)+\",\n          \"name\": \"constant.numeric.octal.php\"\n        },\n        {\n          \"match\": \"(?x)\\n(?:\\n  (?:[0-9]+(?:_[0-9]+)*)?(\\\\.)[0-9]+(?:_[0-9]+)*(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # .3\\n  [0-9]+(?:_[0-9]+)*(\\\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # 3.\\n  [0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)*                                   # 2e-3\\n)\",\n          \"name\": \"constant.numeric.decimal.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.decimal.period.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"0|[1-9](?:_?[0-9]+)*\",\n          \"name\": \"constant.numeric.decimal.php\"\n        }\n      ]\n    },\n    \"object\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\??->)\\\\s*(\\\\$?{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?i)(\\\\??->)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)(\\\\??->)\\\\s*((\\\\$+)?[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\"\n        }\n      ]\n    },\n    \"php-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\?\",\n          \"name\": \"keyword.operator.nullable-type.php\"\n        },\n        {\n          \"match\": \"[|&]\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(null|int|float|bool|string|array|object|callable|iterable|false|mixed|void)\\\\b\",\n          \"name\": \"keyword.other.type.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(parent|self)\\\\b\",\n          \"name\": \"storage.type.php\"\n        },\n        {\n          \"include\": \"#class-name\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#string-backtick\"\n        },\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"keyword.operator.key.php\"\n        },\n        {\n          \"match\": \"=\",\n          \"name\": \"keyword.operator.assignment.php\"\n        },\n        {\n          \"match\": \"&(?=\\\\s*\\\\$)\",\n          \"name\": \"storage.modifier.reference.php\"\n        },\n        {\n          \"begin\": \"(array)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.construct.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.array.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.array.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            }\n          },\n          \"end\": \"\\\\]|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#instantiation\"\n        },\n        {\n          \"begin\": \"(?xi)\\n(?=[a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]+\\n  (::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\\n)\",\n          \"end\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    \"php_doc\": {\n      \"patterns\": [\n        {\n          \"match\": \"^(?!\\\\s*\\\\*).*?(?:(?=\\\\*\\\\/)|$\\\\n?)\",\n          \"name\": \"invalid.illegal.missing-asterisk.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.php\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.wrong-access-type.phpdoc.php\"\n            }\n          },\n          \"match\": \"^\\\\s*\\\\*\\\\s*(@access)\\\\s+((public|private|protected)|(.+))\\\\s*$\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            },\n            \"2\": {\n              \"name\": \"markup.underline.link.php\"\n            }\n          },\n          \"match\": \"(@xlink)\\\\s+(.+)\\\\s*$\"\n        },\n        {\n          \"begin\": \"(@(?:global|param|property(-(read|write))?|return|throws|var))\\\\s+(?=[?A-Za-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]|\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/)\",\n          \"contentName\": \"meta.other.type.phpdoc.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types_array_multiple\"\n            },\n            {\n              \"include\": \"#php_doc_types_array_single\"\n            },\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n@\\n(\\n  api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\\n  license|link|method|property(-(read|write))?|package|param|return|see|since|source|\\n  static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\\n)\\\\b\",\n          \"name\": \"keyword.other.phpdoc.php\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.phpdoc.php\"\n            }\n          },\n          \"match\": \"{(@(link|inherit[Dd]oc)).+?}\",\n          \"name\": \"meta.tag.inline.phpdoc.php\"\n        }\n      ]\n    },\n    \"php_doc_types\": {\n      \"match\": \"(?i)\\\\??[a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*([|&]\\\\??[a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)*\",\n      \"captures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\?\",\n              \"name\": \"keyword.operator.nullable-type.php\"\n            },\n            {\n              \"match\": \"(?x)\\\\b\\n(string|integer|int|boolean|bool|float|double|object|mixed\\n|array|resource|void|null|callback|false|true|self|static)\\\\b\",\n              \"name\": \"keyword.other.type.php\"\n            },\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"match\": \"[|&]\",\n              \"name\": \"punctuation.separator.delimiter.php\"\n            }\n          ]\n        }\n      }\n    },\n    \"php_doc_types_array_multiple\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.type.begin.bracket.round.phpdoc.php\"\n        }\n      },\n      \"end\": \"(\\\\))(\\\\[\\\\])|(?=\\\\*/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.type.end.bracket.round.phpdoc.php\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#php_doc_types_array_multiple\"\n        },\n        {\n          \"include\": \"#php_doc_types_array_single\"\n        },\n        {\n          \"include\": \"#php_doc_types\"\n        },\n        {\n          \"match\": \"[|&]\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"php_doc_types_array_single\": {\n      \"match\": \"(?i)([a-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][a-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)(\\\\[\\\\])\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#php_doc_types\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.array.phpdoc.php\"\n        }\n      }\n    },\n    \"regex-double-quoted\": {\n      \"begin\": \"\\\"/(?=(\\\\\\\\.|[^\\\"/])++/[imsxeADSUXu]*\\\")\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(\\\")\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.double-quoted.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\){1,2}[.$^\\\\[\\\\]{}]\",\n          \"name\": \"constant.character.escape.regex.php\"\n        },\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"regex-single-quoted\": {\n      \"begin\": \"'/(?=(\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"(/)([imsxeADSUXu]*)(')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.regexp.single-quoted.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#single_quote_regex_escape\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arbitrary-repetition.php\"\n            }\n          },\n          \"match\": \"({)\\\\d+(,\\\\d+)?(})\",\n          \"name\": \"string.regexp.arbitrary-repetition.php\"\n        },\n        {\n          \"begin\": \"\\\\[(?:\\\\^?\\\\])?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.php\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"name\": \"string.regexp.character-class.php\"\n        },\n        {\n          \"match\": \"[$^+*]\",\n          \"name\": \"keyword.operator.regexp.php\"\n        }\n      ]\n    },\n    \"scope-resolution\": {\n      \"patterns\": [\n        {\n          \"match\": \"([A-Za-z_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\][A-Za-z0-9_\\\\x{7f}-\\\\x{10ffff}\\\\\\\\]*)(?=\\\\s*::)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(self|static|parent)\\\\b\",\n                  \"name\": \"storage.type.php\"\n                },\n                {\n                  \"include\": \"#class-name\"\n                },\n                {\n                  \"include\": \"#variable-name\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"(?i)(::)\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.bracket.round.php\"\n            }\n          },\n          \"end\": \"\\\\)|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.bracket.round.php\"\n            }\n          },\n          \"name\": \"meta.method-call.static.php\",\n          \"patterns\": [\n            {\n              \"include\": \"#named-arguments\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?i)(::)\\\\s*(class)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.class.php\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?xi)\\n(::)\\\\s*\\n(?:\\n  ((\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*) # Variable\\n  |\\n  ([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)       # Constant\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.class.php\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"constant.other.class.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"single_quote_regex_escape\": {\n      \"match\": \"\\\\\\\\(?:\\\\\\\\(?:\\\\\\\\[\\\\\\\\']?|[^'])|.)\",\n      \"name\": \"constant.character.escape.php\"\n    },\n    \"sql-string-double-quoted\": {\n      \"begin\": \"\\\"\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\\\\"|[^\\\"])*(?=\\\"|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\\\\"`']\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"'(?=((\\\\\\\\')|[^'\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.single.unclosed.sql\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`\\\"])*(\\\"|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"end\": \"'\",\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"end\": \"`\",\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation_double_quoted\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"sql-string-single-quoted\": {\n      \"begin\": \"'\\\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\\\b)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"contentName\": \"source.sql.embedded.php\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.sql.php\",\n      \"patterns\": [\n        {\n          \"match\": \"(#)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.number-sign.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"(--)(\\\\\\\\'|[^'])*(?='|$)\",\n          \"name\": \"comment.line.double-dash.sql\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\'`\\\"]\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"match\": \"`(?=((\\\\\\\\`)|[^`'])*('|$))\",\n          \"name\": \"string.quoted.other.backtick.unclosed.sql\"\n        },\n        {\n          \"match\": \"\\\"(?=((\\\\\\\\\\\")|[^\\\"'])*('|$))\",\n          \"name\": \"string.quoted.double.unclosed.sql\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    \"string-backtick\": {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.interpolated.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\`\",\n          \"name\": \"constant.character.escape.php\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.double.php\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation_double_quoted\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.php\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.php\"\n        }\n      },\n      \"name\": \"string.quoted.single.php\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\\\\\']\",\n          \"name\": \"constant.character.escape.php\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regex-double-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#regex-single-quoted\"\n        },\n        {\n          \"include\": \"#sql-string-single-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?xi)\\n\\\\b\\napc_(\\n  store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\\n  exists|fetch|load_constants|add|bin_(dump|load)(file)?\\n)\\\\b\",\n          \"name\": \"support.function.apc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\\n  pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\\n  array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\\n          (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\\n          pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\\n          reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\\n)\\\\b\",\n          \"name\": \"support.function.array.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\\n  time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\\n  php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\\n)\\\\b\",\n          \"name\": \"support.function.basic_functions.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\\\b\",\n          \"name\": \"support.function.bcmath.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bblenc_encrypt\\\\b\",\n          \"name\": \"support.function.blenc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\\\b\",\n          \"name\": \"support.function.bz2.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\\n  jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\\n)\\\\b\",\n          \"name\": \"support.function.calendar.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\\n  get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\\n)\\\\b\",\n          \"name\": \"support.function.classobj.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\\n  variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\\n           pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\\n)\\\\b\",\n          \"name\": \"support.function.com.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(isset|unset|eval|empty|list)\\\\b\",\n          \"name\": \"support.function.construct.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(print|echo)\\\\b\",\n          \"name\": \"support.function.construct.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\\\b\",\n          \"name\": \"support.function.ctype.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ncurl_(\\n  share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\\n  errno|error|exec|version|file_create|reset|getinfo|\\n  multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\\n)\\\\b\",\n          \"name\": \"support.function.curl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\\n  timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\\n  date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\\n         isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\\n         parse(_from_format)?|format|add|get_last_errors|modify))?|\\n  localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\\n)\\\\b\",\n          \"name\": \"support.function.datetime.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\\\b\",\n          \"name\": \"support.function.dba.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\\\b\",\n          \"name\": \"support.function.dbx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\\\b\",\n          \"name\": \"support.function.dir.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\neio_(\\n  sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\\n  seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\\n  event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\\n  read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\\n)\\\\b\",\n          \"name\": \"support.function.eio.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nenchant_(\\n  dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\\n  broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\\n)\\\\b\",\n          \"name\": \"support.function.enchant.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(split(i)?|sql_regcase|ereg(i)?(_replace)?)\\\\b\",\n          \"name\": \"support.function.ereg.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\\\b\",\n          \"name\": \"support.function.errorfunc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(shell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec)\\\\b\",\n          \"name\": \"support.function.exec.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\\\b\",\n          \"name\": \"support.function.exif.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nfann_(\\n  (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\\n  set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\\n       cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\\n                output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\\n                (max|min)_(cand|out)_epochs)|\\n       callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\\n       quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\\n       activation_(function|steepness)(_(hidden|layer|output))?|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\\n  save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\\n  create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\\n  test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\\n  print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\\n  get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\\n       network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\\n       cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\\n                weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\\n       total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\\n       quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\\n       rprop_((decrease|increase)_factor|delta_(max|min|zero)))\\n)\\\\b\",\n          \"name\": \"support.function.fann.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\\n  is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\\n  dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\\n  fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\\n  f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\\n  rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\\n)\\\\b\",\n          \"name\": \"support.function.file.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\\\b\",\n          \"name\": \"support.function.fileinfo.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\\\b\",\n          \"name\": \"support.function.filter.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bfastcgi_finish_request\\\\b\",\n          \"name\": \"support.function.fpm.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\\\b\",\n          \"name\": \"support.function.funchand.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\\\b\",\n          \"name\": \"support.function.gettext.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ngmp_(\\n  scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\\n  intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\\n  prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\\n)\\\\b\",\n          \"name\": \"support.function.gmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\\\b\",\n          \"name\": \"support.function.hash.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\\n        negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\\n        inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\\n        parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\\n        get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\\n  ob_(etag|deflate|inflate)handler\\n)\\\\b\",\n          \"name\": \"support.function.http.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\\\b\",\n          \"name\": \"support.function.iconv.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\\\b\",\n          \"name\": \"support.function.iisfunc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\\n  image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\\n        convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\\n        color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\\n        crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\\n        types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\\n        _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\\n        palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\\n        filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\\n        antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\\n        grab(screen|window)|xbm)\\n)\\\\b\",\n          \"name\": \"support.function.image.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\\n  ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\\n  php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\\n  assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\\n  get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\\n       magic_quotes_(gpc|runtime)|required_files|resources)|\\n  get(env|lastmod|rusage|my(inode|[gup]id))|\\n  memory_get_(peak_)?usage|main|magic_quotes_runtime\\n)\\\\b\",\n          \"name\": \"support.function.info.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nibase_(\\n  set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\\n  commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\\n  execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\\n  add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\\n  blob_(cancel|close|create|import|info|open|echo|add|get)\\n)\\\\b\",\n          \"name\": \"support.function.interbase.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\\n  numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\\n          get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\\n  collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\\n            get_(strength|sort_key|error_(code|message)|locale|attribute))|\\n  transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\\n  intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\\n  datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\\n           get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\\n  locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\\n          get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\\n  resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\\n  grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\\n  msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\\n)\\\\b\",\n          \"name\": \"support.function.intl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bjson_(decode|encode|last_error(_msg)?)\\\\b\",\n          \"name\": \"support.function.json.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nldap_(\\n  start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\\n  connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\\n  dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\\n  free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\\n  mod_(add|del|replace)\\n)\\\\b\",\n          \"name\": \"support.function.ldap.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\\\b\",\n          \"name\": \"support.function.libxml.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(ezmlm_hash|mail)\\\\b\",\n          \"name\": \"support.function.mail.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\\n  pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\\n  mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\\n)\\\\b\",\n          \"name\": \"support.function.math.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmb_(\\n  str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\\n  substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\\n  convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\\n  detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\\n  ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\\n  list_encodings|language|regex_(set_options|encoding)|get_info\\n)\\\\b\",\n          \"name\": \"support.function.mbstring.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  mcrypt_(\\n    cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\\n    enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\\n    get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\\n    get_(cipher_name|(block|iv|key)_size)|\\n    module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\\n            get_(supported_key_sizes|algo_(block|key)_size)))|\\n  mdecrypt_generic\\n)\\\\b\",\n          \"name\": \"support.function.mcrypt.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmemcache_debug\\\\b\",\n          \"name\": \"support.function.memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\\\b\",\n          \"name\": \"support.function.mhash.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\\\b\",\n          \"name\": \"support.function.mongo.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysql_(\\n  stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\\n  thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\\n  errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\\n  free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\\n  get_(client|host|proto|server)_info\\n)\\\\b\",\n          \"name\": \"support.function.mysql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmysqli_(\\n  ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\\n  stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\\n        attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\\n  select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\\n  client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\\n  dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\\n  embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\\n  fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\\n  release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\\n  get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\\n  master_query|bind_(param|result)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.mysqli.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_memcache_(set|get_config)\\\\b\",\n          \"name\": \"support.function.mysqlnd-memcache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\\\b\",\n          \"name\": \"support.function.mysqlnd-ms.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\\\b\",\n          \"name\": \"support.function.mysqlnd-qc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\\\b\",\n          \"name\": \"support.function.mysqlnd-uh.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\\n  headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\\n  openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\\n  get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\\n)\\\\b\",\n          \"name\": \"support.function.network.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bnsapi_(virtual|response_headers|request_headers)\\\\b\",\n          \"name\": \"support.function.nsapi.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\\n      column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\\n      closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\\n      free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\\n      result|bindbyname)|\\n  oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\\n       num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\\n       internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\\n       field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\\n       free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\\n)\\\\b\",\n          \"name\": \"support.function.oci8.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\\\b\",\n          \"name\": \"support.function.opcache.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nopenssl_(\\n  sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\\n  cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\\n  pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\\n  pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\\n  get_((cipher|md)_methods|cert_locations|(public|private)key)|\\n  x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\\n)\\\\b\",\n          \"name\": \"support.function.openssl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  output_(add_rewrite_var|reset_rewrite_vars)|flush|\\n  ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\\n      get_(status|contents|clean|flush|length|level))\\n)\\\\b\",\n          \"name\": \"support.function.output.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpassword_(hash|needs_rehash|verify|get_info)\\\\b\",\n          \"name\": \"support.function.password.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npcntl_(\\n  strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\\n  w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\\n)\\\\b\",\n          \"name\": \"support.function.pcntl.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npg_(\\n  socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\\n  num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\\n  client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\\n  unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\\n  escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\\n  field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\\n  fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\\n  lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\\n)\\\\b\",\n          \"name\": \"support.function.pgsql.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\\\b\",\n          \"name\": \"support.function.php_apache.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bdom_import_simplexml\\\\b\",\n          \"name\": \"support.function.php_dom.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nftp_(\\n  ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\\n  delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\\n)\\\\b\",\n          \"name\": \"support.function.php_ftp.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nimap_(\\n  (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\\n  num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\\n  8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\\n  fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\\n  rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\\n  msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\\n)\\\\b\",\n          \"name\": \"support.function.php_imap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nmssql_(\\n  select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\\n  field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\\n  rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\\n)\\\\b\",\n          \"name\": \"support.function.php_mssql.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nodbc_(\\n  statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\\n  cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\\n  prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\\n  fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\\n)\\\\b\",\n          \"name\": \"support.function.php_odbc.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\\\b\",\n          \"name\": \"support.function.php_pcre.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\\\b\",\n          \"name\": \"support.function.php_spl.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\\\b\",\n          \"name\": \"support.function.php_zip.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nposix_(\\n  strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\\n  get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\\n  get_last_error|mknod|mkfifo\\n)\\\\b\",\n          \"name\": \"support.function.posix.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bset(thread|proc)title\\\\b\",\n          \"name\": \"support.function.proctitle.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\npspell_(\\n  store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\\n  config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\\n)\\\\b\",\n          \"name\": \"support.function.pspell.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\\\b\",\n          \"name\": \"support.function.readline.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brecode(_(string|file))?\\\\b\",\n          \"name\": \"support.function.recode.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\\\b\",\n          \"name\": \"support.function.rrd.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\\n  msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\\n)\\\\b\",\n          \"name\": \"support.function.sem.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsession_(\\n  status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\\n  is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\\n  regenerate_id|get_cookie_params|module_name\\n)\\\\b\",\n          \"name\": \"support.function.session.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bshmop_(size|close|open|delete|write|read)\\\\b\",\n          \"name\": \"support.function.shmop.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bsimplexml_(import_dom|load_(string|file))\\\\b\",\n          \"name\": \"support.function.simplexml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  snmp(walk(oid)?|realwalk|get(next)?|set)|\\n  snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\\n        get_(valueretrieval|quick_print))|\\n  snmp[23]_(set|walk|real_walk|get(next)?)\\n)\\\\b\",\n          \"name\": \"support.function.snmp.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(is_soap_fault|use_soap_error_handler)\\\\b\",\n          \"name\": \"support.function.soap.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsocket_(\\n  shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\\n  create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\\n  read|get(peer|sock)name|get_option\\n)\\\\b\",\n          \"name\": \"support.function.sockets.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlite_(\\n  single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\\n  create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\\n  escape_string|error_string|exec|valid|key|query|field_name|factory|\\n  fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\\n  last_(insert_rowid|error)|array_query|rewind|busy_timeout\\n)\\\\b\",\n          \"name\": \"support.function.sqlite.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsqlsrv_(\\n  send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\\n  client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\\n  free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\\n)\\\\b\",\n          \"name\": \"support.function.sqlsrv.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nstats_(\\n  harmonic_mean|covariance|standard_deviation|skew|\\n  cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\\n       logistic|laplace|gamma|binomial|beta)|\\n  stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\\n  dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\\n        weibull|logistic|laplace|gamma|beta)|\\n  den_uniform|variance|kurtosis|absolute_deviation|\\n  rand_(setall|phrase_to_seeds|ranf|get_seeds|\\n        gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\\n             i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\\n)\\\\b\",\n          \"name\": \"support.function.stats.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  set_socket_blocking|\\n  stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\\n    set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\\n    context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\\n    encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\\n    resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\\n    bucket_(new|prepend|append|make_writeable)\\n  )\\n)\\\\b\",\n          \"name\": \"support.function.streamsfuncs.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\\n  str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\\n  str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\\n  strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\\n  html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\\n  chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\\n  uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\\n  quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\\n)\\\\b\",\n          \"name\": \"support.function.string.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nsybase_(\\n  set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\\n  unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\\n  affected_rows|result|get_last_message|min_(client|error|message|server)_severity\\n)\\\\b\",\n          \"name\": \"support.function.sybase.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(taint|is_tainted|untaint)\\\\b\",\n          \"name\": \"support.function.taint.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\\n        (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\\n        get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\\n  ob_tidyhandler\\n)\\\\b\",\n          \"name\": \"support.function.tidy.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\btoken_(name|get_all)\\\\b\",\n          \"name\": \"support.function.tokenizer.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\ntrader_(\\n  stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\\n  ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\\n  cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\\n      hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\\n      counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\\n      identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\\n      upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\\n      piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\\n      ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\\n      gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\\n      belthold|breakaway)|\\n  ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\\n  plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\\n  linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\\n  aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\\n  minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\\n)\\\\b\",\n          \"name\": \"support.function.trader.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\\\b\",\n          \"name\": \"support.function.uopz.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\\\b\",\n          \"name\": \"support.function.url.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\\n  is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\\n  unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\\n)\\\\b\",\n          \"name\": \"support.function.var.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\\\b\",\n          \"name\": \"support.function.wddx.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bxhprof_(sample_)?(disable|enable)\\\\b\",\n          \"name\": \"support.function.xhprof.php\"\n        },\n        {\n          \"match\": \"(?xi)\\n\\\\b\\n(\\n  utf8_(decode|encode)|\\n  xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\\n            (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\\n       parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\\n       get_(current_((column|line)_number|byte_index)|error_code))\\n)\\\\b\",\n          \"name\": \"support.function.xml.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlrpc_(\\n  server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\\n  is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\\n)\\\\b\",\n          \"name\": \"support.function.xmlrpc.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\nxmlwriter_(\\n  (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\\n  (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\\n  full_end_element|flush|\\n)\\\\b\",\n          \"name\": \"support.function.xmlwriter.php\"\n        },\n        {\n          \"match\": \"(?xi)\\\\b\\n(\\n  zlib_(decode|encode|get_coding_type)|readgzfile|\\n  gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\\n     write|rewind|read|getc|getss?)\\n)\\\\b\",\n          \"name\": \"support.function.zlib.php\"\n        },\n        {\n          \"match\": \"(?i)\\\\bis_int(eger)?\\\\b\",\n          \"name\": \"support.function.alias.php\"\n        }\n      ]\n    },\n    \"switch_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=switch\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bswitch\\\\b(?!\\\\s*\\\\(.*\\\\)\\\\s*:)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.switch.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.switch-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.switch-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.switch-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.switch-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"match_statement\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s+(?=match\\\\b)\"\n        },\n        {\n          \"begin\": \"\\\\bmatch\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.match.php\"\n            }\n          },\n          \"end\": \"}|(?=\\\\?>)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.section.match-block.end.bracket.curly.php\"\n            }\n          },\n          \"name\": \"meta.match-statement.php\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.match-expression.begin.bracket.round.php\"\n                }\n              },\n              \"end\": \"\\\\)|(?=\\\\?>)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.match-expression.end.bracket.round.php\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.section.match-block.begin.bracket.curly.php\"\n                }\n              },\n              \"end\": \"(?=}|\\\\?>)\",\n              \"patterns\": [\n                {\n                  \"match\": \"=>\",\n                  \"name\": \"keyword.definition.arrow.php\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"use-inner\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"begin\": \"(?i)\\\\b(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.use-as.php\"\n            }\n          },\n          \"end\": \"(?i)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"entity.other.alias.php\"\n            }\n          }\n        },\n        {\n          \"include\": \"#class-name\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.php\"\n        }\n      ]\n    },\n    \"var_basic\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(\\\\$+)[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*\",\n          \"name\": \"variable.other.php\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          }\n        }\n      ]\n    },\n    \"var_global\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\\\b\",\n      \"name\": \"variable.other.global.php\"\n    },\n    \"var_global_safer\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      },\n      \"match\": \"(\\\\$)((GLOBALS|_(ENV|SERVER|SESSION)))\",\n      \"name\": \"variable.other.global.safer.php\"\n    },\n    \"var_language\": {\n      \"match\": \"(\\\\$)this\\\\b\",\n      \"name\": \"variable.language.this.php\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.php\"\n        }\n      }\n    },\n    \"variable-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.class.php\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.php\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.begin.php\"\n            },\n            \"7\": {\n              \"name\": \"constant.numeric.index.php\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.index.php\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"10\": {\n              \"name\": \"string.unquoted.index.php\"\n            },\n            \"11\": {\n              \"name\": \"punctuation.section.array.end.php\"\n            }\n          },\n          \"match\": \"(?xi)\\n((\\\\$)(?<name>[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*))\\\\s*\\n(?:\\n  (\\\\??->)\\\\s*(\\\\g<name>)\\n  |\\n  (\\\\[)(?:(\\\\d+)|((\\\\$)\\\\g<name>)|([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*))(\\\\])\\n)?\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.php\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"match\": \"(?i)((\\\\${)(?<name>[a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)(}))\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#var_language\"\n        },\n        {\n          \"include\": \"#var_global\"\n        },\n        {\n          \"include\": \"#var_global_safer\"\n        },\n        {\n          \"include\": \"#var_basic\"\n        },\n        {\n          \"begin\": \"\\\\${(?=.*?})\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.php\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"ternary_shorthand\": {\n      \"match\": \"\\\\?:\",\n      \"name\": \"keyword.operator.ternary.php\"\n    },\n    \"ternary_expression\": {\n      \"begin\": \"\\\\?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.php\"\n        }\n      },\n      \"end\": \"(?<!:):(?!:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.ternary.php\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?i)^\\\\s*([a-z_\\\\x{7f}-\\\\x{10ffff}][a-z0-9_\\\\x{7f}-\\\\x{10ffff}]*)\\\\s*(?=:(?!:))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"null_coalescing\": {\n      \"match\": \"\\\\?\\\\?\",\n      \"name\": \"keyword.operator.null-coalescing.php\"\n    }\n  },\n  \"name\": \"php\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/plsql.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sql\", \"ddl\", \"dml\", \"pkh\", \"pks\", \"pkb\", \"pck\", \"pls\", \"plb\"],\n  \"foldingStartMarker\": \"(?i)^\\\\s*(begin|if|loop)\\\\b\",\n  \"foldingStopMarker\": \"(?i)^\\\\s*(end)\\\\b\",\n  \"keyEquivalent\": \"^~S\",\n  \"name\": \"plsql\",\n  \"patterns\": [\n    {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.oracle\"\n    },\n    {\n      \"match\": \"--.*$\",\n      \"name\": \"comment.line.double-dash.oracle\"\n    },\n    {\n      \"match\": \"(?i)(?:^\\\\s*)rem(?:\\\\s+.*$)\",\n      \"name\": \"comment.line.sqlplus.oracle\"\n    },\n    {\n      \"match\": \"(?i)(?:^\\\\s*)prompt(?:\\\\s+.*$)\",\n      \"name\": \"comment.line.sqlplus-prompt.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.oracle\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*(create)(\\\\s+or\\\\s+replace)?\\\\s+\",\n      \"name\": \"meta.create.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b(package)(\\\\s+body)?\\\\s+(\\\\S+)\",\n      \"name\": \"meta.package.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b(type)\\\\s+\\\"([^\\\"]+)\\\"\",\n      \"name\": \"meta.type.oracle\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.oracle\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.oracle\"\n        }\n      },\n      \"match\": \"(?i)^\\\\s*(function|procedure)\\\\s+\\\"?([-a-z0-9_]+)\\\"?\",\n      \"name\": \"meta.procedure.oracle\"\n    },\n    {\n      \"match\": \"[!<>:]?=|<>|<|>|\\\\+|(?<!\\\\.)\\\\*|-|(?<!^)/|\\\\|\\\\|\",\n      \"name\": \"keyword.operator.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(true|false|null|is\\\\s+(not\\\\s+)?null)\\\\b\",\n      \"name\": \"constant.language.oracle\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\\\\b\",\n      \"name\": \"constant.numeric.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(if|elsif|else|end\\\\s+if|loop|end\\\\s+loop|for|while|case|end\\\\s+case|continue|return|goto)\\\\b\",\n      \"name\": \"keyword.control.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(or|and|not|like)\\\\b\",\n      \"name\": \"keyword.other.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(%(isopen|found|notfound|rowcount)|commit|rollback|sqlerrm)\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(sql|sqlcode)\\\\b\",\n      \"name\": \"variable.language.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(ascii|asciistr|chr|compose|concat|convert|decompose|dump|initcap|instr|instrb|instrc|instr2|instr4|unistr|length|lengthb|lengthc|length2|length4|lower|lpad|ltrim|nchr|replace|rpad|rtrim|soundex|substr|translate|trim|upper|vsize)\\\\b\",\n      \"name\": \"support.function.builtin.char.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(add_months|current_date|current_timestamp|dbtimezone|last_day|localtimestamp|months_between|new_time|next_day|round|sessiontimezone|sysdate|tz_offset|systimestamp)\\\\b\",\n      \"name\": \"support.function.builtin.date.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(avg|count|sum|max|min|median|corr|corr_\\\\w+|covar_(pop|samp)|cume_dist|dense_rank|first|group_id|grouping|grouping_id|last|percentile_cont|percentile_disc|percent_rank|rank|regr_\\\\w+|row_number|stats_binomial_test|stats_crosstab|stats_f_test|stats_ks_test|stats_mode|stats_mw_test|stats_one_way_anova|stats_t_test_\\\\w+|stats_wsr_test|stddev|stddev_pop|stddev_samp|var_pop|var_samp|variance)\\\\b\",\n      \"name\": \"support.function.builtin.aggregate.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(bfilename|cardinality|coalesce|decode|empty_(blob|clob)|lag|lead|listagg|lnnvl|nanvl|nullif|nvl|nvl2|sys_(context|guid|typeid|connect_by_path|extract_utc)|uid|(current\\\\s+)?user|userenv|cardinality|(bulk\\\\s+)?collect|powermultiset(_by_cardinality)?|ora_hash|standard_hash|execute\\\\s+immediate|alter\\\\s+session)\\\\b\",\n      \"name\": \"support.function.builtin.advanced.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(bin_to_num|cast|chartorowid|from_tz|hextoraw|numtodsinterval|numtoyminterval|rawtohex|rawtonhex|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|scn_to_timestamp|timestamp_to_scn|rowidtochar|rowidtonchar|to_binary_double|to_binary_float|to_blob|to_nchar|con_dbid_to_id|con_guid_to_id|con_name_to_id|con_uid_to_id)\\\\b\",\n      \"name\": \"support.function.builtin.convert.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(abs|acos|asin|atan|atan2|bit_(and|or|xor)|ceil|cos|cosh|exp|extract|floor|greatest|least|ln|log|mod|power|remainder|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\\\b\",\n      \"name\": \"support.function.builtin.math.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(\\\\.(count|delete|exists|extend|first|last|limit|next|prior|trim|reverse))\\\\b\",\n      \"name\": \"support.function.builtin.collection.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cluster_details|cluster_distance|cluster_id|cluster_probability|cluster_set|feature_details|feature_id|feature_set|feature_value|prediction|prediction_bounds|prediction_cost|prediction_details|prediction_probability|prediction_set)\\\\b\",\n      \"name\": \"support.function.builtin.data_mining.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(appendchildxml|deletexml|depth|extract|existsnode|extractvalue|insertchildxml|insertxmlbefore|xmlcast|xmldiff|xmlelement|xmlexists|xmlisvalid|insertchildxmlafter|insertchildxmlbefore|path|sys_dburigen|sys_xmlagg|sys_xmlgen|updatexml|xmlagg|xmlcdata|xmlcolattval|xmlcomment|xmlconcat|xmlforest|xmlparse|xmlpi|xmlquery|xmlroot|xmlsequence|xmlserialize|xmltable|xmltransform)\\\\b\",\n      \"name\": \"support.function.builtin.xml.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(pragma\\\\s+(autonomous_transaction|serially_reusable|restrict_references|exception_init|inline))\\\\b\",\n      \"name\": \"keyword.other.pragma.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(p(i|o|io)_[-a-z0-9_]+)\\\\b\",\n      \"name\": \"variable.parameter.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(l_[-a-z0-9_]+)\\\\b\",\n      \"name\": \"variable.other.oracle\"\n    },\n    {\n      \"match\": \"(?i):\\\\b(new|old)\\\\b\",\n      \"name\": \"variable.trigger.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(connect\\\\s+by\\\\s+(nocycle\\\\s+)?(prior|level)|connect_by_(root|icycle)|level|start\\\\s+with)\\\\b\",\n      \"name\": \"keyword.hierarchical.sql.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(language|name|java|c)\\\\b\",\n      \"name\": \"keyword.wrapper.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(end|then|deterministic|exception|when|declare|begin|in|out|nocopy|is|as|exit|open|fetch|into|close|subtype|type|rowtype|default|exclusive|mode|lock|record|index\\\\s+by|result_cache|constant|comment|\\\\.(nextval|currval))\\\\b\",\n      \"name\": \"keyword.other.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(grant|revoke|alter|drop|force|add|check|constraint|primary\\\\s+key|foreign\\\\s+key|references|unique(\\\\s+index)?|column|sequence|increment\\\\s+by|cache|(materialized\\\\s+)?view|trigger|storage|tablespace|pct(free|used)|(init|max)trans|logging)\\\\b\",\n      \"name\": \"keyword.other.ddl.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(with|select|from|where|order\\\\s+(siblings\\\\s+)?by|group\\\\s+by|rollup|cube|((left|right|cross|natural)\\\\s+(outer\\\\s+)?)?join|on|asc|desc|update|set|insert|into|values|delete|distinct|union|minus|intersect|having|limit|table|between|like|of|row|(range|rows)\\\\s+between|nulls\\\\s+first|nulls\\\\s+last|before|after|all|any|exists|rownum|cursor|returning|over|partition\\\\s+by|merge|using|matched|pivot|unpivot)\\\\b\",\n      \"name\": \"keyword.other.sql.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(define|whenever\\\\s+sqlerror|exec|timing\\\\s+start|timing\\\\s+stop)\\\\b\",\n      \"name\": \"keyword.other.sqlplus.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(access_into_null|case_not_found|collection_is_null|cursor_already_open|dup_val_on_index|invalid_cursor|invalid_number|login_denied|no_data_found|not_logged_on|program_error|rowtype_mismatch|self_is_null|storage_error|subscript_beyond_count|subscript_outside_limit|sys_invalid_rowid|timeout_on_resource|too_many_rows|value_error|zero_divide|others)\\\\b\",\n      \"name\": \"support.type.exception.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((dbms|utl|owa|apex)_\\\\w+\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((htf|htp)\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"captures\": {\n        \"3\": {\n          \"name\": \"support.class.user-defined.oracle\"\n        }\n      },\n      \"match\": \"(?i)\\\\b((\\\\w+_pkg|pkg_\\\\w+)\\\\.(\\\\w+))\\\\b\",\n      \"name\": \"support.function.user-defined.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(raise|raise_application_error)\\\\b\",\n      \"name\": \"support.function.oracle\"\n    },\n    {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.oracle\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.oracle\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(char|varchar|varchar2|nchar|nvarchar2|boolean|date|timestamp(\\\\s+with(\\\\s+local)?\\\\s+time\\\\s+zone)?|interval\\\\s*day(\\\\(\\\\d*\\\\))?\\\\s*to\\\\s*month|interval\\\\s*year(\\\\(\\\\d*\\\\))?\\\\s*to\\\\s*second(\\\\(\\\\d*\\\\))?|xmltype|blob|clob|nclob|bfile|long|long\\\\s+raw|raw|number|integer|decimal|smallint|float|binary_(float|double|integer)|pls_(float|double|integer)|rowid|urowid|vararray|natural|naturaln|positive|positiven|signtype|simple_(float|double|integer))\\\\b\",\n      \"name\": \"storage.type.oracle\"\n    }\n  ],\n  \"scopeName\": \"source.plsql.oracle\",\n  \"uuid\": \"28DCE4DD-F5E1-4ED3-8847-64DA6B1F9163\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/postcss.tmLanguage.json",
    "content": "{\n  \"patterns\": [\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-tag\"\n        }\n      ],\n      \"begin\": \"/\\\\*\",\n      \"name\": \"comment.block.postcss\",\n      \"end\": \"\\\\*/\"\n    },\n    {\n      \"include\": \"#double-slash\"\n    },\n    {\n      \"include\": \"#double-quoted\"\n    },\n    {\n      \"include\": \"#single-quoted\"\n    },\n    {\n      \"include\": \"#interpolation\"\n    },\n    {\n      \"include\": \"#placeholder-selector\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#variable-root-css\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"include\": \"#unit\"\n    },\n    {\n      \"include\": \"#flag\"\n    },\n    {\n      \"include\": \"#dotdotdot\"\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.css.postcss\"\n        }\n      },\n      \"begin\": \"@include\",\n      \"name\": \"support.function.name.postcss.library\",\n      \"end\": \"(?=\\\\n|\\\\(|{|;)\"\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.css.postcss\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.function\",\n          \"match\": \"[\\\\w-]+\"\n        }\n      ],\n      \"begin\": \"@mixin|@function\",\n      \"name\": \"support.function.name.postcss.no-completions\",\n      \"end\": \"$\\\\n?|(?=\\\\(|{)\"\n    },\n    {\n      \"name\": \"string.quoted.double.css.postcss\",\n      \"match\": \"(?<=@import)\\\\s[\\\\w/.*-]+\"\n    },\n    {\n      \"begin\": \"@\",\n      \"name\": \"keyword.control.at-rule.css.postcss\",\n      \"end\": \"$\\\\n?|\\\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\\\s|,))|(?=;)\"\n    },\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ],\n      \"begin\": \"#\",\n      \"name\": \"entity.other.attribute-name.id.css.postcss\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|;|\\\\(|\\\\)|\\\\.|\\\\[|{|>)\"\n    },\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ],\n      \"begin\": \"\\\\.|(?<=&)(-|_)\",\n      \"name\": \"entity.other.attribute-name.class.css.postcss\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|;|\\\\(|\\\\)|\\\\[|{|>)\"\n    },\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        },\n        {\n          \"name\": \"keyword.other.regex.postcss\",\n          \"match\": \"\\\\^|\\\\$|\\\\*|~\"\n        }\n      ],\n      \"begin\": \"\\\\[\",\n      \"name\": \"entity.other.attribute-selector.postcss\",\n      \"end\": \"\\\\]\"\n    },\n    {\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.postcss\",\n      \"match\": \"(?<=\\\\]|\\\\)|not\\\\(|\\\\*|>|>\\\\s):[a-z:-]+|(::|:-)[a-z:-]+\"\n    },\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#double-slash\"\n        },\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#rgb-value\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#flag\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#function-content\"\n        },\n        {\n          \"include\": \"#function-content-var\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#parent-selector\"\n        },\n        {\n          \"include\": \"#property-value\"\n        }\n      ],\n      \"begin\": \":\",\n      \"name\": \"meta.property-list.css.postcss\",\n      \"end\": \"$\\\\n?|(?=;|\\\\s\\\\(|and\\\\(|{|}|\\\\),)\"\n    },\n    {\n      \"include\": \"#rgb-value\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#function-content\"\n    },\n    {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ],\n      \"begin\": \"(?<!\\\\-|\\\\()\\\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|x)\\\\b(?!-|\\\\)|:\\\\s)|&\",\n      \"name\": \"entity.name.tag.css.postcss.symbol\",\n      \"end\": \"(?=\\\\s|,|;|\\\\(|\\\\)|\\\\.|\\\\[|{|>|-|_)\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"name\": \"support.type.property-name.css.postcss\",\n      \"match\": \"[a-z-]+((?=:|#{))\"\n    },\n    {\n      \"include\": \"#reserved-words\"\n    },\n    {\n      \"include\": \"#property-value\"\n    }\n  ],\n  \"name\": \"postcss\",\n  \"repository\": {\n    \"reserved-words\": {\n      \"name\": \"support.type.property-name.css.postcss\",\n      \"match\": \"\\\\b(false|from|in|not|null|through|to|true)\\\\b\"\n    },\n    \"double-quoted\": {\n      \"patterns\": [\n        {\n          \"include\": \"#quoted-interpolation\"\n        }\n      ],\n      \"begin\": \"\\\"\",\n      \"name\": \"string.quoted.double.css.postcss\",\n      \"end\": \"\\\"\"\n    },\n    \"operator\": {\n      \"name\": \"keyword.operator.postcss\",\n      \"match\": \"\\\\+|\\\\s-\\\\s|\\\\s-(?=\\\\$)|(?<=\\\\()-(?=\\\\$)|\\\\s-(?=\\\\()|\\\\*|/|%|=|!|<|>|~\"\n    },\n    \"function-content\": {\n      \"name\": \"string.quoted.double.css.postcss\",\n      \"match\": \"(?<=url\\\\(|format\\\\(|attr\\\\().+?(?=\\\\))\"\n    },\n    \"double-slash\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-tag\"\n        }\n      ],\n      \"begin\": \"//\",\n      \"name\": \"comment.line.postcss\",\n      \"end\": \"$\"\n    },\n    \"numeric\": {\n      \"name\": \"constant.numeric.css.postcss\",\n      \"match\": \"(-|\\\\.)?[0-9]+(\\\\.[0-9]+)?\"\n    },\n    \"variable-root-css\": {\n      \"name\": \"variable.parameter.postcss\",\n      \"match\": \"(?<!&)--[\\\\w-]+\"\n    },\n    \"function\": {\n      \"name\": \"support.function.name.postcss\",\n      \"match\": \"(?<=[\\\\s|\\\\(|,|:])(?!url|format|attr)[\\\\w-][\\\\w-]*(?=\\\\()\"\n    },\n    \"rgb-value\": {\n      \"name\": \"constant.other.color.rgb-value.css.postcss\",\n      \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b\"\n    },\n    \"comment-tag\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.tag.postcss\",\n          \"match\": \"[\\\\w-]+\"\n        }\n      ],\n      \"begin\": \"{{\",\n      \"name\": \"comment.tags.postcss\",\n      \"end\": \"}}\"\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        }\n      ],\n      \"begin\": \"#{\",\n      \"name\": \"support.function.interpolation.postcss\",\n      \"end\": \"}\"\n    },\n    \"unit\": {\n      \"name\": \"keyword.other.unit.css.postcss\",\n      \"match\": \"(?<=[\\\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|%)\"\n    },\n    \"function-content-var\": {\n      \"name\": \"variable.parameter.postcss\",\n      \"match\": \"(?<=var\\\\()[\\\\w-]+(?=\\\\))\"\n    },\n    \"dotdotdot\": {\n      \"name\": \"variable.other\",\n      \"match\": \"\\\\.{3}\"\n    },\n    \"variable\": {\n      \"name\": \"variable.parameter.postcss\",\n      \"match\": \"\\\\$[\\\\w-]+\"\n    },\n    \"single-quoted\": {\n      \"patterns\": [\n        {\n          \"include\": \"#quoted-interpolation\"\n        }\n      ],\n      \"begin\": \"'\",\n      \"name\": \"string.quoted.single.css.postcss\",\n      \"end\": \"'\"\n    },\n    \"quoted-interpolation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#unit\"\n        }\n      ],\n      \"begin\": \"#{\",\n      \"name\": \"support.function.interpolation.postcss\",\n      \"end\": \"}\"\n    },\n    \"pseudo-class\": {\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.postcss\",\n      \"match\": \":[a-z:-]+\"\n    },\n    \"property-value\": {\n      \"name\": \"meta.property-value.css.postcss, support.constant.property-value.css.postcss\",\n      \"match\": \"[\\\\w-]+\"\n    },\n    \"placeholder-selector\": {\n      \"begin\": \"(?<!\\\\d)%(?!\\\\d)\",\n      \"name\": \"entity.other.attribute-name.placeholder-selector.postcss\",\n      \"end\": \"$\\\\n?|\\\\s|(?=;|{)\"\n    },\n    \"flag\": {\n      \"name\": \"keyword.other.important.css.postcss\",\n      \"match\": \"!(important|default|optional|global)\"\n    },\n    \"parent-selector\": {\n      \"name\": \"entity.name.tag.css.postcss\",\n      \"match\": \"&\"\n    }\n  },\n  \"foldingStartMarker\": \"/\\\\*|^#|^\\\\*|^\\\\b|^\\\\.\",\n  \"foldingStopMarker\": \"\\\\*/|^\\\\s*$\",\n  \"fileTypes\": [\"pcss\", \"postcss\"],\n  \"uuid\": \"90DAEA60-88AA-11E2-9E96-0800200C9A66\",\n  \"scopeName\": \"source.css.postcss\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/powershell.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/PowerShell/EditorSyntax/blob/master/PowerShellSyntax.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/PowerShell/EditorSyntax/commit/742f0b5d4b60f5930c0b47fcc1f646860521296e\",\n  \"name\": \"powershell\",\n  \"scopeName\": \"source.powershell\",\n  \"patterns\": [\n    {\n      \"begin\": \"<#\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.block.begin.powershell\"\n        }\n      },\n      \"end\": \"#>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.block.end.powershell\"\n        }\n      },\n      \"name\": \"comment.block.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentEmbeddedDocs\"\n        }\n      ]\n    },\n    {\n      \"match\": \"[2-6]>&1|>>|>|<<|<|>|>\\\\||[1-6]>|[1-6]>>\",\n      \"name\": \"keyword.operator.redirection.powershell\"\n    },\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#commentLine\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#subexpression\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#attribute\"\n    },\n    {\n      \"include\": \"#UsingDirective\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#hashtable\"\n    },\n    {\n      \"include\": \"#doubleQuotedString\"\n    },\n    {\n      \"include\": \"#scriptblock\"\n    },\n    {\n      \"comment\": \"Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)\",\n      \"include\": \"#doubleQuotedStringEscapes\"\n    },\n    {\n      \"begin\": \"['\\\\x{2018}-\\\\x{201B}]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"['\\\\x{2018}-\\\\x{201B}]\",\n      \"applyEndPatternLast\": true,\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.single.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"['\\\\x{2018}-\\\\x{201B}]{2}\",\n          \"name\": \"constant.character.escape.powershell\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(@[\\\"\\\\x{201C}-\\\\x{201E}])\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"^[\\\"\\\\x{201C}-\\\\x{201E}]@\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.double.heredoc.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#variableNoProperty\"\n        },\n        {\n          \"include\": \"#doubleQuotedStringEscapes\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(@['\\\\x{2018}-\\\\x{201B}])\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"^['\\\\x{2018}-\\\\x{201B}]@\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.single.heredoc.powershell\"\n    },\n    {\n      \"include\": \"#numericConstant\"\n    },\n    {\n      \"begin\": \"(@)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.array.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.array-expression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"((\\\\$))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substatement.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.subexpression.powershell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"comment\": \"TODO: move to repo; make recursive.\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.complex.subexpression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(\\\\b(([A-Za-z0-9\\\\-_\\\\.]+)\\\\.(?i:exe|com|cmd|bat))\\\\b)\",\n      \"name\": \"support.function.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w|-|\\\\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\\\\?)(?!\\\\w)\",\n      \"name\": \"keyword.control.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w|-|[^\\\\)]\\\\.)((?i:(foreach|where)(?!-object))|%|\\\\?)(?!\\\\w)\",\n      \"name\": \"keyword.control.powershell\"\n    },\n    {\n      \"begin\": \"(?<!\\\\w)(--%)(?!\\\\w)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.powershell\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"match\": \".+\",\n          \"name\": \"string.unquoted.powershell\"\n        }\n      ],\n      \"comment\": \"This should be moved to the repository at some point.\"\n    },\n    {\n      \"comment\": \"This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.\",\n      \"match\": \"(?<!\\\\w)((?i:hidden|static))(?!\\\\w)\",\n      \"name\": \"storage.modifier.powershell\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.powershell\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function\"\n        }\n      },\n      \"comment\": \"capture should be entity.name.type, but it doesn't provide a good color in the default schema.\",\n      \"match\": \"(?<!\\\\w|-)((?i:class)|%|\\\\?)(?:\\\\s)+((?:\\\\p{L}|\\\\d|_|-|)+)\\\\b\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:is(?:not)?|as)\\\\b\",\n      \"name\": \"keyword.operator.comparison.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.comparison.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:join|split)(?!\\\\p{L})|!\",\n      \"name\": \"keyword.operator.unary.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:and|or|not|xor)(?!\\\\p{L})|!\",\n      \"name\": \"keyword.operator.logical.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.bitwise.powershell\"\n    },\n    {\n      \"match\": \"(?<!\\\\w)-(?i:f)(?!\\\\p{L})\",\n      \"name\": \"keyword.operator.string-format.powershell\"\n    },\n    {\n      \"match\": \"[+%*/-]?=|[+/*%-]\",\n      \"name\": \"keyword.operator.assignment.powershell\"\n    },\n    {\n      \"match\": \"\\\\|{2}|&{2}|;\",\n      \"name\": \"punctuation.terminator.statement.powershell\"\n    },\n    {\n      \"match\": \"&|(?<!\\\\w)\\\\.(?= )|`|,|\\\\|\",\n      \"name\": \"keyword.operator.other.powershell\"\n    },\n    {\n      \"comment\": \"This is very imprecise, is there a syntax for 'must come after...' \",\n      \"match\": \"(?<!\\\\s|^)\\\\.\\\\.(?=\\\\-?\\\\d|\\\\(|\\\\$)\",\n      \"name\": \"keyword.operator.range.powershell\"\n    }\n  ],\n  \"repository\": {\n    \"commentLine\": {\n      \"begin\": \"(?<![`\\\\\\\\-])(#)#*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.powershell\"\n        }\n      },\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.line.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentEmbeddedDocs\"\n        },\n        {\n          \"include\": \"#RequiresDirective\"\n        }\n      ]\n    },\n    \"attribute\": {\n      \"begin\": \"(\\\\[)\\\\s*\\\\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.bracket.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"support.function.attribute.powershell\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.bracket.end.powershell\"\n        }\n      },\n      \"name\": \"meta.attribute.powershell\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.begin.powershell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.group.end.powershell\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"match\": \"(?i)\\\\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\\\\b(?:\\\\s+)?(=)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.attribute.powershell\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.powershell\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Verb-Noun pattern:\",\n          \"match\": \"(?:(\\\\p{L}|\\\\d|_|-|\\\\\\\\|\\\\:)*\\\\\\\\)?\\\\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\\\\-.+?(?:\\\\.(?i:exe|cmd|bat|ps1))?\\\\b\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:foreach-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:where-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:sort-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        },\n        {\n          \"comment\": \"Builtin cmdlets with reserved verbs\",\n          \"match\": \"(?<!\\\\w)(?i:tee-object)(?!\\\\w)\",\n          \"name\": \"support.function.powershell\"\n        }\n      ]\n    },\n    \"commentEmbeddedDocs\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.string.documentation.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            }\n          },\n          \"comment\": \"these embedded doc keywords do not support arguments, must be the only thing on the line\",\n          \"match\": \"(?:^|\\\\G)(?i:\\\\s*(\\\\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\\\\s*$\",\n          \"name\": \"comment.documentation.embedded.powershell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.string.documentation.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.documentation.powershell\"\n            }\n          },\n          \"comment\": \"these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match\",\n          \"match\": \"(?:^|\\\\G)(?i:\\\\s*(\\\\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\\\\s+(.+?)\\\\s*$\",\n          \"name\": \"comment.documentation.embedded.powershell\"\n        }\n      ]\n    },\n    \"doubleQuotedStringEscapes\": {\n      \"patterns\": [\n        {\n          \"match\": \"`[`0abefnrtv'\\\"\\\\x{2018}-\\\\x{201E}$]\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"include\": \"#unicodeEscape\"\n        }\n      ]\n    },\n    \"unicodeEscape\": {\n      \"comment\": \"`u{xxxx} added in PowerShell 6.0\",\n      \"patterns\": [\n        {\n          \"match\": \"`u\\\\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\\\\g<1>{1,5})}\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"match\": \"`u(?:\\\\{[0-9a-fA-F]{,6}.)?\",\n          \"name\": \"invalid.character.escape.powershell\"\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"^(?:\\\\s*+)(?i)(function|filter|configuration|workflow)\\\\s+(?:(global|local|script|private):)?((?:\\\\p{L}|\\\\d|_|-|\\\\.)+)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.function.powershell\"\n        },\n        \"1\": {\n          \"name\": \"storage.type.powershell\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.scope.powershell\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.powershell\"\n        }\n      },\n      \"end\": \"(?=\\\\{|\\\\()\",\n      \"patterns\": [\n        {\n          \"include\": \"#commentLine\"\n        }\n      ]\n    },\n    \"subexpression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        }\n      },\n      \"name\": \"meta.group.simple.subexpression.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"begin\": \"(((\\\\$)))((\\\\())\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.substatement.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.substatement.powershell\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.section.embedded.substatement.begin.powershell\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.group.begin.powershell\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.section.embedded.substatement.begin.powershell\"\n        }\n      },\n      \"contentName\": \"interpolated.complex.source.powershell\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.group.end.powershell\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.section.embedded.substatement.end.powershell\"\n        }\n      },\n      \"name\": \"meta.embedded.substatement.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"numericConstant\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.hex.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?(?:[0-9_]+)?\\\\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.octal.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+\\\\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+[\\\\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.powershell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.powershell\"\n            }\n          },\n          \"match\": \"(?<!\\\\w)([-+]?[0-9_]+[\\\\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\\\b\"\n        }\n      ]\n    },\n    \"scriptblock\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.braces.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.braces.end.powershell\"\n        }\n      },\n      \"name\": \"meta.scriptblock.powershell\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"type\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.bracket.begin.powershell\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.bracket.end.powershell\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?!\\\\d+|\\\\.)(?:\\\\p{L}|\\\\p{N}|\\\\.)+\",\n          \"name\": \"storage.type.powershell\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            }\n          },\n          \"comment\": \"These are special constants.\",\n          \"match\": \"(\\\\$)(?i:(False|Null|True))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.constant.variable.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"These are the other built-in constants.\",\n          \"match\": \"(\\\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.variable.automatic.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.\",\n          \"match\": \"(\\\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\\\b)((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Style preference variables as language variables so that they stand out.\",\n          \"match\": \"(\\\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$|@)(global|local|private|script|using|workflow):((?:\\\\p{L}|\\\\d|_)+))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin.powershell\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end.powershell\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\\\}))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$|@)((?:\\\\p{L}|\\\\d|_)+:)?((?:\\\\p{L}|\\\\d|_)+))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin.powershell\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end.powershell\"\n            },\n            \"6\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)((?:\\\\p{L}|\\\\d|_)+:)?([^}]*[^}`])(\\\\}))((?:\\\\.(?:\\\\p{L}|\\\\d|_)+)*\\\\b)?\"\n        }\n      ]\n    },\n    \"UsingDirective\": {\n      \"match\": \"(?<!\\\\w)(?i:(using))\\\\s+(?i:(namespace|module))\\\\s+(?i:((?:\\\\w+(?:\\\\.)?)+))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.using.powershell\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.powershell\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.powershell\"\n        }\n      }\n    },\n    \"RequiresDirective\": {\n      \"begin\": \"(?<=#)(?i:(requires))\\\\s\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.requires.powershell\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.requires.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)\",\n          \"name\": \"keyword.other.powershell\"\n        },\n        {\n          \"match\": \"(?<!-)\\\\b\\\\p{L}+|\\\\d+(?:\\\\.\\\\d+)*\",\n          \"name\": \"variable.parameter.powershell\"\n        },\n        {\n          \"include\": \"#hashtable\"\n        }\n      ]\n    },\n    \"variableNoProperty\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            }\n          },\n          \"comment\": \"These are special constants.\",\n          \"match\": \"(\\\\$)(?i:(False|Null|True))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.constant.variable.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"These are the other built-in constants.\",\n          \"match\": \"(\\\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.variable.automatic.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Automatic variables are not constants, but they are read-only...\",\n          \"match\": \"(\\\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\\\b)\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.language.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"comment\": \"Style preference variables as language variables so that they stand out.\",\n          \"match\": \"(\\\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\\\\b\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(global|local|private|script|using|workflow):((?:\\\\p{L}|\\\\d|_)+))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.scope.powershell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.other.powershell\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\\\}))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.member.powershell\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)((?:\\\\p{L}|\\\\d|_)+:)?((?:\\\\p{L}|\\\\d|_)+))\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.powershell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.braces.begin\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.drive.powershell\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.braces.end\"\n            }\n          },\n          \"match\": \"(?i:(\\\\$)(\\\\{)((?:\\\\p{L}|\\\\d|_)+:)?([^}]*[^}`])(\\\\}))\"\n        }\n      ]\n    },\n    \"hashtable\": {\n      \"begin\": \"(@)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.hashtable.begin.powershell\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.braces.begin.powershell\"\n        }\n      },\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.braces.end.powershell\"\n        }\n      },\n      \"name\": \"meta.hashtable.powershell\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.powershell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.powershell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.powershell\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.assignment.powershell\"\n            }\n          },\n          \"match\": \"\\\\b((?:\\\\'|\\\\\\\")?)(\\\\w+)((?:\\\\'|\\\\\\\")?)(?:\\\\s+)?(=)(?:\\\\s+)?\",\n          \"name\": \"meta.hashtable.assignment.powershell\"\n        },\n        {\n          \"include\": \"#scriptblock\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"doubleQuotedString\": {\n      \"begin\": \"[\\\"\\\\x{201C}-\\\\x{201E}]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.powershell\"\n        }\n      },\n      \"end\": \"[\\\"\\\\x{201C}-\\\\x{201E}]\",\n      \"applyEndPatternLast\": true,\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.powershell\"\n        }\n      },\n      \"name\": \"string.quoted.double.powershell\",\n      \"patterns\": [\n        {\n          \"match\": \"(?i)\\\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\\\.[A-Z]{2,64}\\\\b\"\n        },\n        {\n          \"include\": \"#variableNoProperty\"\n        },\n        {\n          \"include\": \"#doubleQuotedStringEscapes\"\n        },\n        {\n          \"match\": \"[\\\"\\\\x{201C}-\\\\x{201E}]{2}\",\n          \"name\": \"constant.character.escape.powershell\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"match\": \"`\\\\s*$\",\n          \"name\": \"keyword.other.powershell\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/prisma.tmLanguage.json",
    "content": "{\n  \"name\": \"prisma\",\n  \"scopeName\": \"source.prisma\",\n  \"fileTypes\": [\"prisma\"],\n  \"patterns\": [\n    {\n      \"include\": \"#triple_comment\"\n    },\n    {\n      \"include\": \"#double_comment\"\n    },\n    {\n      \"include\": \"#model_block_definition\"\n    },\n    {\n      \"include\": \"#config_block_definition\"\n    },\n    {\n      \"include\": \"#enum_block_definition\"\n    },\n    {\n      \"include\": \"#type_definition\"\n    }\n  ],\n  \"repository\": {\n    \"model_block_definition\": {\n      \"begin\": \"^\\\\s*(model|type)\\\\s+([A-Za-z][\\\\w]*)\\\\s*({)\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.model.prisma\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.model.prisma\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#triple_comment\"\n        },\n        {\n          \"include\": \"#double_comment\"\n        },\n        {\n          \"include\": \"#field_definition\"\n        }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"enum_block_definition\": {\n      \"begin\": \"^\\\\s*(enum)\\\\s+([A-Za-z][\\\\w]*)\\\\s+({)\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.enum.prisma\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.enum.prisma\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#triple_comment\"\n        },\n        {\n          \"include\": \"#double_comment\"\n        },\n        {\n          \"include\": \"#enum_value_definition\"\n        }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"config_block_definition\": {\n      \"begin\": \"^\\\\s*(generator|datasource)\\\\s+([A-Za-z][\\\\w]*)\\\\s+({)\",\n      \"name\": \"source.prisma.embedded.source\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.config.prisma\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.config.prisma\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#triple_comment\"\n        },\n        {\n          \"include\": \"#double_comment\"\n        },\n        {\n          \"include\": \"#assignment\"\n        }\n      ],\n      \"end\": \"\\\\s*\\\\}\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"assignment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(\\\\w+)\\\\s*(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.other.assignment.prisma\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.terraform\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#value\"\n            },\n            {\n              \"include\": \"#double_comment_inline\"\n            }\n          ],\n          \"end\": \"\\\\n\"\n        }\n      ]\n    },\n    \"field_definition\": {\n      \"name\": \"scalar.field\",\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(\\\\w+)(\\\\s*:)?\\\\s+((?!(?:Int|String|DateTime|Bytes|Decimal|Float|Json|Boolean)\\\\b)\\\\b\\\\w+)?(Int|String|DateTime|Bytes|Decimal|Float|Json|Boolean)?(\\\\[\\\\])?(\\\\?)?(\\\\!)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.assignment.prisma\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.colon.prisma\"\n            },\n            \"3\": {\n              \"name\": \"variable.language.relations.prisma\"\n            },\n            \"4\": {\n              \"name\": \"support.type.primitive.prisma\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.list_type.prisma\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.optional_type.prisma\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.required_type.prisma\"\n            }\n          }\n        },\n        {\n          \"include\": \"#attribute_with_arguments\"\n        },\n        {\n          \"include\": \"#attribute\"\n        }\n      ]\n    },\n    \"type_definition\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(type)\\\\s+(\\\\w+)\\\\s*=\\\\s*(\\\\w+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.type.prisma\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.type.prisma\"\n            },\n            \"3\": {\n              \"name\": \"support.type.primitive.prisma\"\n            }\n          }\n        },\n        {\n          \"include\": \"#attribute_with_arguments\"\n        },\n        {\n          \"include\": \"#attribute\"\n        }\n      ]\n    },\n    \"enum_value_definition\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(\\\\w+)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.assignment.prisma\"\n            }\n          }\n        },\n        {\n          \"include\": \"#attribute_with_arguments\"\n        },\n        {\n          \"include\": \"#attribute\"\n        }\n      ]\n    },\n    \"attribute_with_arguments\": {\n      \"name\": \"source.prisma.attribute.with_arguments\",\n      \"begin\": \"(@@?[\\\\w\\\\.]+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.attribute.prisma\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#named_argument\"\n        },\n        {\n          \"include\": \"#value\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"attribute\": {\n      \"name\": \"source.prisma.attribute\",\n      \"match\": \"(@@?[\\\\w\\\\.]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.attribute.prisma\"\n        }\n      }\n    },\n    \"array\": {\n      \"name\": \"source.prisma.array\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"value\": {\n      \"name\": \"source.prisma.value\",\n      \"patterns\": [\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#functional\"\n        },\n        {\n          \"include\": \"#literal\"\n        }\n      ]\n    },\n    \"functional\": {\n      \"name\": \"source.prisma.functional\",\n      \"begin\": \"(\\\\w+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.functional.prisma\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#value\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.prisma\"\n        }\n      }\n    },\n    \"literal\": {\n      \"name\": \"source.prisma.literal\",\n      \"patterns\": [\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#number\"\n        },\n        {\n          \"include\": \"#double_quoted_string\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"identifier\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\w)+\\\\b\",\n          \"name\": \"support.constant.constant.prisma\"\n        }\n      ]\n    },\n    \"map_key\": {\n      \"name\": \"source.prisma.key\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\w+)\\\\s*(:)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.key.prisma\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.separator.key-value.prisma\"\n            }\n          }\n        }\n      ]\n    },\n    \"named_argument\": {\n      \"name\": \"source.prisma.named_argument\",\n      \"patterns\": [\n        {\n          \"include\": \"#map_key\"\n        },\n        {\n          \"include\": \"#value\"\n        }\n      ]\n    },\n    \"triple_comment\": {\n      \"begin\": \"///\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.prisma\"\n    },\n    \"double_comment\": {\n      \"begin\": \"//\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.prisma\"\n    },\n    \"double_comment_inline\": {\n      \"match\": \"//[^\\\\n]*\",\n      \"name\": \"comment.prisma\"\n    },\n    \"boolean\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean.prisma\"\n    },\n    \"number\": {\n      \"match\": \"((0(x|X)[0-9a-fA-F]*)|(\\\\+|-)?\\\\b(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\\\b\",\n      \"name\": \"constant.numeric.prisma\"\n    },\n    \"double_quoted_string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.start.prisma\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.double.end.prisma\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string_interpolation\"\n        },\n        {\n          \"match\": \"([\\\\w\\\\-\\\\/\\\\._\\\\\\\\%@:\\\\?=]+)\",\n          \"name\": \"string.quoted.double.prisma\"\n        }\n      ],\n      \"name\": \"unnamed\"\n    },\n    \"string_interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.interpolation.start.prisma\"\n            }\n          },\n          \"end\": \"\\\\s*\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.interpolation.end.prisma\"\n            }\n          },\n          \"name\": \"source.tag.embedded.source.prisma\",\n          \"patterns\": [\n            {\n              \"include\": \"#value\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/prolog.tmLanguage.json",
    "content": "{\n  \"comment\": \"This Source Code Form is subject to the terms of the Mozilla Public License,\\nv. 2.0. If a copy of the MPL was not distributed with this file, You can obtain\\none at http://mozilla.org/MPL/2.0/.\",\n  \"name\": \"prolog\",\n  \"scopeName\": \"source.prolog\",\n  \"fileTypes\": [\"pl\", \"pro\"],\n  \"uuid\": \"df89928b-6612-475a-b414-f319d9b98664\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"name\": \"meta.clause.body.prolog\",\n      \"begin\": \"(?<=:-)\\\\s*\",\n      \"end\": \"(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.clause.bodyend.prolog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#builtin\"\n        },\n        {\n          \"include\": \"#controlandkeywords\"\n        },\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"name\": \"meta.clause.body.prolog\",\n          \"match\": \".\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.clause.head.prolog\",\n      \"begin\": \"^\\\\s*([a-z][a-zA-Z0-9_]*)(\\\\(?)(?=.*:-.*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.clause.prolog\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin\"\n        }\n      },\n      \"end\": \"((\\\\)?))\\\\s*(:-)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.clause.bodybegin.prolog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.dcg.head.prolog\",\n      \"begin\": \"^\\\\s*([a-z][a-zA-Z0-9_]*)(\\\\(?)(?=.*-->.*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.dcg.prolog\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin\"\n        }\n      },\n      \"end\": \"((\\\\)?))\\\\s*(-->)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.dcg.bodybegin.prolog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.dcg.body.prolog\",\n      \"begin\": \"(?<=-->)\\\\s*\",\n      \"end\": \"(\\\\.)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.dcg.bodyend.prolog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#controlandkeywords\"\n        },\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"name\": \"meta.dcg.body.prolog\",\n          \"match\": \".\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.fact.prolog\",\n      \"begin\": \"^\\\\s*([a-zA-Z][a-zA-Z0-9_]*)(\\\\(?)(?!.*(:-|-->).*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.fact.prolog\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin\"\n        }\n      },\n      \"end\": \"((\\\\)?))\\\\s*(\\\\.)(?!\\\\d+)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.fact.end.prolog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#atom\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"atom\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.atom.simple.prolog\",\n          \"match\": \"(?<![a-zA-Z0-9_])[a-z][a-zA-Z0-9_]*(?!\\\\s*\\\\(|[a-zA-Z0-9_])\"\n        },\n        {\n          \"name\": \"constant.other.atom.quoted.prolog\",\n          \"match\": \"'.*?'\"\n        },\n        {\n          \"name\": \"constant.other.atom.emptylist.prolog\",\n          \"match\": \"\\\\[\\\\]\"\n        }\n      ]\n    },\n    \"builtin\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other\",\n          \"match\": \"\\\\b(op|nl|fail|dynamic|discontiguous|initialization|meta_predicate|module_transparent|multifile|public|thread_local|thread_initialization|volatile)\\\\b\"\n        },\n        {\n          \"name\": \"support.function.builtin.prolog\",\n          \"match\": \"\\\\b(abolish|abort|abs|absolute_file_name|access_file|acos|acosh|acyclic_term|add_import_module|append|apropos|arg|asin|asinh|assert|asserta|assertz|at_end_of_stream|at_halt|atan|atanh|atom|atom_chars|atom_codes|atom_concat|atom_length|atom_number|atom_prefix|atom_string|atom_to_stem_list|atom_to_term|atomic|atomic_concat|atomic_list_concat|atomics_to_string|attach_packs|attr_portray_hook|attr_unify_hook|attribute_goals|attvar|autoload|autoload_path|b_getval|b_set_dict|b_setval|bagof|begin_tests|between|blob|break|byte_count|call_dcg|call_residue_vars|callable|cancel_halt|catch|ceil|ceiling|char_code|char_conversion|char_type|character_count|chdir|chr_leash|chr_notrace|chr_show_store|chr_trace|clause|clause_property|close|close_dde_conversation|close_table|code_type|collation_key|compare|compare_strings|compile_aux_clauses|compile_predicates|compiling|compound|compound_name_arguments|compound_name_arity|consult|context_module|copy_predicate_clauses|copy_stream_data|copy_term|copy_term_nat|copysign|cos|cosh|cputime|create_prolog_flag|current_arithmetic_function|current_atom|current_blob|current_char_conversion|current_engine|current_flag|current_format_predicate|current_functor|current_input|current_key|current_locale|current_module|current_op|current_output|current_predicate|current_prolog_flag|current_signal|current_stream|current_trie|cyclic_term|date_time_stamp|date_time_value|day_of_the_week|dcg_translate_rule|dde_current_connection|dde_current_service|dde_execute|dde_poke|dde_register_service|dde_request|dde_unregister_service|debug|debugging|default_module|del_attr|del_attrs|del_dict|delete_directory|delete_file|delete_import_module|deterministic|dict_create|dict_pairs|dif|directory_files|divmod|doc_browser|doc_collect|doc_load_library|doc_server|double_metaphone|downcase_atom|dtd|dtd_property|duplicate_term|dwim_match|dwim_predicate|e|edit|encoding|engine_create|engine_fetch|engine_next|engine_next_reified|engine_post|engine_self|engine_yield|ensure_loaded|epsilon|erase|erf|erfc|eval|exception|exists_directory|exists_file|exists_source|exp|expand_answer|expand_file_name|expand_file_search_path|expand_goal|expand_query|expand_term|explain|fast_read|fast_term_serialized|fast_write|file_base_name|file_directory_name|file_name_extension|file_search_path|fill_buffer|find_chr_constraint|findall|findnsols|flag|float|float_fractional_part|float_integer_part|floor|flush_output|forall|format|format_predicate|format_time|free_dtd|free_sgml_parser|free_table|freeze|frozen|functor|garbage_collect|garbage_collect_atoms|garbage_collect_clauses|gdebug|get|get_attr|get_attrs|get_byte|get_char|get_code|get_dict|get_flag|get_sgml_parser|get_single_char|get_string_code|get_table_attribute|get_time|getbit|getenv|goal_expansion|ground|gspy|gtrace|guitracer|gxref|gzopen|halt|help|import_module|in_pce_thread|in_pce_thread_sync|in_table|include|inf|instance|integer|iri_xml_namespace|is_absolute_file_name|is_dict|is_engine|is_list|is_stream|is_thread|keysort|known_licenses|leash|length|lgamma|library_directory|license|line_count|line_position|list_strings|listing|load_dtd|load_files|load_html|load_rdf|load_sgml|load_structure|load_test_files|load_xml|locale_create|locale_destroy|locale_property|locale_sort|log|lsb|make|make_directory|make_library_index|max|memberchk|message_hook|message_property|message_queue_create|message_queue_destroy|message_queue_property|message_to_string|min|module|module_property|msb|msort|mutex_create|mutex_destroy|mutex_lock|mutex_property|mutex_statistics|mutex_trylock|mutex_unlock|name|nan|nb_current|nb_delete|nb_getval|nb_link_dict|nb_linkarg|nb_linkval|nb_set_dict|nb_setarg|nb_setval|new_dtd|new_order_table|new_sgml_parser|new_table|nl|nodebug|noguitracer|nonvar|noprotocol|normalize_space|nospy|nospyall|notrace|nth_clause|nth_integer_root_and_remainder|number|number_chars|number_codes|number_string|numbervars|odbc_close_statement|odbc_connect|odbc_current_connection|odbc_current_table|odbc_data_source|odbc_debug|odbc_disconnect|odbc_driver_connect|odbc_end_transaction|odbc_execute|odbc_fetch|odbc_free_statement|odbc_get_connection|odbc_prepare|odbc_query|odbc_set_connection|odbc_statistics|odbc_table_column|odbc_table_foreign_key|odbc_table_primary_key|odbc_type|on_signal|op|open|open_dde_conversation|open_dtd|open_null_stream|open_resource|open_string|open_table|order_table_mapping|parse_time|passed|pce_dispatch|pdt_install_console|peek_byte|peek_char|peek_code|peek_string|phrase|plus|popcount|porter_stem|portray|portray_clause|powm|predicate_property|predsort|prefix_string|print|print_message|print_message_lines|process_rdf|profile|profiler|project_attributes|prolog|prolog_choice_attribute|prolog_current_choice|prolog_current_frame|prolog_cut_to|prolog_debug|prolog_exception_hook|prolog_file_type|prolog_frame_attribute|prolog_ide|prolog_list_goal|prolog_load_context|prolog_load_file|prolog_nodebug|prolog_skip_frame|prolog_skip_level|prolog_stack_property|prolog_to_os_filename|prolog_trace_interception|prompt|protocol|protocola|protocolling|put|put_attr|put_attrs|put_byte|put_char|put_code|put_dict|qcompile|qsave_program|random|random_float|random_property|rational|rationalize|rdf_write_xml|read|read_clause|read_history|read_link|read_pending_chars|read_pending_codes|read_string|read_table_fields|read_table_record|read_table_record_data|read_term|read_term_from_atom|recorda|recorded|recordz|redefine_system_predicate|reexport|reload_library_index|rename_file|require|reset|reset_profiler|resource|retract|retractall|round|run_tests|running_tests|same_file|same_term|see|seeing|seek|seen|select_dict|set_end_of_stream|set_flag|set_input|set_locale|set_module|set_output|set_prolog_IO|set_prolog_flag|set_prolog_stack|set_random|set_sgml_parser|set_stream|set_stream_position|set_test_options|setarg|setenv|setlocale|setof|sgml_parse|shell|shift|show_coverage|show_profile|sign|sin|sinh|size_file|skip|sleep|sort|source_exports|source_file|source_file_property|source_location|split_string|spy|sqrt|stamp_date_time|statistics|stream_pair|stream_position_data|stream_property|string|string_chars|string_code|string_codes|string_concat|string_length|string_lower|string_upper|strip_module|style_check|sub_atom|sub_atom_icasechk|sub_string|subsumes_term|succ|suite|swritef|tab|table_previous_record|table_start_of_record|table_version|table_window|tan|tanh|tell|telling|term_attvars|term_expansion|term_hash|term_string|term_subsumer|term_to_atom|term_variables|test|test_report|text_to_string|thread_at_exit|thread_create|thread_detach|thread_exit|thread_get_message|thread_join|thread_message_hook|thread_peek_message|thread_property|thread_self|thread_send_message|thread_setconcurrency|thread_signal|thread_statistics|throw|time|time_file|tmp_file|tmp_file_stream|tokenize_atom|told|trace|tracing|trie_destroy|trie_gen|trie_insert|trie_insert_new|trie_lookup|trie_new|trie_property|trie_term|trim_stacks|truncate|tty_get_capability|tty_goto|tty_put|tty_size|ttyflush|unaccent_atom|unifiable|unify_with_occurs_check|unix|unknown|unload_file|unsetenv|upcase_atom|use_module|var|var_number|var_property|variant_hash|version|visible|wait_for_input|when|wildcard_match|win_add_dll_directory|win_exec|win_folder|win_has_menu|win_insert_menu|win_insert_menu_item|win_registry_get_value|win_remove_dll_directory|win_shell|win_window_pos|window_title|with_mutex|with_output_to|working_directory|write|write_canonical|write_length|write_term|writef|writeln|writeq|xml_is_dom|xml_to_rdf|zopen)\\\\b\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.line.percent-sign.prolog\",\n          \"match\": \"%.*\"\n        },\n        {\n          \"name\": \"comment.block.prolog\",\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.prolog\"\n            }\n          }\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.integer.prolog\",\n          \"match\": \"(?<![a-zA-Z]|/)(\\\\d+|(\\\\d+\\\\.\\\\d+))\"\n        },\n        {\n          \"name\": \"string.quoted.double.prolog\",\n          \"match\": \"\\\".*?\\\"\"\n        }\n      ]\n    },\n    \"controlandkeywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.if.prolog\",\n          \"begin\": \"(->)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.if.prolog\"\n            }\n          },\n          \"end\": \"(;)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.else.prolog\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            },\n            {\n              \"include\": \"#builtin\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#atom\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"name\": \"meta.if.body.prolog\",\n              \"match\": \".\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.cut.prolog\",\n          \"match\": \"!\"\n        },\n        {\n          \"name\": \"keyword.operator.prolog\",\n          \"match\": \"(\\\\s(is)\\\\s)|=:=|=\\\\.\\\\.|=?\\\\\\\\?=|\\\\\\\\\\\\+|@?>|@?=?<|\\\\+|\\\\*|\\\\-\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.parameter.uppercase.prolog\",\n          \"match\": \"(?<![a-zA-Z0-9_])[A-Z][a-zA-Z0-9_]*\"\n        },\n        {\n          \"name\": \"variable.language.anonymous.prolog\",\n          \"match\": \"(?<!\\\\w)_\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/pug.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/davidrios/pug-tmbundle/blob/master/Syntaxes/Pug.JSON-tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/davidrios/pug-tmbundle/commit/e67e895f6fb64932aa122e471000fa55d826bff6\",\n  \"name\": \"pug\",\n  \"scopeName\": \"text.pug\",\n  \"patterns\": [\n    {\n      \"match\": \"^(!!!|doctype)(\\\\s*[a-zA-Z0-9-_]+)?\",\n      \"name\": \"meta.tag.sgml.doctype.html\",\n      \"comment\": \"Doctype declaration.\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)//-\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"comment.unbuffered.block.pug\",\n      \"comment\": \"Unbuffered (pug-only) comments.\"\n    },\n    {\n      \"begin\": \"^(\\\\s*)//\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"string.comment.buffered.block.pug\",\n      \"comment\": \"Buffered (html) comments.\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.comment.comment.block.pug\"\n            }\n          },\n          \"match\": \"^\\\\s*(//)(?!-)\",\n          \"name\": \"string.comment.buffered.block.pug\",\n          \"comment\": \"Buffered comments inside buffered comments will generate invalid html.\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.unbuffered.block.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.comment.comment.block.pug\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)-$\",\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.js\",\n      \"comment\": \"Unbuffered code block.\",\n      \"patterns\": [\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(script)((\\\\.$)|(?=[^\\\\n]*(text|application)/javascript.*\\\\.$))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"meta.tag.other\",\n      \"comment\": \"Script tag with JavaScript code.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\()\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=[.#])\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(style)((\\\\.$)|(?=[.#(].*\\\\.$))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"meta.tag.other\",\n      \"comment\": \"Style tag with CSS code.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\()\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G(?=[.#])\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(sass)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.sass.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.sass.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.sass\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(less)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.less.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.less.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.less\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(stylus)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.stylus.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.stylus\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*):(coffee(-?script)?)(?=\\\\(|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"constant.language.name.coffeescript.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"name\": \"source.coffeescript.filter.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"source.coffee\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)((:(?=.))|(:$))\",\n      \"beginCaptures\": {\n        \"4\": {\n          \"name\": \"invalid.illegal.empty.generic.filter.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"comment\": \"Generic Pug filter.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=:)(?=.)\",\n          \"end\": \"$\",\n          \"name\": \"name.generic.filter.pug\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G\\\\(\",\n              \"name\": \"invalid.illegal.name.generic.filter.pug\"\n            },\n            {\n              \"match\": \"[\\\\w-]\",\n              \"name\": \"constant.language.name.generic.filter.pug\"\n            },\n            {\n              \"include\": \"#tag_attributes\"\n            },\n            {\n              \"match\": \"\\\\W\",\n              \"name\": \"invalid.illegal.name.generic.filter.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(\\\\s*)(?=[\\\\w.#].*?\\\\.$)(?=(?:(?:(?:(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+))|(?:(?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+)|(?:\\\\((?:[^()\\\\'\\\\\\\"]*(?:(?:\\\\'(?:[^\\\\']|(?:(?<!\\\\\\\\)\\\\\\\\\\\\'))*\\\\')|(?:\\\\\\\"(?:[^\\\\\\\"]|(?:(?<!\\\\\\\\)\\\\\\\\\\\\\\\"))*\\\\\\\")))*[^()]*\\\\))*)*)(?:(?:(?::\\\\s+)|(?<=\\\\)))(?:(?:(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+))|(?:(?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))(?:(?:#[\\\\w-]+)|(?:\\\\.[\\\\w-]+)|(?:\\\\((?:[^()\\\\'\\\\\\\"]*(?:(?:\\\\'(?:[^\\\\']|(?:(?<!\\\\\\\\)\\\\\\\\\\\\'))*\\\\')|(?:\\\\\\\"(?:[^\\\\\\\"]|(?:(?<!\\\\\\\\)\\\\\\\\\\\\\\\"))*\\\\\\\")))*[^()]*\\\\))*)*))*)\\\\.$)(?:(?:(#[\\\\w-]+)|(\\\\.[\\\\w-]+))|((?:[#!]\\\\{[^}]*\\\\})|(?:\\\\w(?:(?:[\\\\w:-]+[\\\\w-])|(?:[\\\\w-]*)))))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.id.pug\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.class.pug\"\n        },\n        \"4\": {\n          \"name\": \"meta.tag.other entity.name.tag.pug\"\n        }\n      },\n      \"end\": \"^(?!(\\\\1\\\\s)|\\\\s*$)\",\n      \"comment\": \"Generated from dot_block_tag.py\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"#complete_tag\"\n        },\n        {\n          \"begin\": \"^(?=.)\",\n          \"end\": \"$\",\n          \"name\": \"text.block.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*\",\n      \"end\": \"$\",\n      \"comment\": \"All constructs that generally span a single line starting with any number of white-spaces.\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#blocks_and_includes\"\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#mixin_definition\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"include\": \"#case_conds\"\n        },\n        {\n          \"begin\": \"\\\\|\",\n          \"end\": \"$\",\n          \"name\": \"text.block.pipe.pug\",\n          \"comment\": \"Tag pipe text line.\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"begin\": \"\\\\G(?=(#[^\\\\{\\\\w-])|[^\\\\w.#])\",\n          \"end\": \"$\",\n          \"comment\": \"Line starting with characters incompatible with tag name/id/class is standalone text.\",\n          \"patterns\": [\n            {\n              \"begin\": \"</?(?=[!#])\",\n              \"end\": \">|$\",\n              \"patterns\": [\n                {\n                  \"include\": \"#inline_pug\"\n                },\n                {\n                  \"include\": \"#interpolated_value\"\n                },\n                {\n                  \"include\": \"#interpolated_error\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"include\": \"#embedded_html\"\n            },\n            {\n              \"include\": \"#html_entity\"\n            },\n            {\n              \"include\": \"#interpolated_value\"\n            },\n            {\n              \"include\": \"#interpolated_error\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#complete_tag\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"blocks_and_includes\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.import.include.pug\"\n        },\n        \"4\": {\n          \"name\": \"variable.control.import.include.pug\"\n        }\n      },\n      \"match\": \"(extends|include|yield|append|prepend|block( (append|prepend))?)\\\\s+(.*)$\",\n      \"name\": \"meta.first-class.pug\",\n      \"comment\": \"Template blocks and includes.\"\n    },\n    \"unbuffered_code\": {\n      \"begin\": \"(-|(([a-zA-Z0-9_]+)\\\\s+=))\",\n      \"beginCaptures\": {\n        \"3\": {\n          \"name\": \"variable.parameter.javascript.embedded.pug\"\n        }\n      },\n      \"end\": \"(?=\\\\])|(({\\\\s*)?$)\",\n      \"name\": \"source.js\",\n      \"comment\": \"name = function() {}\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"#babel_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"mixin_definition\": {\n      \"match\": \"(mixin\\\\s+)([\\\\w-]+)(?:(\\\\()\\\\s*((?:[a-zA-Z_]\\\\w*\\\\s*)(?:,\\\\s*[a-zA-Z_]\\\\w*\\\\s*)*)(\\\\)))?$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.other entity.name.function.pug\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.js\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.begin.js\"\n        }\n      }\n    },\n    \"mixin_call\": {\n      \"begin\": \"((?:mixin\\\\s+)|\\\\+)([\\\\w-]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.other entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(?!\\\\()|$\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!\\\\))\\\\(\",\n          \"end\": \"\\\\)\",\n          \"name\": \"args.mixin.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"match\": \"([^\\\\s(),=/]+)\\\\s*=\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"meta.tag.other entity.other.attribute-name.tag.pug\"\n                }\n              }\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tag_attributes\"\n        }\n      ]\n    },\n    \"flow_control\": {\n      \"begin\": \"(for|if|else if|else|each|until|while|unless|case)(\\\\s+|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.control.flow.pug\",\n      \"comment\": \"Pug control flow.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\",\n          \"end\": \"$\",\n          \"name\": \"js.embedded.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"case_when_paren\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"js.when.control.flow.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#case_when_paren\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"invalid.illegal.name.tag.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"case_conds\": {\n      \"begin\": \"(default|when)((\\\\s+|(?=:))|$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.pug\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.control.flow.pug\",\n      \"comment\": \"Pug case conditionals.\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?!:)\",\n          \"end\": \"(?=:\\\\s+)|$\",\n          \"name\": \"js.embedded.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#case_when_paren\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \":\\\\s+\",\n          \"end\": \"$\",\n          \"name\": \"tag.case.control.flow.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#complete_tag\"\n            }\n          ]\n        }\n      ]\n    },\n    \"complete_tag\": {\n      \"begin\": \"(?=[\\\\w.#])|(:\\\\s*)\",\n      \"end\": \"(\\\\.?$)|(?=:.)\",\n      \"patterns\": [\n        {\n          \"include\": \"#blocks_and_includes\"\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"match\": \"(?<=:)\\\\w.*$\",\n          \"name\": \"invalid.illegal.name.tag.pug\"\n        },\n        {\n          \"include\": \"#tag_name\"\n        },\n        {\n          \"include\": \"#tag_id\"\n        },\n        {\n          \"include\": \"#tag_classes\"\n        },\n        {\n          \"include\": \"#tag_attributes\"\n        },\n        {\n          \"include\": \"#tag_mixin_attributes\"\n        },\n        {\n          \"match\": \"((\\\\.)\\\\s+$)|((:)\\\\s*$)\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"invalid.illegal.end.tag.pug\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.end.tag.pug\"\n            }\n          }\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"include\": \"#tag_text\"\n        }\n      ]\n    },\n    \"tag_name\": {\n      \"begin\": \"([#!]\\\\{(?=.*?\\\\}))|(\\\\w(([\\\\w:-]+[\\\\w-])|([\\\\w-]*)))\",\n      \"end\": \"(\\\\G(?<!\\\\5[^\\\\w-]))|\\\\}|$\",\n      \"name\": \"meta.tag.other entity.name.tag.pug\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?<=\\\\{)\",\n          \"end\": \"(?=\\\\})\",\n          \"name\": \"meta.tag.other entity.name.tag.pug\",\n          \"patterns\": [\n            {\n              \"match\": \"{\",\n              \"name\": \"invalid.illegal.tag.pug\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_id\": {\n      \"match\": \"#[\\\\w-]+\",\n      \"name\": \"entity.other.attribute-name.id.pug\"\n    },\n    \"tag_classes\": {\n      \"match\": \"\\\\.([^\\\\w-])?[\\\\w-]*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.tag.pug\"\n        }\n      },\n      \"name\": \"entity.other.attribute-name.class.pug\"\n    },\n    \"tag_attributes\": {\n      \"begin\": \"(\\\\(\\\\s*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.name.attribute.tag.pug\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"name\": \"meta.tag.other\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attribute_name_paren\"\n        },\n        {\n          \"include\": \"#tag_attribute_name\"\n        },\n        {\n          \"match\": \"!(?!=)\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"begin\": \"=\\\\s*\",\n          \"end\": \"$|(?=,|(?:\\\\s+[^!%&*-+~|<>:?/])|\\\\))\",\n          \"name\": \"attribute_value\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#js_brackets\"\n            },\n            {\n              \"include\": \"#js_braces\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[%&*-+~|<>:?/])\\\\s+\",\n          \"end\": \"$|(?=,|(?:\\\\s+[^!%&*-+~|<>:?/])|\\\\))\",\n          \"name\": \"attribute_value2\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#js_parens\"\n            },\n            {\n              \"include\": \"#js_brackets\"\n            },\n            {\n              \"include\": \"#js_braces\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag_attribute_name\": {\n      \"match\": \"([^\\\\s(),=/!]+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.tag.pug\"\n        }\n      }\n    },\n    \"tag_attribute_name_paren\": {\n      \"begin\": \"\\\\(\\\\s*\",\n      \"end\": \"\\\\)\",\n      \"name\": \"entity.other.attribute-name.tag.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag_attribute_name_paren\"\n        },\n        {\n          \"include\": \"#tag_attribute_name\"\n        }\n      ]\n    },\n    \"tag_mixin_attributes\": {\n      \"begin\": \"(&attributes\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"name\": \"meta.tag.other\",\n      \"patterns\": [\n        {\n          \"match\": \"attributes(?=\\\\))\",\n          \"name\": \"storage.type.keyword.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"tag_text\": {\n      \"begin\": \"(?=.)\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#embedded_html\"\n        },\n        {\n          \"include\": \"#html_entity\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"inline_pug_text\": {\n      \"begin\": \"\",\n      \"end\": \"(?=\\\\])\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]\",\n          \"patterns\": [\n            {\n              \"include\": \"#inline_pug_text\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#embedded_html\"\n        },\n        {\n          \"include\": \"#html_entity\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"inline_pug\": {\n      \"begin\": \"(?<!\\\\\\\\)(#\\\\[)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.pug\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.pug\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"name\": \"inline.pug\",\n      \"patterns\": [\n        {\n          \"include\": \"#inline_pug\"\n        },\n        {\n          \"include\": \"#mixin_call\"\n        },\n        {\n          \"begin\": \"(?<!\\\\])(?=[\\\\w.#])|(:\\\\s*)\",\n          \"end\": \"(?=\\\\]|(:.)|=|\\\\s)\",\n          \"name\": \"tag.inline.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag_name\"\n            },\n            {\n              \"include\": \"#tag_id\"\n            },\n            {\n              \"include\": \"#tag_classes\"\n            },\n            {\n              \"include\": \"#tag_attributes\"\n            },\n            {\n              \"include\": \"#tag_mixin_attributes\"\n            },\n            {\n              \"include\": \"#inline_pug\"\n            },\n            {\n              \"match\": \"\\\\[\",\n              \"name\": \"invalid.illegal.tag.pug\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#unbuffered_code\"\n        },\n        {\n          \"include\": \"#printed_expression\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"include\": \"#inline_pug_text\"\n        }\n      ]\n    },\n    \"html_entity\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html.text.pug\"\n        },\n        {\n          \"match\": \"[<>&]\",\n          \"name\": \"invalid.illegal.html_entity.text.pug\"\n        }\n      ]\n    },\n    \"interpolated_value\": {\n      \"begin\": \"(?<!\\\\\\\\)[#!]\\\\{(?=.*?\\\\})\",\n      \"end\": \"\\\\}\",\n      \"name\": \"string.interpolated.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"{\",\n          \"name\": \"invalid.illegal.tag.pug\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"interpolated_error\": {\n      \"match\": \"(?<!\\\\\\\\)[#!]\\\\{(?=[^}]*$)\",\n      \"name\": \"invalid.illegal.tag.pug\"\n    },\n    \"printed_expression\": {\n      \"begin\": \"(!?\\\\=)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant\"\n        }\n      },\n      \"end\": \"(?=\\\\])|$\",\n      \"name\": \"source.js\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(['\\\"])\",\n      \"end\": \"(?<!\\\\\\\\)\\\\1\",\n      \"name\": \"string.quoted.pug\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)\",\n          \"name\": \"constant.character.quoted.pug\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"embedded_html\": {\n      \"begin\": \"(?=<[^>]*>)\",\n      \"end\": \"$|(?=>)\",\n      \"name\": \"html\",\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic\"\n        },\n        {\n          \"include\": \"#interpolated_value\"\n        },\n        {\n          \"include\": \"#interpolated_error\"\n        }\n      ]\n    },\n    \"js_parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"js_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_brackets\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"js_braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#js_braces\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"babel_parens\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)|(({\\\\s*)?$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#babel_parens\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/puppet.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.puppet\",\n  \"fileTypes\": [\"pp\"],\n  \"foldingStartMarker\": \"(^\\\\s*/\\\\*|(\\\\{|\\\\[|\\\\()\\\\s*$)\",\n  \"foldingStopMarker\": \"(\\\\*/|^\\\\s*(\\\\}|\\\\]|\\\\)))\",\n  \"name\": \"puppet\",\n  \"patterns\": [\n    {\n      \"include\": \"#line_comment\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"begin\": \"^\\\\s*/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block.puppet\"\n    },\n    {\n      \"begin\": \"\\\\b(node)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.class.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\bdefault\\\\b\",\n          \"name\": \"keyword.puppet\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#regex-literal\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(class)\\\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.class.puppet\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(inherits)\\\\b\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.puppet\"\n            }\n          },\n          \"end\": \"(?=\\\\(|{)\",\n          \"name\": \"meta.definition.class.inherits.puppet\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b((?:[-_A-Za-z0-9\\\".]+::)*[-_A-Za-z0-9\\\".]+)\\\\b\",\n              \"name\": \"support.type.puppet\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(plan)\\\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.plan.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.definition.plan.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*(define|function)\\\\s+((?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\\\s*(\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.puppet\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.puppet\"\n        }\n      },\n      \"end\": \"(?={)\",\n      \"name\": \"meta.function.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#line_comment\"\n        },\n        {\n          \"include\": \"#resource-parameters\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(case|else|elsif|if|unless)(?!::)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.puppet\"\n        }\n      }\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#resource-definition\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#puppet-datatypes\"\n    },\n    {\n      \"include\": \"#array\"\n    },\n    {\n      \"match\": \"((\\\\$?)\\\"?[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*\\\"?):(?=\\\\s+|$)\",\n      \"name\": \"entity.name.section.puppet\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"begin\": \"\\\\b(import|include|contain|require)\\\\s+(?!.*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.include.puppet\"\n        }\n      },\n      \"end\": \"(?=\\\\s|$)\",\n      \"contentName\": \"variable.parameter.include.puppet\",\n      \"name\": \"meta.include.puppet\"\n    },\n    {\n      \"match\": \"\\\\b\\\\w+\\\\s*(?==>)\\\\s*\",\n      \"name\": \"constant.other.key.puppet\"\n    },\n    {\n      \"match\": \"(?<={)\\\\s*\\\\w+\\\\s*(?=})\",\n      \"name\": \"constant.other.bareword.puppet\"\n    },\n    {\n      \"match\": \"\\\\b(alert|crit|debug|defined|emerg|err|escape|fail|failed|file|generate|gsub|info|notice|package|realize|search|tag|tagged|template|warning)\\\\b(?!.*{)\",\n      \"name\": \"support.function.puppet\"\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"punctuation.separator.key-value.puppet\"\n    },\n    {\n      \"match\": \"->\",\n      \"name\": \"keyword.control.orderarrow.puppet\"\n    },\n    {\n      \"match\": \"~>\",\n      \"name\": \"keyword.control.notifyarrow.puppet\"\n    },\n    {\n      \"include\": \"#regex-literal\"\n    }\n  ],\n  \"repository\": {\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(absent|directory|false|file|present|running|stopped|true)\\\\b(?!.*{)\",\n          \"name\": \"constant.language.puppet\"\n        }\n      ]\n    },\n    \"double-quoted-string\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.puppet\"\n        }\n      },\n      \"name\": \"string.quoted.double.interpolated.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#interpolated_puppet\"\n        }\n      ]\n    },\n    \"interpolated_puppet\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\${)(\\\\d+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.pre-defined.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\${)(_[a-zA-Z0-9_]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\${)(([a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            },\n            \"2\": {\n              \"name\": \"source.puppet variable.other.readwrite.global.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\${\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.puppet\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.puppet\"\n            }\n          },\n          \"contentName\": \"source.puppet\",\n          \"name\": \"meta.embedded.line.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.puppet\"\n    },\n    \"line_comment\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.number-sign.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.comment.puppet\"\n            }\n          },\n          \"match\": \"^((#).*$\\\\n?)\",\n          \"name\": \"meta.comment.full-line.puppet\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.puppet\"\n            }\n          },\n          \"match\": \"(#).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.puppet\"\n        }\n      ]\n    },\n    \"nested_braces\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_braces\"\n        }\n      ]\n    },\n    \"nested_braces_interpolated\": {\n      \"begin\": \"\\\\{\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_braces_interpolated\"\n        }\n      ]\n    },\n    \"nested_brackets\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_brackets\"\n        }\n      ]\n    },\n    \"nested_brackets_interpolated\": {\n      \"begin\": \"\\\\[\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_brackets_interpolated\"\n        }\n      ]\n    },\n    \"nested_parens\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#nested_parens\"\n        }\n      ]\n    },\n    \"nested_parens_interpolated\": {\n      \"begin\": \"\\\\(\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.puppet\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#nested_parens_interpolated\"\n        }\n      ]\n    },\n    \"parameter-default-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#numbers\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#hash\"\n        },\n        {\n          \"include\": \"#array\"\n        },\n        {\n          \"include\": \"#function_call\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#puppet-datatypes\"\n        }\n      ]\n    },\n    \"resource-parameters\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          },\n          \"match\": \"((\\\\$+)[a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=,|\\\\))\",\n          \"name\": \"meta.function.argument.puppet\"\n        },\n        {\n          \"begin\": \"((\\\\$+)[a-zA-Z_][a-zA-Z0-9_]*)(?:\\\\s*(=)\\\\s*)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.puppet\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.puppet\"\n            }\n          },\n          \"end\": \"(?=,|\\\\))\",\n          \"name\": \"meta.function.argument.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-default-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"array\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.array.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.array.end.puppet\"\n        }\n      },\n      \"name\": \"meta.array.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*,\\\\s*\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"hash\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.hash.begin.puppet\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.hash.end.puppet\"\n        }\n      },\n      \"name\": \"meta.hash.puppet\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b\\\\w+\\\\s*(?==>)\\\\s*\",\n          \"name\": \"constant.other.key.puppet\"\n        },\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"include\": \"#line_comment\"\n        }\n      ]\n    },\n    \"single-quoted-string\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.puppet\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.puppet\"\n        }\n      },\n      \"name\": \"string.quoted.single.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"include\": \"#double-quoted-string\"\n        },\n        {\n          \"include\": \"#single-quoted-string\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"match\": \"\\\\b(undef)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.puppet\"\n        }\n      }\n    },\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"comment\": \"HEX 0x 0-f\",\n          \"match\": \"(?<!\\\\w|\\\\d)([-+]?)(?i:0x)(?i:[0-9a-f])+(?!\\\\w|\\\\d)\",\n          \"name\": \"constant.numeric.hexadecimal.puppet\"\n        },\n        {\n          \"comment\": \"INTEGERS [(+|-)] digits [e [(+|-)] digits]\",\n          \"match\": \"(?<!\\\\w|\\\\.)([-+]?)(?<!\\\\d)\\\\d+(?i:e(\\\\+|-){0,1}\\\\d+){0,1}(?!\\\\w|\\\\d|\\\\.)\",\n          \"name\": \"constant.numeric.integer.puppet\"\n        },\n        {\n          \"comment\": \"FLOAT [(+|-)] digits . digits [e [(+|-)] digits]\",\n          \"match\": \"(?<!\\\\w)([-+]?)\\\\d+\\\\.\\\\d+(?i:e(\\\\+|-){0,1}\\\\d+){0,1}(?!\\\\w|\\\\d)\",\n          \"name\": \"constant.numeric.integer.puppet\"\n        }\n      ]\n    },\n    \"resource-definition\": {\n      \"begin\": \"(?:^|\\\\b)((?#Toplevel Bareword)::[a-z][a-z0-9_]*|(?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\\\s*({)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.definition.resource.puppet storage.type.puppet\"\n        }\n      },\n      \"end\": \":\",\n      \"contentName\": \"entity.name.section.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#array\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\$)(\\\\d+)\",\n          \"name\": \"variable.other.readwrite.global.pre-defined.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$)_[a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.readwrite.global.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$)(([a-z][a-zA-Z0-9_]*)?(?:::[a-z][a-zA-Z0-9_]*)*)\",\n          \"name\": \"variable.other.readwrite.global.puppet\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.puppet\"\n            }\n          }\n        }\n      ]\n    },\n    \"function_call\": {\n      \"begin\": \"([a-zA-Z_][a-zA-Z0-9_]*)(\\\\()\",\n      \"end\": \"\\\\)\",\n      \"name\": \"meta.function-call.puppet\",\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-default-types\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.parameters.puppet\"\n        }\n      ]\n    },\n    \"puppet-datatypes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Puppet Data type\",\n          \"match\": \"(?<![a-zA-Z\\\\$])([A-Z][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])\",\n          \"name\": \"storage.type.puppet\"\n        }\n      ]\n    },\n    \"regex-literal\": {\n      \"match\": \"(\\\\/)(.+?)(?:[^\\\\\\\\]\\\\/)\",\n      \"name\": \"string.regexp.literal.puppet\",\n      \"comment\": \"Puppet Regular expression literal without interpolation\"\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"@\\\\([[:blank:]]*\\\"([^:\\\\/) \\\\t]+)\\\"[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.puppet\"\n            }\n          },\n          \"end\": \"^[[:blank:]]*(\\\\|[[:blank:]]*-|\\\\||-)?[[:blank:]]*\\\\1\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.puppet\"\n            }\n          },\n          \"name\": \"string.interpolated.heredoc.puppet\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_puppet\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"@\\\\([[:blank:]]*([^:\\\\/) \\\\t]+)[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\\\)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.puppet\"\n            }\n          },\n          \"end\": \"^[[:blank:]]*(\\\\|[[:blank:]]*-|\\\\||-)?[[:blank:]]*\\\\1\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.puppet\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.puppet\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/purescript.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"purs\"],\n  \"name\": \"purescript\",\n  \"scopeName\": \"source.purescript\",\n  \"macros\": {\n    \"functionNameOne\": \"[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n    \"classNameOne\": \"[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n    \"functionName\": \"(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\",\n    \"className\": \"[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\",\n    \"operatorChar\": \"[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]\",\n    \"operator\": \"[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+\",\n    \"operatorFun\": \"(?:\\\\((?!--+\\\\))[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+\\\\))\",\n    \"character\": \"(?:[ -\\\\[\\\\]-~]|(\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]))|(\\\\\\\\o[0-7]+)|(\\\\\\\\x[0-9A-Fa-f]+)|(\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]))\",\n    \"classConstraint\": \"(?:(?:([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<classConstraint>(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<classConstraint>)?)))\",\n    \"functionTypeDeclaration\": \"([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\s*(::|∷)\",\n    \"ctorArgs\": \"(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*|(?:(?:[\\\\w()'→⇒\\\\[\\\\],]|->|=>)+\\\\s*)+)\",\n    \"ctor\": \"(?:(?:\\\\b([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<ctorArgs>(?:(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*|(?:(?:[\\\\w()'→⇒\\\\[\\\\],]|->|=>)+\\\\s*)+))(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<ctorArgs>)?)?))\",\n    \"typeDecl\": \".+?\",\n    \"indentChar\": \"[ \\\\t]\",\n    \"indentBlockEnd\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n    \"maybeBirdTrack\": \"^\"\n  },\n  \"patterns\": [\n    {\n      \"name\": \"keyword.operator.function.infix.purescript\",\n      \"match\": \"(`)(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(`)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.purescript\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.entity.purescript\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.declaration.module.purescript\",\n      \"begin\": \"^\\\\s*\\\\b(module)(?!')\\\\b\",\n      \"end\": \"(where)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        },\n        {\n          \"name\": \"invalid.purescript\",\n          \"match\": \"[a-z]+\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.typeclass.purescript\",\n      \"begin\": \"^\\\\s*\\\\b(class)(?!')\\\\b\",\n      \"end\": \"\\\\b(where)\\\\b|$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.purescript\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.instance.purescript\",\n      \"begin\": \"^\\\\s*\\\\b(else\\\\s+)?(derive\\\\s+)?(newtype\\\\s+)?(instance)(?!')\\\\b\",\n      \"end\": \"\\\\b(where)\\\\b|$\",\n      \"contentName\": \"meta.type-signature.purescript\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.foreign.data.purescript\",\n      \"begin\": \"^(\\\\s*)(foreign)\\\\s+(import)\\\\s+(data)\\\\s+([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n      \"contentName\": \"meta.kind-signature.purescript\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.purescript\"\n        },\n        \"6\": {\n          \"name\": \"keyword.other.double-colon.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#kind_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.foreign.purescript\",\n      \"begin\": \"^(\\\\s*)(foreign)\\\\s+(import)\\\\s+([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n      \"contentName\": \"meta.type-signature.purescript\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.purescript\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.function.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double_colon\"\n        },\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.import.purescript\",\n      \"begin\": \"^\\\\s*\\\\b(import)(?!')\\\\b\",\n      \"end\": \"($|(?=--))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#module_name\"\n        },\n        {\n          \"include\": \"#module_exports\"\n        },\n        {\n          \"match\": \"\\\\b(as|hiding)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.purescript\"\n            }\n          }\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.data.purescript\",\n      \"begin\": \"^(\\\\s)*(data|newtype)\\\\s+(.+?)\\\\s*(?=\\\\=|$)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"storage.type.data.purescript\"\n        },\n        \"3\": {\n          \"name\": \"meta.type-signature.purescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"=\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.assignment.purescript\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(?:\\\\b([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<ctorArgs>(?:(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*|(?:(?:[\\\\w()'→⇒\\\\[\\\\],]|->|=>)+\\\\s*)+))(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<ctorArgs>)?)?))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#data_ctor\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"meta.type-signature.purescript\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type_signature\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.pipe.purescript\"\n            }\n          }\n        },\n        {\n          \"include\": \"#record_types\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.declaration.type.type.purescript\",\n      \"begin\": \"^(\\\\s)*(type)\\\\s+(.+?)\\\\s*(?=\\\\=|$)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n      \"contentName\": \"meta.type-signature.purescript\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"storage.type.data.purescript\"\n        },\n        \"3\": {\n          \"name\": \"meta.type-signature.purescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"=\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.assignment.purescript\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type_signature\"\n        },\n        {\n          \"include\": \"#record_types\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    {\n      \"name\": \"keyword.other.purescript\",\n      \"match\": \"^\\\\s*\\\\b(derive|where|data|type|newtype|infix[lr]?|foreign(\\\\s+import)?(\\\\s+data)?)(?!')\\\\b\"\n    },\n    {\n      \"name\": \"entity.name.function.typed-hole.purescript\",\n      \"match\": \"\\\\?(?:[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*|[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\"\n    },\n    {\n      \"name\": \"storage.type.purescript\",\n      \"match\": \"^\\\\s*\\\\b(data|type|newtype)(?!')\\\\b\"\n    },\n    {\n      \"name\": \"keyword.control.purescript\",\n      \"match\": \"\\\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\\\s*(:|=)))\\\\b\"\n    },\n    {\n      \"name\": \"constant.numeric.hex.purescript\",\n      \"match\": \"\\\\b(?<!\\\\$)0(x|X)[0-9a-fA-F]+\\\\b(?!\\\\$)\"\n    },\n    {\n      \"name\": \"constant.numeric.decimal.purescript\",\n      \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+[eE][+-]?[0-9]+\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9]+[eE][+-]?[0-9]+\\\\b)|            # 1E+3\\n  (?:\\\\b[0-9]+(\\\\.)[0-9]+\\\\b)|                # 1.1\\n  (?:\\\\b[0-9]+\\\\b(?!\\\\.))                     # 1\\n)(?!\\\\$)\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"constant.numeric.decimal.purescript\"\n        },\n        \"1\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        },\n        \"2\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        },\n        \"3\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        },\n        \"4\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        },\n        \"5\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        },\n        \"6\": {\n          \"name\": \"meta.delimiter.decimal.period.purescript\"\n        }\n      }\n    },\n    {\n      \"name\": \"constant.language.boolean.purescript\",\n      \"match\": \"\\\\b(true|false)\\\\b\"\n    },\n    {\n      \"name\": \"constant.numeric.purescript\",\n      \"match\": \"\\\\b(([0-9]+_?)*[0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\\\\b\"\n    },\n    {\n      \"name\": \"string.quoted.triple.purescript\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.purescript\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.purescript\"\n        }\n      }\n    },\n    {\n      \"name\": \"string.quoted.double.purescript\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.purescript\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.purescript\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#characters\"\n        },\n        {\n          \"begin\": \"\\\\\\\\\\\\s\",\n          \"end\": \"\\\\\\\\\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"markup.other.escape.newline.begin.purescript\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"markup.other.escape.newline.end.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\S+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.purescript\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"markup.other.escape.newline.purescript\",\n      \"match\": \"\\\\\\\\$\"\n    },\n    {\n      \"name\": \"string.quoted.single.purescript\",\n      \"match\": \"(')((?:[ -\\\\[\\\\]-~]|(\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]))|(\\\\\\\\o[0-7]+)|(\\\\\\\\x[0-9A-Fa-f]+)|(\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_])))(')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.purescript\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#characters\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.string.end.purescript\"\n        }\n      }\n    },\n    {\n      \"include\": \"#function_type_declaration\"\n    },\n    {\n      \"match\": \"\\\\((?<paren>(?:[^()]|\\\\(\\\\g<paren>\\\\))*)(::|∷)(?<paren2>(?:[^()]|\\\\(\\\\g<paren2>\\\\))*)\\\\)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.double-colon.purescript\"\n        },\n        \"3\": {\n          \"name\": \"meta.type-signature.purescript\",\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"^(\\\\s*)(?:(::|∷))\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.other.double-colon.purescript\"\n        }\n      },\n      \"end\": \"^(?!\\\\1[ \\\\t]*|[ \\\\t]*$)\",\n      \"patterns\": [\n        {\n          \"include\": \"#type_signature\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#data_ctor\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#infix_op\"\n    },\n    {\n      \"name\": \"keyword.other.arrow.purescript\",\n      \"match\": \"\\\\<-|-\\\\>\"\n    },\n    {\n      \"name\": \"keyword.operator.purescript\",\n      \"match\": \"[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+\"\n    },\n    {\n      \"name\": \"punctuation.separator.comma.purescript\",\n      \"match\": \",\"\n    }\n  ],\n  \"repository\": {\n    \"block_comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.purescript\",\n          \"begin\": \"\\\\{-\\\\s*\\\\|\",\n          \"end\": \"-\\\\}\",\n          \"applyEndPatternLast\": 1,\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.documentation.purescript\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.documentation.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.purescript\",\n          \"begin\": \"\\\\{-\",\n          \"end\": \"-\\\\}\",\n          \"applyEndPatternLast\": 1,\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block_comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"record_types\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.record.purescript\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.record.begin.purescript\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.record.end.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.comma.purescript\",\n              \"match\": \",\"\n            },\n            {\n              \"include\": \"#record_field_declaration\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--+\\\\s+\\\\|)\",\n          \"end\": \"(?!\\\\G)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"comment.line.double-dash.documentation.purescript\",\n              \"begin\": \"(--+)\\\\s+(\\\\|)\",\n              \"end\": \"\\\\n\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.purescript\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.comment.documentation.purescript\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--+(?![\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]))\",\n          \"end\": \"(?!\\\\G)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"comment.line.double-dash.purescript\",\n              \"begin\": \"--\",\n              \"end\": \"\\\\n\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.purescript\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#block_comment\"\n        }\n      ]\n    },\n    \"characters\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:[ -\\\\[\\\\]-~]|(\\\\\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\\\\\\\\\"'\\\\&]))|(\\\\\\\\o[0-7]+)|(\\\\\\\\x[0-9A-Fa-f]+)|(\\\\^[A-Z@\\\\[\\\\]\\\\\\\\\\\\^_]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.escape.purescript\"\n            },\n            \"2\": {\n              \"name\": \"constant.character.escape.octal.purescript\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.escape.hexadecimal.purescript\"\n            },\n            \"4\": {\n              \"name\": \"constant.character.escape.control.purescript\"\n            }\n          }\n        }\n      ]\n    },\n    \"infix_op\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.function.infix.purescript\",\n          \"match\": \"(?:\\\\((?!--+\\\\))[\\\\p{S}\\\\p{P}&&[^(),;\\\\[\\\\]`{}_\\\"']]+\\\\))\"\n        }\n      ]\n    },\n    \"module_exports\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.declaration.exports.purescript\",\n          \"begin\": \"\\\\(\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"name\": \"entity.name.function.purescript\",\n              \"match\": \"\\\\b(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\"\n            },\n            {\n              \"include\": \"#type_name\"\n            },\n            {\n              \"name\": \"punctuation.separator.comma.purescript\",\n              \"match\": \",\"\n            },\n            {\n              \"include\": \"#infix_op\"\n            },\n            {\n              \"name\": \"meta.other.constructor-list.purescript\",\n              \"match\": \"\\\\(.*?\\\\)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"module_name\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.other.module.purescript\",\n          \"match\": \"(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)*[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.?\"\n        }\n      ]\n    },\n    \"function_type_declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function.type-declaration.purescript\",\n          \"begin\": \"^(\\\\s*)([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\s*(?:(::|∷)(?!.*<-))\",\n          \"end\": \"^(?!\\\\1[ \\\\t]|[ \\\\t]*$)\",\n          \"contentName\": \"meta.type-signature.purescript\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.function.purescript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.double-colon.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#double_colon\"\n            },\n            {\n              \"include\": \"#type_signature\"\n            }\n          ]\n        }\n      ]\n    },\n    \"record_field_declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.record-field.type-declaration.purescript\",\n          \"begin\": \"([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\s*(::|∷)\",\n          \"end\": \"(?=([\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)\\\\s*(::|∷)|})\",\n          \"contentName\": \"meta.type-signature.purescript\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"name\": \"entity.other.attribute-name.purescript\",\n                  \"match\": \"(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"keyword.other.double-colon.purescript\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type_signature\"\n            },\n            {\n              \"include\": \"#record_types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"kind_signature\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.star.purescript\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.other.exclaimation-point.purescript\",\n          \"match\": \"!\"\n        },\n        {\n          \"name\": \"keyword.other.pound-sign.purescript\",\n          \"match\": \"#\"\n        },\n        {\n          \"name\": \"keyword.other.arrow.purescript\",\n          \"match\": \"->|→\"\n        }\n      ]\n    },\n    \"type_signature\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.class-constraints.purescript\",\n          \"match\": \"(?:(?:\\\\()(?:(?<classConstraints>(?:(?:(?:([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<classConstraint>(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<classConstraint>)?))))(?:\\\\s*(?:,)\\\\s*\\\\g<classConstraints>)?))(?:\\\\))(?:\\\\s*(=>|<=|⇐|⇒)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#class_constraint\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"keyword.other.big-arrow.purescript\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.class-constraints.purescript\",\n          \"match\": \"((?:(?:([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<classConstraint>(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<classConstraint>)?))))\\\\s*(=>|<=|⇐|⇒)\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#class_constraint\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"keyword.other.big-arrow.purescript\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.other.arrow.purescript\",\n          \"match\": \"->|→\"\n        },\n        {\n          \"name\": \"keyword.other.big-arrow.purescript\",\n          \"match\": \"=>|⇒\"\n        },\n        {\n          \"name\": \"keyword.other.big-arrow-left.purescript\",\n          \"match\": \"<=|⇐\"\n        },\n        {\n          \"name\": \"keyword.other.forall.purescript\",\n          \"match\": \"forall|∀\"\n        },\n        {\n          \"include\": \"#generic_type\"\n        },\n        {\n          \"include\": \"#type_name\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"type_name\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.purescript\",\n          \"match\": \"\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\"\n        }\n      ]\n    },\n    \"data_ctor\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.tag.purescript\",\n          \"match\": \"\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\"\n        }\n      ]\n    },\n    \"generic_type\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.generic-type.purescript\",\n          \"match\": \"\\\\b(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*\"\n        }\n      ]\n    },\n    \"double_colon\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.double-colon.purescript\",\n          \"match\": \"(?:::|∷)\"\n        }\n      ]\n    },\n    \"class_constraint\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.class-constraint.purescript\",\n          \"match\": \"(?:(?:([\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*)\\\\s+)(?:(?<classConstraint>(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*|(?:[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\\\\.)?[\\\\p{Ll}_][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)(?:\\\\s*(?:\\\\s+)\\\\s*\\\\g<classConstraint>)?)))\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"name\": \"entity.name.type.purescript\",\n                  \"match\": \"\\\\b[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*(?:\\\\.[\\\\p{Lu}\\\\p{Lt}][\\\\p{Ll}_\\\\p{Lu}\\\\p{Lt}\\\\p{Nd}']*)*\"\n                }\n              ]\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#type_name\"\n                },\n                {\n                  \"include\": \"#generic_type\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/python.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicPython.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/MagicStack/MagicPython/commit/b2b4f4ae7b4e6284e80bda8080106b93bd588f9e\",\n  \"name\": \"python\",\n  \"scopeName\": \"source.python\",\n  \"patterns\": [\n    {\n      \"include\": \"#statement\"\n    },\n    {\n      \"include\": \"#expression\"\n    }\n  ],\n  \"repository\": {\n    \"impossible\": {\n      \"comment\": \"This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.\",\n      \"match\": \"$.^\"\n    },\n    \"statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#generator\"\n        },\n        {\n          \"include\": \"#statement-keyword\"\n        },\n        {\n          \"include\": \"#assignment-operator\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#docstring-statement\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        }\n      ]\n    },\n    \"semicolon\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.deprecated.semicolon.python\",\n          \"match\": \"\\\\;$\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.line.number-sign.python\",\n          \"contentName\": \"meta.typehint.comment.python\",\n          \"begin\": \"(?x)\\n  (?:\\n    \\\\# \\\\s* (type:)\\n    \\\\s*+ (?# we want `\\\\s*+` which is possessive quantifier since\\n             we do not actually want to backtrack when matching\\n             whitespace here)\\n    (?! $ | \\\\#)\\n  )\\n\",\n          \"end\": \"(?:$|(?=\\\\#))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.typehint.comment.python\"\n            },\n            \"1\": {\n              \"name\": \"comment.typehint.directive.notation.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"comment.typehint.ignore.notation.python\",\n              \"match\": \"(?x)\\n  \\\\G ignore\\n  (?= \\\\s* (?: $ | \\\\#))\\n\"\n            },\n            {\n              \"name\": \"comment.typehint.type.notation.python\",\n              \"match\": \"(?x)\\n  (?<!\\\\.)\\\\b(\\n    bool | bytes | float | int | object | str\\n    | List | Dict | Iterable | Sequence | Set\\n    | FrozenSet | Callable | Union | Tuple\\n    | Any | None\\n  )\\\\b\\n\"\n            },\n            {\n              \"name\": \"comment.typehint.punctuation.notation.python\",\n              \"match\": \"([\\\\[\\\\]\\\\(\\\\),\\\\.\\\\=\\\\*]|(->))\"\n            },\n            {\n              \"name\": \"comment.typehint.variable.notation.python\",\n              \"match\": \"([[:alpha:]_]\\\\w*)\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments-base\"\n        }\n      ]\n    },\n    \"docstring-statement\": {\n      \"begin\": \"^(?=\\\\s*[rR]?(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\"))\",\n      \"comment\": \"the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring\",\n      \"end\": \"((?<=\\\\1)|^)(?!\\\\s*[rR]?(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\"))\",\n      \"patterns\": [\n        {\n          \"include\": \"#docstring\"\n        }\n      ]\n    },\n    \"docstring\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.docstring.multi.python\",\n          \"begin\": \"(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\")\",\n          \"end\": \"(\\\\1)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docstring-prompt\"\n            },\n            {\n              \"include\": \"#codetags\"\n            },\n            {\n              \"include\": \"#docstring-guts-unicode\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.raw.multi.python\",\n          \"begin\": \"([rR])(\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\")\",\n          \"end\": \"(\\\\2)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.string.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-consume-escape\"\n            },\n            {\n              \"include\": \"#docstring-prompt\"\n            },\n            {\n              \"include\": \"#codetags\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.single.python\",\n          \"begin\": \"(\\\\'|\\\\\\\")\",\n          \"end\": \"(\\\\1)|(\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#codetags\"\n            },\n            {\n              \"include\": \"#docstring-guts-unicode\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.docstring.raw.single.python\",\n          \"begin\": \"([rR])(\\\\'|\\\\\\\")\",\n          \"end\": \"(\\\\2)|(\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.string.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-consume-escape\"\n            },\n            {\n              \"include\": \"#codetags\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docstring-guts-unicode\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"docstring-prompt\": {\n      \"match\": \"(?x)\\n  (?:\\n    (?:^|\\\\G) \\\\s* (?# '\\\\G' is necessary for ST)\\n    ((?:>>>|\\\\.\\\\.\\\\.) \\\\s) (?=\\\\s*\\\\S)\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.python\"\n        }\n      }\n    },\n    \"statement-keyword\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.function.python\",\n          \"match\": \"\\\\b((async\\\\s+)?\\\\s*def)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.flow.python\",\n          \"comment\": \"if `as` is eventually followed by `:` or line continuation\\nit's probably control flow like:\\n    with foo as bar, \\\\\\n         Foo as Bar:\\n      try:\\n        do_stuff()\\n      except Exception as e:\\n        pass\\n\",\n          \"match\": \"\\\\b(?<!\\\\.)as\\\\b(?=.*[:\\\\\\\\])\"\n        },\n        {\n          \"name\": \"keyword.control.import.python\",\n          \"comment\": \"other legal use of `as` is in an import\",\n          \"match\": \"\\\\b(?<!\\\\.)as\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.flow.python\",\n          \"match\": \"(?x)\\n  \\\\b(?<!\\\\.)(\\n    async | continue | del | assert | break | finally | for\\n    | from | elif | else | if | except | pass | raise\\n    | return | try | while | with\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"storage.modifier.declaration.python\",\n          \"match\": \"(?x)\\n  \\\\b(?<!\\\\.)(\\n    global | nonlocal\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"storage.type.class.python\",\n          \"match\": \"\\\\b(?<!\\\\.)(class)\\\\b\"\n        }\n      ]\n    },\n    \"expression-bare\": {\n      \"comment\": \"valid Python expressions w/o comments and line continuation\",\n      \"patterns\": [\n        {\n          \"include\": \"#backticks\"\n        },\n        {\n          \"include\": \"#illegal-anno\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#regexp\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#lambda\"\n        },\n        {\n          \"include\": \"#generator\"\n        },\n        {\n          \"include\": \"#illegal-operator\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#curly-braces\"\n        },\n        {\n          \"include\": \"#item-access\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#odd-function-call\"\n        },\n        {\n          \"include\": \"#round-braces\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        },\n        {\n          \"include\": \"#builtin-exceptions\"\n        },\n        {\n          \"include\": \"#magic-names\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#ellipsis\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        }\n      ]\n    },\n    \"expression-base\": {\n      \"comment\": \"valid Python expressions with comments and line continuation\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#expression-bare\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        }\n      ]\n    },\n    \"expression\": {\n      \"comment\": \"All valid Python expressions\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-base\"\n        },\n        {\n          \"include\": \"#member-access\"\n        },\n        {\n          \"comment\": \"Tokenize identifiers to help linters\",\n          \"match\": \"(?x) \\\\b ([[:alpha:]_]\\\\w*) \\\\b\"\n        }\n      ]\n    },\n    \"member-access\": {\n      \"name\": \"meta.member.access.python\",\n      \"begin\": \"(\\\\.)\\\\s*(?!\\\\.)\",\n      \"end\": \"(?x)\\n  # stop when you've just read non-whitespace followed by non-word\\n  # i.e. when finished reading an identifier or function call\\n  (?<=\\\\S)(?=\\\\W) |\\n  # stop when seeing the start of something that's not a word,\\n  # i.e. when seeing a non-identifier\\n  (^|(?<=\\\\s))(?=[^\\\\\\\\\\\\w\\\\s]) |\\n  $\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#member-access-base\"\n        },\n        {\n          \"include\": \"#member-access-attribute\"\n        }\n      ]\n    },\n    \"member-access-base\": {\n      \"patterns\": [\n        {\n          \"include\": \"#magic-names\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"include\": \"#item-access\"\n        }\n      ]\n    },\n    \"member-access-attribute\": {\n      \"comment\": \"Highlight attribute access in otherwise non-specialized cases.\",\n      \"name\": \"meta.attribute.python\",\n      \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n    },\n    \"special-names\": {\n      \"name\": \"constant.other.caps.python\",\n      \"match\": \"(?x)\\n  \\\\b\\n    # we want to see \\\"enough\\\", meaning 2 or more upper-case\\n    # letters in the beginning of the constant\\n    #\\n    # for more details refer to:\\n    #   https://github.com/MagicStack/MagicPython/issues/42\\n    (\\n      _* [[:upper:]] [_\\\\d]* [[:upper:]]\\n    )\\n    [[:upper:]\\\\d]* (_\\\\w*)?\\n  \\\\b\\n\"\n    },\n    \"curly-braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dict.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.dict.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.dict.python\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"list\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.list.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"odd-function-call\": {\n      \"comment\": \"A bit obscured function call where there may have been an\\narbitrary number of other operations to get the function.\\nE.g. \\\"arr[idx](args)\\\"\\n\",\n      \"begin\": \"(?x)\\n  (?<= \\\\] | \\\\) ) \\\\s*\\n  (?=\\\\()\\n\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"round-braces\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"line-continuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\)\\\\s*(\\\\S.*$\\\\n?)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.continuation.line.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.line.continuation.python\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(\\\\\\\\)\\\\s*$\\\\n?\",\n          \"end\": \"(?x)\\n  (?=^\\\\s*$)\\n  |\\n  (?! (\\\\s* [rR]? (\\\\'\\\\'\\\\'|\\\\\\\"\\\\\\\"\\\\\\\"|\\\\'|\\\\\\\"))\\n      |\\n      (\\\\G $)  (?# '\\\\G' is necessary for ST)\\n  )\\n\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.continuation.line.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"assignment-operator\": {\n      \"name\": \"keyword.operator.assignment.python\",\n      \"match\": \"(?x)\\n     <<= | >>= | //= | \\\\*\\\\*=\\n    | \\\\+= | -= | /= | @=\\n    | \\\\*= | %= | ~= | \\\\^= | &= | \\\\|=\\n    | =(?!=)\\n\"\n    },\n    \"operator\": {\n      \"match\": \"(?x)\\n    \\\\b(?<!\\\\.)\\n      (?:\\n        (and | or | not | in | is)                         (?# 1)\\n        |\\n        (for | if | else | await | (?:yield(?:\\\\s+from)?))  (?# 2)\\n      )\\n    (?!\\\\s*:)\\\\b\\n\\n    | (<< | >> | & | \\\\| | \\\\^ | ~)                          (?# 3)\\n\\n    | (\\\\*\\\\* | \\\\* | \\\\+ | - | % | // | / | @)                (?# 4)\\n\\n    | (!= | == | >= | <= | < | >)                          (?# 5)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.python\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.bitwise.python\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.arithmetic.python\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.comparison.python\"\n        }\n      }\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.colon.python\",\n          \"match\": \":\"\n        },\n        {\n          \"name\": \"punctuation.separator.element.python\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.python\",\n          \"match\": \"\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\b\"\n        },\n        {\n          \"include\": \"#number\"\n        }\n      ]\n    },\n    \"number\": {\n      \"name\": \"constant.numeric.python\",\n      \"patterns\": [\n        {\n          \"include\": \"#number-float\"\n        },\n        {\n          \"include\": \"#number-dec\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-oct\"\n        },\n        {\n          \"include\": \"#number-bin\"\n        },\n        {\n          \"include\": \"#number-long\"\n        },\n        {\n          \"name\": \"invalid.illegal.name.python\",\n          \"match\": \"\\\\b[0-9]+\\\\w+\"\n        }\n      ]\n    },\n    \"number-float\": {\n      \"name\": \"constant.numeric.float.python\",\n      \"match\": \"(?x)\\n  (?<! \\\\w)(?:\\n    (?:\\n      \\\\.[0-9](?: _?[0-9] )*\\n      |\\n      [0-9](?: _?[0-9] )* \\\\. [0-9](?: _?[0-9] )*\\n      |\\n      [0-9](?: _?[0-9] )* \\\\.\\n    ) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?\\n    |\\n    [0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )\\n  )([jJ])?\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.imaginary.number.python\"\n        }\n      }\n    },\n    \"number-dec\": {\n      \"name\": \"constant.numeric.dec.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])(?:\\n      [1-9](?: _?[0-9] )*\\n      |\\n      0+\\n      |\\n      [0-9](?: _?[0-9] )* ([jJ])\\n      |\\n      0 ([0-9]+)(?![eE\\\\.])\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.imaginary.number.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.dec.python\"\n        }\n      }\n    },\n    \"number-hex\": {\n      \"name\": \"constant.numeric.hex.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[xX]) (_?[0-9a-fA-F])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-oct\": {\n      \"name\": \"constant.numeric.oct.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[oO]) (_?[0-7])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-bin\": {\n      \"name\": \"constant.numeric.bin.python\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    (0[bB]) (_?[01])+\\n  \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"number-long\": {\n      \"name\": \"constant.numeric.bin.python\",\n      \"comment\": \"this is to support python2 syntax for long ints\",\n      \"match\": \"(?x)\\n  (?<![\\\\w\\\\.])\\n    ([1-9][0-9]* | 0) ([lL])\\n  \\\\b\\n\",\n      \"captures\": {\n        \"2\": {\n          \"name\": \"storage.type.number.python\"\n        }\n      }\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-single-three-line\"\n        },\n        {\n          \"include\": \"#regexp-double-three-line\"\n        },\n        {\n          \"include\": \"#regexp-single-one-line\"\n        },\n        {\n          \"include\": \"#regexp-double-one-line\"\n        },\n        {\n          \"include\": \"#fregexp-single-three-line\"\n        },\n        {\n          \"include\": \"#fregexp-double-three-line\"\n        },\n        {\n          \"include\": \"#fregexp-single-one-line\"\n        },\n        {\n          \"include\": \"#fregexp-double-one-line\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-bin-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-bin-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-raw-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-raw-quoted-single-line\"\n        },\n        {\n          \"include\": \"#string-raw-bin-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#string-raw-bin-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-fnorm-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-fnorm-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-normf-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-normf-quoted-single-line\"\n        },\n        {\n          \"include\": \"#fstring-raw-quoted-multi-line\"\n        },\n        {\n          \"include\": \"#fstring-raw-quoted-single-line\"\n        }\n      ]\n    },\n    \"string-unicode-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        },\n        {\n          \"include\": \"#string-brace-formatting\"\n        }\n      ]\n    },\n    \"string-consume-escape\": {\n      \"match\": \"\\\\\\\\['\\\"\\\\n\\\\\\\\]\"\n    },\n    \"string-raw-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        },\n        {\n          \"include\": \"#string-brace-formatting\"\n        }\n      ]\n    },\n    \"string-raw-bin-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"string-entity\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"fstring-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        },\n        {\n          \"include\": \"#fstring-formatting\"\n        }\n      ]\n    },\n    \"fstring-raw-guts\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#fstring-formatting\"\n        }\n      ]\n    },\n    \"fstring-illegal-single-brace\": {\n      \"comment\": \"it is illegal to have a multiline brace inside a single-line string\",\n      \"begin\": \"(\\\\{)(?=[^\\\\n}]*$\\\\n?)\",\n      \"end\": \"(\\\\})|(?=\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-single\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-illegal-multi-brace\": {\n      \"patterns\": [\n        {\n          \"include\": \"#impossible\"\n        }\n      ]\n    },\n    \"f-expression\": {\n      \"comment\": \"All valid Python expressions, except comments and line continuation\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression-bare\"\n        },\n        {\n          \"include\": \"#member-access\"\n        },\n        {\n          \"comment\": \"Tokenize identifiers to help linters\",\n          \"match\": \"(?x) \\\\b ([[:alpha:]_]\\\\w*) \\\\b\"\n        }\n      ]\n    },\n    \"escape-sequence-unicode\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.python\",\n          \"match\": \"(?x)\\n  \\\\\\\\ (\\n        u[0-9A-Fa-f]{4}\\n        | U[0-9A-Fa-f]{8}\\n        | N\\\\{[\\\\w\\\\s]+?\\\\}\\n     )\\n\"\n        }\n      ]\n    },\n    \"escape-sequence\": {\n      \"name\": \"constant.character.escape.python\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        x[0-9A-Fa-f]{2}\\n        | [0-7]{1,3}\\n        | [\\\\\\\\\\\"'abfnrtv]\\n     )\\n\"\n    },\n    \"string-line-continuation\": {\n      \"name\": \"constant.language.python\",\n      \"match\": \"\\\\\\\\$\"\n    },\n    \"string-formatting\": {\n      \"name\": \"meta.format.percent.python\",\n      \"match\": \"(?x)\\n  (\\n    % (\\\\([\\\\w\\\\s]*\\\\))?\\n      [-+#0 ]*\\n      (\\\\d+|\\\\*)? (\\\\.(\\\\d+|\\\\*))?\\n      ([hlL])?\\n      [diouxXeEfFgGcrsab%]\\n  )\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      }\n    },\n    \"string-brace-formatting\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.format.brace.python\",\n          \"match\": \"(?x)\\n  (\\n    {{ | }}\\n    | (?:\\n      {\\n        \\\\w* (\\\\.[[:alpha:]_]\\\\w* | \\\\[[^\\\\]'\\\"]+\\\\])*\\n        (![rsa])?\\n        ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n          \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )?\\n      })\\n  )\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.format.brace.python\",\n          \"match\": \"(?x)\\n  (\\n    {\\n      \\\\w* (\\\\.[[:alpha:]_]\\\\w* | \\\\[[^\\\\]'\\\"]+\\\\])*\\n      (![rsa])?\\n      (:)\\n        [^'\\\"{}\\\\n]* (?:\\n          \\\\{ [^'\\\"}\\\\n]*? \\\\} [^'\\\"{}\\\\n]*\\n        )*\\n    }\\n  )\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        }\n      ]\n    },\n    \"fstring-formatting\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-formatting-braces\"\n        },\n        {\n          \"include\": \"#fstring-formatting-singe-brace\"\n        }\n      ]\n    },\n    \"fstring-formatting-singe-brace\": {\n      \"name\": \"invalid.illegal.brace.python\",\n      \"match\": \"(}(?!}))\"\n    },\n    \"import\": {\n      \"comment\": \"Import statements used to correctly mark `from`, `import`, and `as`\\n\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?<!\\\\.)(from)\\\\b(?=.+import)\",\n          \"end\": \"$|(?=import)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"punctuation.separator.period.python\",\n              \"match\": \"\\\\.+\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(?<!\\\\.)(import)\\\\b\",\n          \"end\": \"$\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"keyword.control.import.python\",\n              \"match\": \"\\\\b(?<!\\\\.)as\\\\b\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.class.python\",\n          \"begin\": \"(?x)\\n  \\\\s*(class)\\\\s+\\n    (?=\\n      [[:alpha:]_]\\\\w* \\\\s* (:|\\\\()\\n    )\\n\",\n          \"end\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.class.begin.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#class-name\"\n            },\n            {\n              \"include\": \"#class-inheritance\"\n            }\n          ]\n        }\n      ]\n    },\n    \"class-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"name\": \"entity.name.type.class.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"class-inheritance\": {\n      \"name\": \"meta.class.inheritance.python\",\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.inheritance.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.inheritance.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.unpacking.arguments.python\",\n          \"match\": \"(\\\\*\\\\*|\\\\*)\"\n        },\n        {\n          \"name\": \"punctuation.separator.inheritance.python\",\n          \"match\": \",\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        },\n        {\n          \"name\": \"support.type.metaclass.python\",\n          \"match\": \"\\\\bmetaclass\\\\b\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#class-kwarg\"\n        },\n        {\n          \"include\": \"#call-wrapper-inheritance\"\n        },\n        {\n          \"include\": \"#expression-base\"\n        },\n        {\n          \"include\": \"#member-access-class\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"class-kwarg\": {\n      \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\s*(=)(?!=)\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.python variable.parameter.class.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment.python\"\n        }\n      }\n    },\n    \"inheritance-identifier\": {\n      \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.python\"\n        }\n      }\n    },\n    \"member-access-class\": {\n      \"name\": \"meta.member.access.python\",\n      \"begin\": \"(\\\\.)\\\\s*(?!\\\\.)\",\n      \"end\": \"(?<=\\\\S)(?=\\\\W)|$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.period.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#call-wrapper-inheritance\"\n        },\n        {\n          \"include\": \"#member-access-base\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"lambda\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?<=\\\\.)lambda|lambda(?=\\\\s*[\\\\.=]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.python\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(lambda)\\\\s*?(?=[,\\\\n]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.lambda.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.lambda-function.python\",\n          \"begin\": \"(?x)\\n  \\\\b (lambda) \\\\b\\n\",\n          \"end\": \"(:)|(\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.lambda.python\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.lambda.begin.python\"\n            }\n          },\n          \"contentName\": \"meta.function.lambda.parameters.python\",\n          \"patterns\": [\n            {\n              \"name\": \"keyword.operator.unpacking.parameter.python\",\n              \"match\": \"(\\\\*\\\\*|\\\\*)\"\n            },\n            {\n              \"include\": \"#lambda-nested-incomplete\"\n            },\n            {\n              \"include\": \"#illegal-names\"\n            },\n            {\n              \"match\": \"([[:alpha:]_]\\\\w*)\\\\s*(?:(,)|(?=:|$))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.language.python\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.parameters.python\"\n                }\n              }\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#backticks\"\n            },\n            {\n              \"include\": \"#illegal-anno\"\n            },\n            {\n              \"include\": \"#lambda-parameter-with-default\"\n            },\n            {\n              \"include\": \"#line-continuation\"\n            },\n            {\n              \"include\": \"#illegal-operator\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-incomplete\": {\n      \"name\": \"storage.type.function.lambda.python\",\n      \"match\": \"\\\\blambda(?=\\\\s*[,)])\"\n    },\n    \"lambda-nested-incomplete\": {\n      \"name\": \"storage.type.function.lambda.python\",\n      \"match\": \"\\\\blambda(?=\\\\s*[:,)])\"\n    },\n    \"lambda-parameter-with-default\": {\n      \"begin\": \"(?x)\\n  \\\\b\\n  ([[:alpha:]_]\\\\w*) \\\\s* (=)\\n\",\n      \"end\": \"(,)|(?=:|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"generator\": {\n      \"comment\": \"Match \\\"for ... in\\\" construct used in generators and for loops to\\ncorrectly identify the \\\"in\\\" as a control flow keyword.\\n\",\n      \"begin\": \"\\\\bfor\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.flow.python\"\n        }\n      },\n      \"end\": \"\\\\bin\\\\b\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.flow.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.python\",\n      \"begin\": \"(?x)\\n  \\\\s*\\n  (?:\\\\b(async) \\\\s+)? \\\\b(def)\\\\s+\\n    (?=\\n      [[:alpha:]_][[:word:]]* \\\\s* \\\\(\\n    )\\n\",\n      \"end\": \"(:|(?=[#'\\\"\\\\n]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.async.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.begin.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-def-name\"\n        },\n        {\n          \"include\": \"#parameters\"\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"include\": \"#return-annotation\"\n        }\n      ]\n    },\n    \"function-def-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"name\": \"entity.name.function.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"parameters\": {\n      \"name\": \"meta.function.parameters.python\",\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.parameters.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.unpacking.parameter.python\",\n          \"match\": \"(\\\\*\\\\*|\\\\*)\"\n        },\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#parameter-special\"\n        },\n        {\n          \"match\": \"(?x)\\n  ([[:alpha:]_]\\\\w*)\\n    \\\\s* (?: (,) | (?=[)#\\\\n=]))\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function.language.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.parameters.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#loose-default\"\n        },\n        {\n          \"include\": \"#annotated-parameter\"\n        }\n      ]\n    },\n    \"parameter-special\": {\n      \"match\": \"(?x)\\n  \\\\b ((self)|(cls)) \\\\b \\\\s*(?:(,)|(?=\\\\)))\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.function.language.special.self.python\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.function.language.special.cls.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      }\n    },\n    \"loose-default\": {\n      \"begin\": \"(=)\",\n      \"end\": \"(,)|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"annotated-parameter\": {\n      \"begin\": \"(?x)\\n  \\\\b\\n  ([[:alpha:]_]\\\\w*) \\\\s* (:)\\n\",\n      \"end\": \"(,)|(?=\\\\))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.parameter.function.language.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.annotation.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.parameters.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        }\n      ]\n    },\n    \"return-annotation\": {\n      \"begin\": \"(->)\",\n      \"end\": \"(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.annotation.result.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"item-access\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.item-access.python\",\n          \"begin\": \"(?x)\\n  \\\\b(?=\\n    [[:alpha:]_]\\\\w* \\\\s* \\\\[\\n  )\\n\",\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#item-name\"\n            },\n            {\n              \"include\": \"#item-index\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"item-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#special-names\"\n        },\n        {\n          \"name\": \"meta.indexed-name.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"item-index\": {\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(?=\\\\])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.begin.python\"\n        }\n      },\n      \"contentName\": \"meta.item-access.arguments.python\",\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.slice.python\",\n          \"match\": \":\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.function.decorator.python\",\n      \"begin\": \"(?x)\\n  ^\\\\s*\\n  ((@)) \\\\s* (?=[[:alpha:]_]\\\\w*)\\n\",\n      \"end\": \"(?x)\\n  ( \\\\) )\\n    # trailing whitespace and comments are legal\\n    (?: (.*?) (?=\\\\s*(?:\\\\#|$)) )\\n  | (?=\\\\n|\\\\#)\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.decorator.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.decorator.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.decorator.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#decorator-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"decorator-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-callables\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"name\": \"entity.name.function.decorator.python\",\n          \"match\": \"(?x)\\n  ([[:alpha:]_]\\\\w*) | (\\\\.)\\n\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.separator.period.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#line-continuation\"\n        },\n        {\n          \"name\": \"invalid.illegal.decorator.python\",\n          \"match\": \"(?x)\\n  \\\\s* ([^([:alpha:]\\\\s_\\\\.#\\\\\\\\] .*?) (?=\\\\#|$)\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.decorator.python\"\n            }\n          }\n        }\n      ]\n    },\n    \"call-wrapper-inheritance\": {\n      \"comment\": \"same as a function call, but in inheritance context\",\n      \"name\": \"meta.function-call.python\",\n      \"begin\": \"(?x)\\n  \\\\b(?=\\n    ([[:alpha:]_]\\\\w*) \\\\s* (\\\\()\\n  )\\n\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#inheritance-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"inheritance-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"include\": \"#inheritance-identifier\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"name\": \"meta.function-call.python\",\n      \"comment\": \"Regular function call of the type \\\"name(args)\\\"\",\n      \"begin\": \"(?x)\\n  \\\\b(?=\\n    ([[:alpha:]_]\\\\w*) \\\\s* (\\\\()\\n  )\\n\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.end.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#special-variables\"\n        },\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-arguments\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-possible-callables\"\n        },\n        {\n          \"comment\": \"Some color schemas support meta.function-call.generic scope\",\n          \"name\": \"meta.function-call.generic.python\",\n          \"match\": \"(?x)\\n  \\\\b ([[:alpha:]_]\\\\w*) \\\\b\\n\"\n        }\n      ]\n    },\n    \"function-arguments\": {\n      \"begin\": \"(\\\\()\",\n      \"end\": \"(?=\\\\))(?!\\\\)\\\\s*\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.arguments.begin.python\"\n        }\n      },\n      \"contentName\": \"meta.function-call.arguments.python\",\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator.arguments.python\",\n          \"match\": \"(,)\"\n        },\n        {\n          \"match\": \"(?x)\\n  (?:(?<=[,(])|^) \\\\s* (\\\\*{1,2})\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.unpacking.arguments.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#lambda-incomplete\"\n        },\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"match\": \"\\\\b([[:alpha:]_]\\\\w*)\\\\s*(=)(?!=)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function-call.python\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.assignment.python\",\n          \"match\": \"=(?!=)\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\))\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.end.python\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.python\"\n            }\n          }\n        }\n      ]\n    },\n    \"builtin-callables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#illegal-names\"\n        },\n        {\n          \"include\": \"#illegal-object-name\"\n        },\n        {\n          \"include\": \"#builtin-exceptions\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        }\n      ]\n    },\n    \"builtin-possible-callables\": {\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-callables\"\n        },\n        {\n          \"include\": \"#magic-names\"\n        }\n      ]\n    },\n    \"builtin-exceptions\": {\n      \"name\": \"support.type.exception.python\",\n      \"match\": \"(?x) (?<!\\\\.) \\\\b(\\n  (\\n    Arithmetic | Assertion | Attribute | Buffer | BlockingIO\\n    | BrokenPipe | ChildProcess\\n    | (Connection (Aborted | Refused | Reset)?)\\n    | EOF | Environment | FileExists | FileNotFound\\n    | FloatingPoint | IO | Import | Indentation | Index | Interrupted\\n    | IsADirectory | NotADirectory | Permission | ProcessLookup\\n    | Timeout\\n    | Key | Lookup | Memory | Name | NotImplemented | OS | Overflow\\n    | Reference | Runtime | Recursion | Syntax | System\\n    | Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)?\\n    | Value | Windows | ZeroDivision | ModuleNotFound\\n  ) Error\\n|\\n  ((Pending)?Deprecation | Runtime | Syntax | User | Future | Import\\n    | Unicode | Bytes | Resource\\n  )? Warning\\n|\\n  SystemExit | Stop(Async)?Iteration\\n  | KeyboardInterrupt\\n  | GeneratorExit | (Base)?Exception\\n)\\\\b\\n\"\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.function.builtin.python\",\n          \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    __import__ | abs | all | any | ascii | bin | breakpoint | callable\\n    | chr | compile | copyright | credits | delattr | dir | divmod\\n    | enumerate | eval | exec | exit | filter | format | getattr\\n    | globals | hasattr | hash | help | hex | id | input\\n    | isinstance | issubclass | iter | len | license | locals | map\\n    | max | memoryview | min | next | oct | open | ord | pow | print\\n    | quit | range | reload | repr | reversed | round\\n    | setattr | sorted | sum | vars | zip\\n  )\\\\b\\n\"\n        },\n        {\n          \"name\": \"variable.legacy.builtin.python\",\n          \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    file | reduce | intern | raw_input | unicode | cmp | basestring\\n    | execfile | long | xrange\\n  )\\\\b\\n\"\n        }\n      ]\n    },\n    \"builtin-types\": {\n      \"name\": \"support.type.python\",\n      \"match\": \"(?x)\\n  (?<!\\\\.) \\\\b(\\n    bool | bytearray | bytes | classmethod | complex | dict\\n    | float | frozenset | int | list | object | property\\n    | set | slice | staticmethod | str | tuple | type\\n\\n    (?# Although 'super' is not a type, it's related to types,\\n        and is special enough to be highlighted differently from\\n        other built-ins)\\n    | super\\n  )\\\\b\\n\"\n    },\n    \"magic-function-names\": {\n      \"comment\": \"these methods have magic interpretation by python and are generally called\\nindirectly through syntactic constructs\\n\",\n      \"match\": \"(?x)\\n  \\\\b(\\n    __(?:\\n      abs | add | aenter | aexit | aiter | and | anext | await\\n      | bool | call | ceil | cmp | coerce | complex | contains\\n      | copy | deepcopy | del | delattr | delete | delitem\\n      | delslice | dir | div | divmod | enter | eq | exit | float\\n      | floor | floordiv | format | ge | get | getattr\\n      | getattribute | getinitargs | getitem | getnewargs\\n      | getslice | getstate | gt | hash | hex | iadd | iand | idiv\\n      | ifloordiv | ilshift | imod | imul | index | init\\n      | instancecheck | int | invert | ior | ipow | irshift | isub\\n      | iter | itruediv | ixor | le | len | long | lshift | lt\\n      | missing | mod | mul | ne | neg | new | next | nonzero | oct | or\\n      | pos | pow | radd | rand | rdiv | rdivmod | reduce\\n      | reduce_ex | repr | reversed | rfloordiv | rlshift | rmod\\n      | rmul | ror | round | rpow | rrshift | rshift | rsub\\n      | rtruediv | rxor | set | setattr | setitem | setslice\\n      | setstate | sizeof | str | sub | subclasscheck | truediv\\n      | trunc | unicode | xor | matmul | rmatmul | imatmul\\n      | init_subclass | set_name | fspath | bytes | prepare\\n    )__\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.magic.python\"\n        }\n      }\n    },\n    \"magic-variable-names\": {\n      \"comment\": \"magic variables which a class/module may have.\",\n      \"match\": \"(?x)\\n  \\\\b(\\n    __(?:\\n      all | bases | builtins | class | class_getitem | code | debug\\n      | defaults | dict | doc | file | func | kwdefaults | members\\n      | metaclass | methods | module | mro | mro_entries | name\\n      | qualname | post_init | self | signature | slots | subclasses\\n      | version | weakref | wrapped | annotations | classcell\\n      | spec | path | package | future | traceback\\n    )__\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.variable.magic.python\"\n        }\n      }\n    },\n    \"magic-names\": {\n      \"patterns\": [\n        {\n          \"include\": \"#magic-function-names\"\n        },\n        {\n          \"include\": \"#magic-variable-names\"\n        }\n      ]\n    },\n    \"illegal-names\": {\n      \"match\": \"(?x)\\n  \\\\b(?:\\n    (\\n      and | assert | async | await | break | class | continue | def\\n      | del | elif | else | except | finally | for | from | global\\n      | if | in | is | (?<=\\\\.)lambda | lambda(?=\\\\s*[\\\\.=])\\n      | nonlocal | not | or | pass | raise | return | try | while | with\\n      | yield\\n    ) | (\\n      as | import\\n    )\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.python\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.import.python\"\n        }\n      }\n    },\n    \"special-variables\": {\n      \"match\": \"(?x)\\n  \\\\b (?<!\\\\.) (?:\\n    (self) | (cls)\\n  )\\\\b\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.language.special.self.python\"\n        },\n        \"2\": {\n          \"name\": \"variable.language.special.cls.python\"\n        }\n      }\n    },\n    \"ellipsis\": {\n      \"name\": \"constant.other.ellipsis.python\",\n      \"match\": \"\\\\.\\\\.\\\\.\"\n    },\n    \"backticks\": {\n      \"name\": \"invalid.deprecated.backtick.python\",\n      \"begin\": \"\\\\`\",\n      \"end\": \"(?:\\\\`|(?<!\\\\\\\\)(\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"illegal-operator\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"match\": \"&&|\\\\|\\\\||--|\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"match\": \"[?$]\"\n        },\n        {\n          \"name\": \"invalid.illegal.operator.python\",\n          \"comment\": \"We don't want `!` to flash when we're typing `!=`\",\n          \"match\": \"!\\\\b\"\n        }\n      ]\n    },\n    \"illegal-object-name\": {\n      \"comment\": \"It's illegal to name class or function \\\"True\\\"\",\n      \"name\": \"keyword.illegal.name.python\",\n      \"match\": \"\\\\b(True|False|None)\\\\b\"\n    },\n    \"illegal-anno\": {\n      \"name\": \"invalid.illegal.annotation.python\",\n      \"match\": \"->\"\n    },\n    \"regexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-quantifier\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fregexp-base-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-quantifier\"\n        },\n        {\n          \"include\": \"#fstring-formatting-braces\"\n        },\n        {\n          \"match\": \"\\\\{.*?\\\\}\"\n        },\n        {\n          \"include\": \"#regexp-base-common\"\n        }\n      ]\n    },\n    \"fstring-formatting-braces\": {\n      \"patterns\": [\n        {\n          \"comment\": \"empty braces are illegal\",\n          \"match\": \"({)(\\\\s*?)(})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.brace.python\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.format.placeholder.other.python\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.character.escape.python\",\n          \"match\": \"({{|}})\"\n        }\n      ]\n    },\n    \"regexp-base-common\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.other.match.any.regexp\",\n          \"match\": \"\\\\.\"\n        },\n        {\n          \"name\": \"support.other.match.begin.regexp\",\n          \"match\": \"\\\\^\"\n        },\n        {\n          \"name\": \"support.other.match.end.regexp\",\n          \"match\": \"\\\\$\"\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[+*?]\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.disjunction.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"include\": \"#regexp-escape-sequence\"\n        }\n      ]\n    },\n    \"regexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\n\"\n    },\n    \"fregexp-quantifier\": {\n      \"name\": \"keyword.operator.quantifier.regexp\",\n      \"match\": \"(?x)\\n  \\\\{\\\\{(\\n    \\\\d+ | \\\\d+,(\\\\d+)? | ,\\\\d+\\n  )\\\\}\\\\}\\n\"\n    },\n    \"regexp-backreference-number\": {\n      \"name\": \"meta.backreference.regexp\",\n      \"match\": \"(\\\\\\\\[1-9]\\\\d?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.tag.backreference.regexp\"\n        }\n      }\n    },\n    \"regexp-backreference\": {\n      \"name\": \"meta.backreference.named.regexp\",\n      \"match\": \"(?x)\\n  (\\\\()  (\\\\?P= \\\\w+(?:\\\\s+[[:alnum:]]+)?)  (\\\\))\\n\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.backreference.regexp\"\n        },\n        \"3\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp\"\n        }\n      }\n    },\n    \"regexp-flags\": {\n      \"name\": \"storage.modifier.flag.regexp\",\n      \"match\": \"\\\\(\\\\?[aiLmsux]+\\\\)\"\n    },\n    \"regexp-escape-special\": {\n      \"name\": \"support.other.escape.special.regexp\",\n      \"match\": \"\\\\\\\\([AbBdDsSwWZ])\"\n    },\n    \"regexp-escape-character\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        x[0-9A-Fa-f]{2}\\n        | 0[0-7]{1,2}\\n        | [0-7]{3}\\n     )\\n\"\n    },\n    \"regexp-escape-unicode\": {\n      \"name\": \"constant.character.unicode.regexp\",\n      \"match\": \"(?x)\\n  \\\\\\\\ (\\n        u[0-9A-Fa-f]{4}\\n        | U[0-9A-Fa-f]{8}\\n     )\\n\"\n    },\n    \"regexp-escape-catchall\": {\n      \"name\": \"constant.character.escape.regexp\",\n      \"match\": \"\\\\\\\\(.|\\\\n)\"\n    },\n    \"regexp-escape-sequence\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-backreference-number\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"regexp-charecter-set-escapes\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\[abfnrtv\\\\\\\\]\"\n        },\n        {\n          \"include\": \"#regexp-escape-special\"\n        },\n        {\n          \"name\": \"constant.character.escape.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{1,3})\"\n        },\n        {\n          \"include\": \"#regexp-escape-character\"\n        },\n        {\n          \"include\": \"#regexp-escape-unicode\"\n        },\n        {\n          \"include\": \"#regexp-escape-catchall\"\n        }\n      ]\n    },\n    \"codetags\": {\n      \"match\": \"(?:\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.codetag.notation.python\"\n        }\n      }\n    },\n    \"comments-base\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($)\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"comments-string-single-three\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($|(?='''))\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"comments-string-double-three\": {\n      \"name\": \"comment.line.number-sign.python\",\n      \"begin\": \"(\\\\#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.python\"\n        }\n      },\n      \"end\": \"($|(?=\\\"\\\"\\\"))\",\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-one-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-one-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-one-regexp-conditional\"\n        },\n        {\n          \"include\": \"#single-one-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-one-regexp-parentheses\"\n        }\n      ]\n    },\n    \"single-one-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"single-one-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"single-three-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-three-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-three-regexp-conditional\"\n        },\n        {\n          \"include\": \"#single-three-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-three-regexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\\'\\\\'\\\\'))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"single-three-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"double-one-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-one-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-one-regexp-conditional\"\n        },\n        {\n          \"include\": \"#double-one-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-one-regexp-parentheses\"\n        }\n      ]\n    },\n    \"double-one-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-one-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-one-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"double-three-regexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#regexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-three-regexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-three-regexp-conditional\"\n        },\n        {\n          \"include\": \"#double-three-regexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-three-regexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-character-set\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n  \\\\[ \\\\^? \\\\] (?! .*?\\\\])\\n\"\n        },\n        {\n          \"name\": \"meta.character.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?(\\\\])?\",\n          \"end\": \"(\\\\]|(?=\\\"\\\"\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.begin.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            },\n            \"3\": {\n              \"name\": \"constant.character.set.regexp\"\n            }\n          },\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.character.set.end.regexp constant.other.set.regexp\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.newline.python\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp-charecter-set-escapes\"\n            },\n            {\n              \"name\": \"constant.character.set.regexp\",\n              \"match\": \"[^\\\\n]\"\n            }\n          ]\n        }\n      ]\n    },\n    \"double-three-regexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-comments\": {\n      \"name\": \"comment.regexp\",\n      \"begin\": \"\\\\(\\\\?#\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.comment.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.comment.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#codetags\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-regexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"regexp-single-one-line\": {\n      \"name\": \"string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\\')\",\n      \"end\": \"(\\\\')|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-single-three-line\": {\n      \"name\": \"string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\\'\\\\'\\\\')\",\n      \"end\": \"(\\\\'\\\\'\\\\')\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-double-one-line\": {\n      \"name\": \"string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\")\",\n      \"end\": \"(\\\")|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-regexp-expression\"\n        }\n      ]\n    },\n    \"regexp-double-three-line\": {\n      \"name\": \"string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([bB]r)|(r[bB]?))(\\\"\\\"\\\")\",\n      \"end\": \"(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-regexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-one-fregexp-parentheses\"\n        }\n      ]\n    },\n    \"single-one-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-one-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"single-three-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#single-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#single-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#single-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#single-three-fregexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"single-three-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\\'\\\\'\\\\'))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-single-three\"\n        }\n      ]\n    },\n    \"double-one-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-one-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-one-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-one-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-one-fregexp-parentheses\"\n        }\n      ]\n    },\n    \"double-one-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-one-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"))|((?=(?<!\\\\\\\\)\\\\n))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"double-three-fregexp-expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#fregexp-base-expression\"\n        },\n        {\n          \"include\": \"#double-three-regexp-character-set\"\n        },\n        {\n          \"include\": \"#double-three-regexp-comments\"\n        },\n        {\n          \"include\": \"#regexp-flags\"\n        },\n        {\n          \"include\": \"#double-three-regexp-named-group\"\n        },\n        {\n          \"include\": \"#regexp-backreference\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookahead\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookahead-negative\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookbehind\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-lookbehind-negative\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-conditional\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-parentheses-non-capturing\"\n        },\n        {\n          \"include\": \"#double-three-fregexp-parentheses\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-named-group\": {\n      \"name\": \"meta.named.regexp\",\n      \"begin\": \"(?x)\\n  (\\\\()  (\\\\?P <\\\\w+(?:\\\\s+[[:alnum:]]+)?>)\\n\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.named.group.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookahead\": {\n      \"begin\": \"(\\\\()\\\\?=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookahead-negative\": {\n      \"begin\": \"(\\\\()\\\\?!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookahead.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookbehind\": {\n      \"begin\": \"(\\\\()\\\\?<=\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-lookbehind-negative\": {\n      \"begin\": \"(\\\\()\\\\?<!\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.lookbehind.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-conditional\": {\n      \"begin\": \"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+[[:alnum:]]+)?|\\\\d+)\\\\)\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.conditional.regexp\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.conditional.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-parentheses-non-capturing\": {\n      \"begin\": \"\\\\(\\\\?:\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"double-three-fregexp-parentheses\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"(\\\\)|(?=\\\"\\\"\\\"))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        },\n        {\n          \"include\": \"#comments-string-double-three\"\n        }\n      ]\n    },\n    \"fregexp-single-one-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\\')\",\n      \"end\": \"(\\\\')|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-single-three-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\\'\\\\'\\\\')\",\n      \"end\": \"(\\\\'\\\\'\\\\')\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#single-three-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-double-one-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.single.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\")\",\n      \"end\": \"(\\\")|(?<!\\\\\\\\)(\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-one-fregexp-expression\"\n        }\n      ]\n    },\n    \"fregexp-double-three-line\": {\n      \"name\": \"string.interpolated.python string.regexp.quoted.multi.python\",\n      \"begin\": \"\\\\b(([uU]r)|([fF]r)|(r[fF]?))(\\\"\\\"\\\")\",\n      \"end\": \"(\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-three-fregexp-expression\"\n        }\n      ]\n    },\n    \"string-raw-quoted-single-line\": {\n      \"name\": \"string.quoted.raw.single.python\",\n      \"begin\": \"\\\\b(([uU]R)|(R))((['\\\"]))\",\n      \"end\": \"(\\\\4)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-bad-brace1-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-single-bad-brace2-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-raw-guts\"\n        }\n      ]\n    },\n    \"string-bin-quoted-single-line\": {\n      \"name\": \"string.quoted.binary.single.python\",\n      \"begin\": \"(\\\\b[bB])((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-raw-bin-quoted-single-line\": {\n      \"name\": \"string.quoted.raw.binary.single.python\",\n      \"begin\": \"(\\\\b(?:R[bB]|[bB]R))((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-raw-bin-guts\"\n        }\n      ]\n    },\n    \"string-quoted-single-line\": {\n      \"name\": \"string.quoted.single.python\",\n      \"begin\": \"(?:\\\\b([rR])(?=[uU]))?([uU])?((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-single-bad-brace1-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-single-bad-brace2-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-unicode-guts\"\n        }\n      ]\n    },\n    \"string-single-bad-brace1-formatting-unicode\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"string-single-bad-brace1-formatting-raw\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        }\n      ]\n    },\n    \"string-single-bad-brace2-formatting-unicode\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-single-bad-brace2-formatting-raw\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!(['\\\"])|((?<!\\\\\\\\)\\\\n)) [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?=(['\\\"])|((?<!\\\\\\\\)\\\\n))\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"string-raw-quoted-multi-line\": {\n      \"name\": \"string.quoted.raw.multi.python\",\n      \"begin\": \"\\\\b(([uU]R)|(R))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\4)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"invalid.deprecated.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-multi-bad-brace1-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-multi-bad-brace2-formatting-raw\"\n        },\n        {\n          \"include\": \"#string-raw-guts\"\n        }\n      ]\n    },\n    \"string-bin-quoted-multi-line\": {\n      \"name\": \"string.quoted.binary.multi.python\",\n      \"begin\": \"(\\\\b[bB])('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-raw-bin-quoted-multi-line\": {\n      \"name\": \"string.quoted.raw.binary.multi.python\",\n      \"begin\": \"(\\\\b(?:R[bB]|[bB]R))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-raw-bin-guts\"\n        }\n      ]\n    },\n    \"string-quoted-multi-line\": {\n      \"name\": \"string.quoted.multi.python\",\n      \"begin\": \"(?:\\\\b([rR])(?=[uU]))?([uU])?('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-multi-bad-brace1-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-multi-bad-brace2-formatting-unicode\"\n        },\n        {\n          \"include\": \"#string-unicode-guts\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace1-formatting-unicode\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!'''|\\\"\\\"\\\") )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#escape-sequence\"\n        },\n        {\n          \"include\": \"#string-line-continuation\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace1-formatting-raw\": {\n      \"comment\": \"template using {% ... %}\",\n      \"begin\": \"(?x)\\n    (?= \\\\{%\\n          ( .*? (?!'''|\\\"\\\"\\\") )\\n        %\\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace2-formatting-unicode\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!'''|\\\"\\\"\\\") [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!'''|\\\"\\\"\\\")\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape-sequence-unicode\"\n        },\n        {\n          \"include\": \"#string-entity\"\n        }\n      ]\n    },\n    \"string-multi-bad-brace2-formatting-raw\": {\n      \"comment\": \"odd format or format-like syntax\",\n      \"begin\": \"(?x)\\n    (?!\\\\{\\\\{)\\n    (?= \\\\{ (\\n              \\\\w*? (?!'''|\\\"\\\"\\\") [^!:\\\\.\\\\[}\\\\w]\\n           )\\n        .*?(?!'''|\\\"\\\"\\\")\\n        \\\\}\\n    )\\n\",\n      \"end\": \"(?='''|\\\"\\\"\\\")\",\n      \"patterns\": [\n        {\n          \"include\": \"#string-consume-escape\"\n        },\n        {\n          \"include\": \"#string-formatting\"\n        }\n      ]\n    },\n    \"fstring-fnorm-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[fF])([bBuU])?((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.single.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-core\"\n        }\n      ]\n    },\n    \"fstring-normf-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[bBuU])([fF])((['\\\"]))\",\n      \"end\": \"(\\\\3)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"string.interpolated.python string.quoted.single.python storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-core\"\n        }\n      ]\n    },\n    \"fstring-raw-quoted-single-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b(?:[R][fF]|[fF][R]))((['\\\"]))\",\n      \"end\": \"(\\\\2)|((?<!\\\\\\\\)\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.raw.single.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.raw.single.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-raw-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-raw-single-core\"\n        }\n      ]\n    },\n    \"fstring-single-core\": {\n      \"name\": \"string.interpolated.python string.quoted.single.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-raw-single-core\": {\n      \"name\": \"string.interpolated.python string.quoted.raw.single.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|(['\\\"])|((?<!\\\\\\\\)\\\\n))\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-single-brace\": {\n      \"comment\": \"value interpolation using { ... }\",\n      \"begin\": \"(\\\\{)\",\n      \"end\": \"(?x)\\n  (\\\\})|(?=\\\\n)\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-single\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-terminator-single\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(![rsa])(?=})\"\n        },\n        {\n          \"match\": \"(?x)\\n  (![rsa])?\\n    ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n      \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )(?=})\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#fstring-terminator-single-tail\"\n        }\n      ]\n    },\n    \"fstring-terminator-single-tail\": {\n      \"begin\": \"(![rsa])?(:)(?=.*?{)\",\n      \"end\": \"(?=})|(?=\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.format.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.format.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-illegal-single-brace\"\n        },\n        {\n          \"include\": \"#fstring-single-brace\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([bcdeEfFgGnosxX%])(?=})\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\.\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(,)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\#)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([-+ ])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([<>=^])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\w)\"\n        }\n      ]\n    },\n    \"fstring-fnorm-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[fF])([bBuU])?('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.multi.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-core\"\n        }\n      ]\n    },\n    \"fstring-normf-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b[bBuU])([fF])('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\3)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.prefix.python\"\n        },\n        \"2\": {\n          \"name\": \"string.interpolated.python string.quoted.multi.python storage.type.string.python\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-core\"\n        }\n      ]\n    },\n    \"fstring-raw-quoted-multi-line\": {\n      \"name\": \"meta.fstring.python\",\n      \"begin\": \"(\\\\b(?:[R][fF]|[fF][R]))('''|\\\"\\\"\\\")\",\n      \"end\": \"(\\\\2)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.begin.python string.quoted.raw.multi.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-raw-guts\"\n        },\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-raw-multi-core\"\n        }\n      ]\n    },\n    \"fstring-multi-core\": {\n      \"name\": \"string.interpolated.python string.quoted.multi.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|'''|\\\"\\\"\\\")\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-raw-multi-core\": {\n      \"name\": \"string.interpolated.python string.quoted.raw.multi.python\",\n      \"match\": \"(?x)\\n  (.+?)\\n    (\\n      (?# .* and .*? in multi-line match need special handling of\\n        newlines otherwise SublimeText and Atom will match slightly\\n        differently.\\n\\n        The guard for newlines has to be separate from the\\n        lookahead because of special $ matching rule.)\\n      ($\\\\n?)\\n      |\\n      (?=[\\\\\\\\\\\\}\\\\{]|'''|\\\"\\\"\\\")\\n    )\\n  (?# due to how multiline regexps are matched we need a special case\\n    for matching a newline character)\\n  | \\\\n\\n\"\n    },\n    \"fstring-multi-brace\": {\n      \"comment\": \"value interpolation using { ... }\",\n      \"begin\": \"(\\\\{)\",\n      \"end\": \"(?x)\\n  (\\\\})\\n\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"constant.character.format.placeholder.other.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-terminator-multi\"\n        },\n        {\n          \"include\": \"#f-expression\"\n        }\n      ]\n    },\n    \"fstring-terminator-multi\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(![rsa])(?=})\"\n        },\n        {\n          \"match\": \"(?x)\\n  (![rsa])?\\n    ( : \\\\w? [<>=^]? [-+ ]? \\\\#?\\n      \\\\d* ,? (\\\\.\\\\d+)? [bcdeEfFgGnosxX%]? )(?=})\\n\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.format.python\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.format.python\"\n            }\n          }\n        },\n        {\n          \"include\": \"#fstring-terminator-multi-tail\"\n        }\n      ]\n    },\n    \"fstring-terminator-multi-tail\": {\n      \"begin\": \"(![rsa])?(:)(?=.*?{)\",\n      \"end\": \"(?=})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.format.python\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.format.python\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#fstring-illegal-multi-brace\"\n        },\n        {\n          \"include\": \"#fstring-multi-brace\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([bcdeEfFgGnosxX%])(?=})\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\.\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(,)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\d+)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\#)\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([-+ ])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"([<>=^])\"\n        },\n        {\n          \"name\": \"storage.type.format.python\",\n          \"match\": \"(\\\\w)\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/r.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/Ikuyadeu/vscode-R/blob/master/syntax/r.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/Ikuyadeu/vscode-R/commit/ff60e426f66503f3c9533c7a62a8fd3f9f6c53df\",\n  \"name\": \"r\",\n  \"scopeName\": \"source.r\",\n  \"patterns\": [\n    {\n      \"include\": \"#roxygen\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#storage-type\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#brackets\"\n    },\n    {\n      \"include\": \"#function-declarations\"\n    },\n    {\n      \"include\": \"#lambda-functions\"\n    },\n    {\n      \"include\": \"#builtin-functions\"\n    },\n    {\n      \"include\": \"#function-calls\"\n    },\n    {\n      \"include\": \"#general-variables\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"comment.line.pragma.r\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.pragma.name.r\"\n            }\n          },\n          \"match\": \"^(#pragma[ \\\\t]+mark)[ \\\\t](.*)\",\n          \"name\": \"comment.line.pragma-mark.r\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.r\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"#\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.r\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.number-sign.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(pi|letters|LETTERS|month\\\\.abb|month\\\\.name)\\\\b\",\n          \"name\": \"support.constant.misc.r\"\n        },\n        {\n          \"match\": \"\\\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\\\b\",\n          \"name\": \"constant.language.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b[0-9]+\\\\.?[0-9]*(?:(e|E)(\\\\+|-)?[0-9]+)?i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\.[0-9]+(?:(e|E)(\\\\+|-)?[0-9]+)?i\\\\b\",\n          \"name\": \"constant.numeric.imaginary.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+L\\\\b\",\n          \"name\": \"constant.numeric.integer.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b(?:[0-9]+\\\\.?[0-9]*)(?:(e|E)(\\\\+|-)?[0-9]+)?L\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\b0(x|X)[0-9a-fA-F]+\\\\b\",\n          \"name\": \"constant.numeric.float.hexadecimal.r\"\n        },\n        {\n          \"match\": \"\\\\b[0-9]+\\\\.?[0-9]*(?:(e|E)(\\\\+|-)?[0-9]+)?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.r\"\n        },\n        {\n          \"match\": \"\\\\.[0-9]+(?:(e|E)(\\\\+|-)?[0-9]+)?\\\\b\",\n          \"name\": \"constant.numeric.float.decimal.r\"\n        }\n      ]\n    },\n    \"general-variables\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            }\n          },\n          \"match\": \"([[:alpha:].][[:alnum:]._]*)\\\\s*(=)(?=[^=])\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            }\n          },\n          \"match\": \"(`[^`]+`)\\\\s*(=)(?=[^=])\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\d_][[:alnum:]._]+)\\\\b\",\n          \"name\": \"invalid.illegal.variable.other.r\"\n        },\n        {\n          \"match\": \"\\\\b([[:alnum:]_]+)(?=::)\",\n          \"name\": \"entity.namespace.r\"\n        },\n        {\n          \"match\": \"\\\\b([[:alnum:]._]+)\\\\b\",\n          \"name\": \"variable.other.r\"\n        },\n        {\n          \"match\": \"(`[^`]+`)\",\n          \"name\": \"variable.other.r\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(break|next|repeat|else|in)\\\\b\",\n          \"name\": \"keyword.control.r\"\n        },\n        {\n          \"match\": \"\\\\b(ifelse|if|for|return|switch|while|invisible)\\\\b(?=\\\\s*\\\\()\",\n          \"name\": \"keyword.control.r\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%\\\\/%|%%|%\\\\*%|%o%|%x%|\\\\^)\",\n          \"name\": \"keyword.operator.arithmetic.r\"\n        },\n        {\n          \"match\": \"(:=|<-|<<-|->|->>)\",\n          \"name\": \"keyword.operator.assignment.r\"\n        },\n        {\n          \"match\": \"(==|<=|>=|!=|<>|<|>|%in%)\",\n          \"name\": \"keyword.operator.comparison.r\"\n        },\n        {\n          \"match\": \"(!|&{1,2}|[|]{1,2})\",\n          \"name\": \"keyword.operator.logical.r\"\n        },\n        {\n          \"match\": \"(\\\\|>)\",\n          \"name\": \"keyword.operator.pipe.r\"\n        },\n        {\n          \"match\": \"(%between%|%chin%|%like%|%\\\\+%|%\\\\+replace%|%:%|%do%|%dopar%|%>%|%<>%|%T>%|%\\\\$%)\",\n          \"name\": \"keyword.operator.other.r\"\n        },\n        {\n          \"match\": \"(\\\\.\\\\.\\\\.|\\\\$|:|\\\\~|@)\",\n          \"name\": \"keyword.other.r\"\n        }\n      ]\n    },\n    \"storage-type\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw)\\\\b(?=\\\\s*\\\\()\",\n          \"name\": \"storage.type.r\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]\\\"(-*)\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\\\\1\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.raw.r\"\n        },\n        {\n          \"begin\": \"[rR]'(-*)\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\\\\1'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.raw.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.raw.r\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.r\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.double.r\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.r\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.r\"\n            }\n          },\n          \"name\": \"string.quoted.single.r\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[(?!\\\\[)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.single.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.single.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.double.begin.r\"\n            }\n          },\n          \"end\": \"\\\\]\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.brackets.double.end.r\"\n            }\n          },\n          \"contentName\": \"meta.item-access.arguments.r\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.braces.begin.r\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.braces.end.r\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declarations\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?:`[^`\\\\\\\\]*(?:\\\\\\\\.[^`\\\\\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\\\s*(<?<-|=(?!=))\\\\s*(function|\\\\\\\\)(?!\\\\w)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.r\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.r\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.r\"\n            }\n          },\n          \"name\": \"meta.function.r\",\n          \"patterns\": [\n            {\n              \"include\": \"#lambda-functions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lambda-functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(function)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.r\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.parens.begin.r\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.parens.end.r\"\n            }\n          },\n          \"name\": \"meta.function.r\",\n          \"contentName\": \"meta.function.parameters.r\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(?:[a-zA-Z._][\\\\w.]*|`[^`]+`)\",\n              \"name\": \"variable.other.r\"\n            },\n            {\n              \"begin\": \"(?==)\",\n              \"end\": \"(?=[,)])\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.r\"\n                }\n              ]\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.parameters.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-calls\": {\n      \"begin\": \"(?:\\\\b|(?=\\\\.))((?:[a-zA-Z._][\\\\w.]*|`[^`]+`))\\\\s*(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.function.r\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.parens.begin.r\"\n        }\n      },\n      \"contentName\": \"meta.function-call.arguments.r\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.parens.end.r\"\n        }\n      },\n      \"name\": \"meta.function-call.r\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.r\",\n          \"contentName\": \"meta.function-call.parameters.r\"\n        },\n        {\n          \"match\": \"(?:[a-zA-Z._][\\\\w.]*|`[^`]+`)(?=\\\\s[^=])\",\n          \"name\": \"variable.other.r\"\n        },\n        {\n          \"begin\": \"(?==)\",\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"include\": \"source.r\"\n            }\n          ]\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.parameters.r\"\n        },\n        {\n          \"include\": \"source.r\"\n        }\n      ]\n    },\n    \"roxygen\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#')\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.r\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.roxygen.r\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.r\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.r\"\n                }\n              },\n              \"match\": \"(@param)\\\\s*((?:[a-zA-Z._][\\\\w.]*|`[^`]+`))\"\n            },\n            {\n              \"match\": \"@[a-zA-Z0-9]+\",\n              \"name\": \"keyword.other.r\"\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(abbreviate|abs|acos|acosh|addNA|addTaskCallback|agrep|agrepl|alist|all|all\\\\.equal|all\\\\.equal.character|all\\\\.equal.default|all\\\\.equal.environment|all\\\\.equal.envRefClass|all\\\\.equal.factor|all\\\\.equal.formula|all\\\\.equal.language|all\\\\.equal.list|all\\\\.equal.numeric|all\\\\.equal.POSIXt|all\\\\.equal.raw|all\\\\.names|all\\\\.vars|any|anyDuplicated|anyDuplicated\\\\.array|anyDuplicated\\\\.data.frame|anyDuplicated\\\\.default|anyDuplicated\\\\.matrix|anyNA|anyNA\\\\.numeric_version|anyNA\\\\.POSIXlt|aperm|aperm\\\\.default|aperm\\\\.table|append|apply|Arg|args|array|arrayInd|as\\\\.array|as\\\\.array.default|as\\\\.call|as\\\\.character|as\\\\.character.condition|as\\\\.character.Date|as\\\\.character.default|as\\\\.character.error|as\\\\.character.factor|as\\\\.character.hexmode|as\\\\.character.numeric_version|as\\\\.character.octmode|as\\\\.character.POSIXt|as\\\\.character.srcref|as\\\\.complex|as\\\\.data.frame|as\\\\.data.frame.array|as\\\\.data.frame.AsIs|as\\\\.data.frame.character|as\\\\.data.frame.complex|as\\\\.data.frame.data.frame|as\\\\.data.frame.Date|as\\\\.data.frame.default|as\\\\.data.frame.difftime|as\\\\.data.frame.factor|as\\\\.data.frame.integer|as\\\\.data.frame.list|as\\\\.data.frame.logical|as\\\\.data.frame.matrix|as\\\\.data.frame.model.matrix|as\\\\.data.frame.noquote|as\\\\.data.frame.numeric|as\\\\.data.frame.numeric_version|as\\\\.data.frame.ordered|as\\\\.data.frame.POSIXct|as\\\\.data.frame.POSIXlt|as\\\\.data.frame.raw|as\\\\.data.frame.table|as\\\\.data.frame.ts|as\\\\.data.frame.vector|as\\\\.Date|as\\\\.Date.character|as\\\\.Date.date|as\\\\.Date.dates|as\\\\.Date.default|as\\\\.Date.factor|as\\\\.Date.numeric|as\\\\.Date.POSIXct|as\\\\.Date.POSIXlt|as\\\\.difftime|as\\\\.double|as\\\\.double.difftime|as\\\\.double.POSIXlt|as\\\\.environment|as\\\\.expression|as\\\\.expression.default|as\\\\.factor|as\\\\.function|as\\\\.function.default|as\\\\.hexmode|as\\\\.integer|as\\\\.list|as\\\\.list.data.frame|as\\\\.list.Date|as\\\\.list.default|as\\\\.list.environment|as\\\\.list.factor|as\\\\.list.function|as\\\\.list.numeric_version|as\\\\.list.POSIXct|as\\\\.logical|as\\\\.logical.factor|as\\\\.matrix|as\\\\.matrix.data.frame|as\\\\.matrix.default|as\\\\.matrix.noquote|as\\\\.matrix.POSIXlt|as\\\\.name|as\\\\.null|as\\\\.null.default|as\\\\.numeric|as\\\\.numeric_version|as\\\\.octmode|as\\\\.ordered|as\\\\.package_version|as\\\\.pairlist|as\\\\.POSIXct|as\\\\.POSIXct.date|as\\\\.POSIXct.Date|as\\\\.POSIXct.dates|as\\\\.POSIXct.default|as\\\\.POSIXct.numeric|as\\\\.POSIXct.POSIXlt|as\\\\.POSIXlt|as\\\\.POSIXlt.character|as\\\\.POSIXlt.date|as\\\\.POSIXlt.Date|as\\\\.POSIXlt.dates|as\\\\.POSIXlt.default|as\\\\.POSIXlt.factor|as\\\\.POSIXlt.numeric|as\\\\.POSIXlt.POSIXct|as\\\\.qr|as\\\\.raw|as\\\\.single|as\\\\.single.default|as\\\\.symbol|as\\\\.table|as\\\\.table.default|as\\\\.vector|as\\\\.vector.factor|asin|asinh|asNamespace|asS3|asS4|assign|atan|atan2|atanh|attach|attachNamespace|attr|attr\\\\.all.equal|attributes|autoload|autoloader|backsolve|baseenv|basename|besselI|besselJ|besselK|besselY|beta|bindingIsActive|bindingIsLocked|bindtextdomain|bitwAnd|bitwNot|bitwOr|bitwShiftL|bitwShiftR|bitwXor|body|bquote|break|browser|browserCondition|browserSetDebug|browserText|builtins|by|by\\\\.data.frame|by\\\\.default|bzfile|c|c\\\\.Date|c\\\\.difftime|c\\\\.noquote|c\\\\.numeric_version|c\\\\.POSIXct|c\\\\.POSIXlt|c\\\\.warnings|call|callCC|capabilities|casefold|cat|cbind|cbind\\\\.data.frame|ceiling|char\\\\.expand|character|charmatch|charToRaw|chartr|check_tzones|chkDots|chol|chol\\\\.default|chol2inv|choose|class|clearPushBack|close|close\\\\.connection|close\\\\.srcfile|close\\\\.srcfilealias|closeAllConnections|col|colMeans|colnames|colSums|commandArgs|comment|complex|computeRestarts|conditionCall|conditionCall\\\\.condition|conditionMessage|conditionMessage\\\\.condition|conflicts|Conj|contributors|cos|cosh|cospi|crossprod|Cstack_info|cummax|cummin|cumprod|cumsum|curlGetHeaders|cut|cut\\\\.Date|cut\\\\.default|cut\\\\.POSIXt|data\\\\.class|data\\\\.frame|data\\\\.matrix|date|debug|debuggingState|debugonce|default\\\\.stringsAsFactors|delayedAssign|deparse|det|detach|determinant|determinant\\\\.matrix|dget|diag|diff|diff\\\\.Date|diff\\\\.default|diff\\\\.difftime|diff\\\\.POSIXt|difftime|digamma|dim|dim\\\\.data.frame|dimnames|dimnames\\\\.data.frame|dir|dir\\\\.create|dir\\\\.exists|dirname|do\\\\.call|dontCheck|double|dput|dQuote|drop|droplevels|droplevels\\\\.data.frame|droplevels\\\\.factor|dump|duplicated|duplicated\\\\.array|duplicated\\\\.data.frame|duplicated\\\\.default|duplicated\\\\.matrix|duplicated\\\\.numeric_version|duplicated\\\\.POSIXlt|duplicated\\\\.warnings|dyn\\\\.load|dyn\\\\.unload|dynGet|eapply|eigen|emptyenv|enc2native|enc2utf8|encodeString|Encoding|endsWith|enquote|env\\\\.profile|environment|environmentIsLocked|environmentName|eval|eval\\\\.parent|evalq|exists|exp|expand\\\\.grid|expm1|expression|extSoftVersion|factor|factorial|fifo|file|file\\\\.access|file\\\\.append|file\\\\.choose|file\\\\.copy|file\\\\.create|file\\\\.exists|file\\\\.info|file\\\\.link|file\\\\.mode|file\\\\.mtime|file\\\\.path|file\\\\.remove|file\\\\.rename|file\\\\.show|file\\\\.size|file\\\\.symlink|Filter|Find|find\\\\.package|findInterval|findPackageEnv|findRestart|floor|flush|flush\\\\.connection|for|force|forceAndCall|formals|format|format\\\\.AsIs|format\\\\.data.frame|format\\\\.Date|format\\\\.default|format\\\\.difftime|format\\\\.factor|format\\\\.hexmode|format\\\\.info|format\\\\.libraryIQR|format\\\\.numeric_version|format\\\\.octmode|format\\\\.packageInfo|format\\\\.POSIXct|format\\\\.POSIXlt|format\\\\.pval|format\\\\.summaryDefault|formatC|formatDL|forwardsolve|function|gamma|gc|gc\\\\.time|gcinfo|gctorture|gctorture2|get|get0|getAllConnections|getCallingDLL|getCallingDLLe|getConnection|getDLLRegisteredRoutines|getDLLRegisteredRoutines\\\\.character|getDLLRegisteredRoutines\\\\.DLLInfo|getElement|geterrmessage|getExportedValue|getHook|getLoadedDLLs|getNamespace|getNamespaceExports|getNamespaceImports|getNamespaceInfo|getNamespaceName|getNamespaceUsers|getNamespaceVersion|getNativeSymbolInfo|getOption|getRversion|getSrcLines|getTaskCallbackNames|gettext|gettextf|getwd|gl|globalenv|gregexpr|grep|grepl|grepRaw|grouping|gsub|gzcon|gzfile|I|iconv|iconvlist|icuGetCollate|icuSetCollate|identical|identity|if|ifelse|Im|importIntoEnv|inherits|integer|interaction|interactive|intersect|intToBits|intToUtf8|inverse\\\\.rle|invisible|invokeRestart|invokeRestartInteractively|is\\\\.array|is\\\\.atomic|is\\\\.call|is\\\\.character|is\\\\.complex|is\\\\.data.frame|is\\\\.double|is\\\\.element|is\\\\.environment|is\\\\.expression|is\\\\.factor|is\\\\.finite|is\\\\.function|is\\\\.infinite|is\\\\.integer|is\\\\.language|is\\\\.list|is\\\\.loaded|is\\\\.logical|is\\\\.matrix|is\\\\.na|is\\\\.na.data.frame|is\\\\.na.numeric_version|is\\\\.na.POSIXlt|is\\\\.name|is\\\\.nan|is\\\\.null|is\\\\.numeric|is\\\\.numeric_version|is\\\\.numeric.Date|is\\\\.numeric.difftime|is\\\\.numeric.POSIXt|is\\\\.object|is\\\\.ordered|is\\\\.package_version|is\\\\.pairlist|is\\\\.primitive|is\\\\.qr|is\\\\.R|is\\\\.raw|is\\\\.recursive|is\\\\.single|is\\\\.symbol|is\\\\.table|is\\\\.unsorted|is\\\\.vector|isatty|isBaseNamespace|isdebugged|isIncomplete|isNamespace|isNamespaceLoaded|ISOdate|ISOdatetime|isOpen|isRestart|isS4|isSeekable|isSymmetric|isSymmetric\\\\.matrix|isTRUE|jitter|julian|julian\\\\.Date|julian\\\\.POSIXt|kappa|kappa\\\\.default|kappa\\\\.lm|kappa\\\\.qr|kronecker|l10n_info|La_library|La_version|La\\\\.svd|labels|labels\\\\.default|lapply|lazyLoad|lazyLoadDBexec|lazyLoadDBfetch|lbeta|lchoose|length|length\\\\.POSIXlt|lengths|levels|levels\\\\.default|lfactorial|lgamma|libcurlVersion|library|library\\\\.dynam|library\\\\.dynam.unload|licence|license|list|list\\\\.dirs|list\\\\.files|list2env|load|loadedNamespaces|loadingNamespaceInfo|loadNamespace|local|lockBinding|lockEnvironment|log|log10|log1p|log2|logb|logical|lower\\\\.tri|ls|make\\\\.names|make\\\\.unique|makeActiveBinding|Map|mapply|margin\\\\.table|mat\\\\.or.vec|match|match\\\\.arg|match\\\\.call|match\\\\.fun|Math\\\\.data.frame|Math\\\\.Date|Math\\\\.difftime|Math\\\\.factor|Math\\\\.POSIXt|matrix|max|max\\\\.col|mean|mean\\\\.Date|mean\\\\.default|mean\\\\.difftime|mean\\\\.POSIXct|mean\\\\.POSIXlt|mem\\\\.limits|memCompress|memDecompress|memory\\\\.profile|merge|merge\\\\.data.frame|merge\\\\.default|message|mget|min|missing|Mod|mode|months|months\\\\.Date|months\\\\.POSIXt|names|names\\\\.POSIXlt|namespaceExport|namespaceImport|namespaceImportClasses|namespaceImportFrom|namespaceImportMethods|nargs|nchar|ncol|NCOL|Negate|new\\\\.env|next|NextMethod|ngettext|nlevels|noquote|norm|normalizePath|nrow|NROW|numeric|numeric_version|nzchar|objects|oldClass|OlsonNames|on\\\\.exit|open|open\\\\.connection|open\\\\.srcfile|open\\\\.srcfilealias|open\\\\.srcfilecopy|Ops\\\\.data.frame|Ops\\\\.Date|Ops\\\\.difftime|Ops\\\\.factor|Ops\\\\.numeric_version|Ops\\\\.ordered|Ops\\\\.POSIXt|options|order|ordered|outer|package_version|packageEvent|packageHasNamespace|packageStartupMessage|packBits|pairlist|parent\\\\.env|parent\\\\.frame|parse|parseNamespaceFile|paste|paste0|path\\\\.expand|path\\\\.package|pcre_config|pipe|pmatch|pmax|pmax\\\\.int|pmin|pmin\\\\.int|polyroot|pos\\\\.to.env|Position|pretty|pretty\\\\.default|prettyNum|print|print\\\\.AsIs|print\\\\.by|print\\\\.condition|print\\\\.connection|print\\\\.data.frame|print\\\\.Date|print\\\\.default|print\\\\.difftime|print\\\\.Dlist|print\\\\.DLLInfo|print\\\\.DLLInfoList|print\\\\.DLLRegisteredRoutines|print\\\\.eigen|print\\\\.factor|print\\\\.function|print\\\\.hexmode|print\\\\.libraryIQR|print\\\\.listof|print\\\\.NativeRoutineList|print\\\\.noquote|print\\\\.numeric_version|print\\\\.octmode|print\\\\.packageInfo|print\\\\.POSIXct|print\\\\.POSIXlt|print\\\\.proc_time|print\\\\.restart|print\\\\.rle|print\\\\.simple.list|print\\\\.srcfile|print\\\\.srcref|print\\\\.summary.table|print\\\\.summaryDefault|print\\\\.table|print\\\\.warnings|prmatrix|proc\\\\.time|prod|prop\\\\.table|provideDimnames|psigamma|pushBack|pushBackLength|q|qr|qr\\\\.coef|qr\\\\.default|qr\\\\.fitted|qr\\\\.Q|qr\\\\.qty|qr\\\\.qy|qr\\\\.R|qr\\\\.resid|qr\\\\.solve|qr\\\\.X|quarters|quarters\\\\.Date|quarters\\\\.POSIXt|quit|quote|R_system_version|R\\\\.home|R\\\\.Version|range|range\\\\.default|rank|rapply|raw|rawConnection|rawConnectionValue|rawShift|rawToBits|rawToChar|rbind|rbind\\\\.data.frame|rcond|Re|read\\\\.dcf|readBin|readChar|readline|readLines|readRDS|readRenviron|Recall|Reduce|reg\\\\.finalizer|regexec|regexpr|registerS3method|registerS3methods|regmatches|remove|removeTaskCallback|rep|rep_len|rep\\\\.Date|rep\\\\.factor|rep\\\\.int|rep\\\\.numeric_version|rep\\\\.POSIXct|rep\\\\.POSIXlt|repeat|replace|replicate|require|requireNamespace|restartDescription|restartFormals|retracemem|return|returnValue|rev|rev\\\\.default|rle|rm|RNGkind|RNGversion|round|round\\\\.Date|round\\\\.POSIXt|row|row\\\\.names|row\\\\.names.data.frame|row\\\\.names.default|rowMeans|rownames|rowsum|rowsum\\\\.data.frame|rowsum\\\\.default|rowSums|sample|sample\\\\.int|sapply|save|save\\\\.image|saveRDS|scale|scale\\\\.default|scan|search|searchpaths|seek|seek\\\\.connection|seq|seq_along|seq_len|seq\\\\.Date|seq\\\\.default|seq\\\\.int|seq\\\\.POSIXt|sequence|serialize|set\\\\.seed|setdiff|setequal|setHook|setNamespaceInfo|setSessionTimeLimit|setTimeLimit|setwd|showConnections|shQuote|sign|signalCondition|signif|simpleCondition|simpleError|simpleMessage|simpleWarning|simplify2array|sin|single|sinh|sink|sink\\\\.number|sinpi|slice\\\\.index|socketConnection|socketSelect|solve|solve\\\\.default|solve\\\\.qr|sort|sort\\\\.default|sort\\\\.int|sort\\\\.list|sort\\\\.POSIXlt|source|split|split\\\\.data.frame|split\\\\.Date|split\\\\.default|split\\\\.POSIXct|sprintf|sqrt|sQuote|srcfile|srcfilealias|srcfilecopy|srcref|standardGeneric|startsWith|stderr|stdin|stdout|stop|stopifnot|storage\\\\.mode|strftime|strptime|strrep|strsplit|strtoi|strtrim|structure|strwrap|sub|subset|subset\\\\.data.frame|subset\\\\.default|subset\\\\.matrix|substitute|substr|substring|sum|summary|summary\\\\.connection|summary\\\\.data.frame|Summary\\\\.data.frame|summary\\\\.Date|Summary\\\\.Date|summary\\\\.default|Summary\\\\.difftime|summary\\\\.factor|Summary\\\\.factor|summary\\\\.matrix|Summary\\\\.numeric_version|Summary\\\\.ordered|summary\\\\.POSIXct|Summary\\\\.POSIXct|summary\\\\.POSIXlt|Summary\\\\.POSIXlt|summary\\\\.proc_time|summary\\\\.srcfile|summary\\\\.srcref|summary\\\\.table|suppressMessages|suppressPackageStartupMessages|suppressWarnings|svd|sweep|switch|sys\\\\.call|sys\\\\.calls|Sys\\\\.chmod|Sys\\\\.Date|sys\\\\.frame|sys\\\\.frames|sys\\\\.function|Sys\\\\.getenv|Sys\\\\.getlocale|Sys\\\\.getpid|Sys\\\\.glob|Sys\\\\.info|sys\\\\.load.image|Sys\\\\.localeconv|sys\\\\.nframe|sys\\\\.on.exit|sys\\\\.parent|sys\\\\.parents|Sys\\\\.readlink|sys\\\\.save.image|Sys\\\\.setenv|Sys\\\\.setFileTime|Sys\\\\.setlocale|Sys\\\\.sleep|sys\\\\.source|sys\\\\.status|Sys\\\\.time|Sys\\\\.timezone|Sys\\\\.umask|Sys\\\\.unsetenv|Sys\\\\.which|system|system\\\\.file|system\\\\.time|system2|t|t\\\\.data.frame|t\\\\.default|table|tabulate|tan|tanh|tanpi|tapply|taskCallbackManager|tcrossprod|tempdir|tempfile|testPlatformEquivalence|textConnection|textConnectionValue|tolower|topenv|toString|toString\\\\.default|toupper|trace|traceback|tracemem|tracingState|transform|transform\\\\.data.frame|transform\\\\.default|trigamma|trimws|trunc|trunc\\\\.Date|trunc\\\\.POSIXt|truncate|truncate\\\\.connection|try|tryCatch|typeof|unclass|undebug|union|unique|unique\\\\.array|unique\\\\.data.frame|unique\\\\.default|unique\\\\.matrix|unique\\\\.numeric_version|unique\\\\.POSIXlt|unique\\\\.warnings|units|units\\\\.difftime|unix\\\\.time|unlink|unlist|unloadNamespace|unlockBinding|unname|unserialize|unsplit|untrace|untracemem|unz|upper\\\\.tri|url|UseMethod|utf8ToInt|validEnc|validUTF8|vapply|vector|Vectorize|warning|warnings|weekdays|weekdays\\\\.Date|weekdays\\\\.POSIXt|which|which\\\\.max|which\\\\.min|while|with|with\\\\.default|withAutoprint|withCallingHandlers|within|within\\\\.data.frame|within\\\\.list|withRestarts|withVisible|write|write\\\\.dcf|writeBin|writeChar|writeLines|xor|xor\\\\.hexmode|xor\\\\.octmode|xpdrows\\\\.data.frame|xtfrm|xtfrm\\\\.AsIs|xtfrm\\\\.Date|xtfrm\\\\.default|xtfrm\\\\.difftime|xtfrm\\\\.factor|xtfrm\\\\.numeric_version|xtfrm\\\\.POSIXct|xtfrm\\\\.POSIXlt|xtfrm\\\\.Surv|xzfile|zapsmall)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(abline|arrows|assocplot|axis|Axis|axis\\\\.Date|Axis\\\\.Date|Axis\\\\.default|axis\\\\.POSIXct|Axis\\\\.POSIXt|Axis\\\\.table|axTicks|barplot|barplot\\\\.default|box|boxplot|boxplot\\\\.default|boxplot\\\\.formula|boxplot\\\\.matrix|bxp|cdplot|cdplot\\\\.default|cdplot\\\\.formula|clip|close\\\\.screen|co\\\\.intervals|contour|contour\\\\.default|coplot|curve|dotchart|erase\\\\.screen|filled\\\\.contour|fourfoldplot|frame|grconvertX|grconvertY|grid|hist|hist\\\\.Date|hist\\\\.default|hist\\\\.POSIXt|identify|identify\\\\.default|image|image\\\\.default|layout|layout\\\\.show|lcm|legend|lines|lines\\\\.default|lines\\\\.formula|lines\\\\.histogram|lines\\\\.table|locator|matlines|matplot|matpoints|mosaicplot|mosaicplot\\\\.default|mosaicplot\\\\.formula|mtext|pairs|pairs\\\\.default|pairs\\\\.formula|panel\\\\.smooth|par|persp|persp\\\\.default|pie|piechart|plot|plot\\\\.data.frame|plot\\\\.default|plot\\\\.design|plot\\\\.factor|plot\\\\.formula|plot\\\\.function|plot\\\\.histogram|plot\\\\.new|plot\\\\.raster|plot\\\\.table|plot\\\\.window|plot\\\\.xy|plotHclust|points|points\\\\.default|points\\\\.formula|points\\\\.table|polygon|polypath|rasterImage|rect|rug|screen|segments|smoothScatter|spineplot|spineplot\\\\.default|spineplot\\\\.formula|split\\\\.screen|stars|stem|strheight|stripchart|stripchart\\\\.default|stripchart\\\\.formula|strwidth|sunflowerplot|sunflowerplot\\\\.default|sunflowerplot\\\\.formula|symbols|text|text\\\\.default|text\\\\.formula|title|xinch|xspline|xyinch|yinch)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(adjustcolor|anyNA\\\\.raster|as\\\\.graphicsAnnot|as\\\\.matrix.raster|as\\\\.raster|as\\\\.raster.array|as\\\\.raster.character|as\\\\.raster.logical|as\\\\.raster.matrix|as\\\\.raster.numeric|as\\\\.raster.raster|as\\\\.raster.raw|axisTicks|bitmap|bmp|boxplot\\\\.stats|c2to3|cairo_pdf|cairo_ps|cairoVersion|check_for_XQuartz|check_gs_type|check\\\\.options|checkFont|checkFont\\\\.CIDFont|checkFont\\\\.default|checkFont\\\\.Type1Font|checkFontInUse|checkIntFormat|checkQuartzFont|checkX11Font|chromaticAdaptation|chull|CIDFont|cm|cm\\\\.colors|col2rgb|colorConverter|colorRamp|colorRampPalette|colors|colours|contourLines|convertColor|densCols|dev\\\\.capabilities|dev\\\\.capture|dev\\\\.control|dev\\\\.copy|dev\\\\.copy2eps|dev\\\\.copy2pdf|dev\\\\.cur|dev\\\\.displaylist|dev\\\\.flush|dev\\\\.hold|dev\\\\.interactive|dev\\\\.list|dev\\\\.new|dev\\\\.next|dev\\\\.off|dev\\\\.prev|dev\\\\.print|dev\\\\.set|dev\\\\.size|dev2bitmap|devAskNewPage|deviceIsInteractive|embedFonts|extendrange|getGraphicsEvent|getGraphicsEventEnv|graphics\\\\.off|gray|gray\\\\.colors|grey|grey\\\\.colors|grSoftVersion|guessEncoding|hcl|heat\\\\.colors|hsv|initPSandPDFfonts|is\\\\.na.raster|is\\\\.raster|isPDF|jpeg|make\\\\.rgb|matchEncoding|matchEncoding\\\\.CIDFont|matchEncoding\\\\.Type1Font|matchFont|n2mfrow|nclass\\\\.FD|nclass\\\\.scott|nclass\\\\.Sturges|Ops\\\\.raster|palette|pdf|pdf\\\\.options|pdfFonts|pictex|png|postscript|postscriptFonts|prettyDate|print\\\\.colorConverter|print\\\\.raster|print\\\\.recordedplot|print\\\\.RGBcolorConverter|printFont|printFont\\\\.CIDFont|printFont\\\\.Type1Font|printFonts|ps\\\\.options|quartz|quartz\\\\.options|quartz\\\\.save|quartzFont|quartzFonts|rainbow|recordGraphics|recordPalette|recordPlot|replayPlot|restoreRecordedPlot|rgb|rgb2hsv|savePlot|seqDtime|setEPS|setFonts|setGraphicsEventEnv|setGraphicsEventHandlers|setPS|setQuartzFonts|setX11Fonts|svg|terrain\\\\.colors|tiff|topo\\\\.colors|trans3d|trunc_POSIXt|Type1Font|x11|X11|X11\\\\.options|X11Font|X11FontError|X11Fonts|xfig|xy\\\\.coords|xyTable|xyz\\\\.coords)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(addNextMethod|allGenerics|allNames|Arith|as|asMethodDefinition|assignClassDef|assignMethodsMetaData|balanceMethodsList|bind_activation|cacheGenericsMetaData|cacheMetaData|cacheMethod|cacheOnAssign|callGeneric|callNextMethod|canCoerce|cbind|cbind2|checkAtAssignment|checkSlotAssignment|classesToAM|classGeneratorFunction|classLabel|classMetaName|className|coerce|Compare|completeClassDefinition|completeExtends|completeSubclasses|Complex|conformMethod|defaultDumpName|defaultPrototype|dispatchIsInternal|doPrimitiveMethod|dumpMethod|dumpMethods|el|elNamed|empty\\\\.dump|emptyMethodsList|envRefInferField|envRefSetField|evalOnLoad|evalqOnLoad|evalSource|existsFunction|existsMethod|extends|externalRefMethod|finalDefaultMethod|findClass|findFunction|findMethod|findMethods|findMethodSignatures|findUnique|fixPre1\\\\.8|formalArgs|fromNextMethod|functionBody|generic\\\\.skeleton|genericForBasic|getAccess|getAllMethods|getAllSuperClasses|getClass|getClassDef|getClasses|getClassName|getClassPackage|getDataPart|getExtends|getFunction|getGeneric|getGenericFromCall|getGenerics|getGroup|getGroupMembers|getLoadActions|getMethod|getMethods|getMethodsAndAccessors|getMethodsForDispatch|getMethodsMetaData|getPackageName|getProperties|getPrototype|getRefClass|getRefSuperClasses|getSlots|getSubclasses|getValidity|getVirtual|hasArg|hasLoadAction|hasMethod|hasMethods|implicitGeneric|inBasicFuns|inferProperties|inheritedSlotNames|inheritedSubMethodLists|initFieldArgs|initialize|initMethodDispatch|initRefFields|insertClassMethods|insertMethod|insertMethodInEmptyList|insertSource|installClassMethod|is|isBaseFun|isClass|isClassDef|isClassUnion|isGeneric|isGrammarSymbol|isGroup|isMixin|isRematched|isS3Generic|isSealedClass|isSealedMethod|isVirtualClass|isXS3Class|kronecker|languageEl|linearizeMlist|listFromMethods|listFromMlist|loadMethod|Logic|makeClassMethod|makeClassRepresentation|makeEnvRefMethods|makeExtends|makeGeneric|makeMethodsList|makePrototypeFromClassDef|makeStandardGeneric|matchDefaults|matchSignature|Math|Math2|mergeMethods|metaNameUndo|method\\\\.skeleton|MethodAddCoerce|methodSignatureMatrix|MethodsList|MethodsListSelect|methodsPackageMetaName|missingArg|mlistMetaName|multipleClasses|new|newBasic|newClassRepresentation|newEmptyObject|Ops|outerLabels|packageSlot|possibleExtends|print\\\\.MethodsList|printClassRepresentation|printPropertiesList|prohibitGeneric|promptClass|promptMethods|prototype|Quote|rbind|rbind2|reconcilePropertiesAndPrototype|refClassFields|refClassInformation|refClassMethods|refClassPrompt|refObjectClass|registerImplicitGenerics|rematchDefinition|removeClass|removeGeneric|removeMethod|removeMethods|removeMethodsObject|representation|requireMethods|resetClass|resetGeneric|S3Class|S3forS4Methods|S3Part|sealClass|seemsS4Object|selectMethod|selectSuperClasses|setAs|setCacheOnAssign|setClass|setClassUnion|setDataPart|setGeneric|setGenericImplicit|setGroupGeneric|setIs|setLoadAction|setLoadActions|setMethod|setNames|setOldClass|setPackageName|setPrimitiveMethods|setRefClass|setReplaceMethod|setValidity|show|showClass|showClassMethod|showDefault|showExtends|showExtraSlots|showMethods|showMlist|showRefClassDef|signature|SignatureMethod|sigToEnv|slot|slotNames|slotsFromS3|substituteDirect|substituteFunctionArgs|Summary|superClassDepth|superClassMethodName|tableNames|testInheritedMethods|testVirtual|traceOff|traceOn|tryNew|unRematchDefinition|useMTable|validObject|validSlotNames)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(acf|acf2AR|add\\\\.name|add1|add1\\\\.default|add1\\\\.glm|add1\\\\.lm|add1\\\\.mlm|addmargins|aggregate|aggregate\\\\.data.frame|aggregate\\\\.default|aggregate\\\\.formula|aggregate\\\\.ts|AIC|AIC\\\\.default|AIC\\\\.logLik|alias|alias\\\\.formula|alias\\\\.lm|anova|anova\\\\.glm|anova\\\\.glmlist|anova\\\\.lm|anova\\\\.lmlist|anova\\\\.loess|anova\\\\.mlm|anova\\\\.mlmlist|anova\\\\.nls|anovalist\\\\.nls|ansari\\\\.test|ansari\\\\.test.default|ansari\\\\.test.formula|aov|approx|approxfun|ar|ar\\\\.burg|ar\\\\.burg.default|ar\\\\.burg.mts|ar\\\\.mle|ar\\\\.ols|ar\\\\.yw|ar\\\\.yw.default|ar\\\\.yw.mts|arima|arima\\\\.sim|arima0|arima0\\\\.diag|ARMAacf|ARMAtoMA|as\\\\.data.frame.aovproj|as\\\\.data.frame.ftable|as\\\\.data.frame.logLik|as\\\\.dendrogram|as\\\\.dendrogram.dendrogram|as\\\\.dendrogram.hclust|as\\\\.dist|as\\\\.dist.default|as\\\\.formula|as\\\\.hclust|as\\\\.hclust.default|as\\\\.hclust.dendrogram|as\\\\.hclust.twins|as\\\\.matrix.dist|as\\\\.matrix.ftable|as\\\\.stepfun|as\\\\.stepfun.default|as\\\\.stepfun.isoreg|as\\\\.table.ftable|as\\\\.ts|as\\\\.ts.default|asOneSidedFormula|ave|bandwidth\\\\.kernel|bartlett\\\\.test|bartlett\\\\.test.default|bartlett\\\\.test.formula|BIC|BIC\\\\.default|BIC\\\\.logLik|binom\\\\.test|binomial|biplot|biplot\\\\.default|biplot\\\\.prcomp|biplot\\\\.princomp|Box\\\\.test|bw_pair_cnts|bw\\\\.bcv|bw\\\\.nrd|bw\\\\.nrd0|bw\\\\.SJ|bw\\\\.ucv|C|cancor|case\\\\.names|case\\\\.names.default|case\\\\.names.lm|cbind\\\\.ts|ccf|check_exact|chisq\\\\.test|cmdscale|coef|coef\\\\.aov|coef\\\\.Arima|coef\\\\.default|coef\\\\.listof|coef\\\\.maov|coef\\\\.nls|coefficients|complete\\\\.cases|confint|confint\\\\.default|confint\\\\.glm|confint\\\\.lm|confint\\\\.nls|constrOptim|contr\\\\.helmert|contr\\\\.poly|contr\\\\.SAS|contr\\\\.sum|contr\\\\.treatment|contrasts|convolve|cooks\\\\.distance|cooks\\\\.distance.glm|cooks\\\\.distance.lm|cophenetic|cophenetic\\\\.default|cophenetic\\\\.dendrogram|cor|cor\\\\.test|cor\\\\.test.default|cor\\\\.test.formula|cov|cov\\\\.wt|cov2cor|covratio|cpgram|cut\\\\.dendrogram|cutree|cycle|cycle\\\\.default|cycle\\\\.ts|D|dbeta|dbinom|dcauchy|dchisq|decompose|delete\\\\.response|deltat|deltat\\\\.default|dendrapply|density|density\\\\.default|deriv|deriv\\\\.default|deriv\\\\.formula|deriv3|deriv3\\\\.default|deriv3\\\\.formula|deviance|deviance\\\\.default|deviance\\\\.glm|deviance\\\\.lm|deviance\\\\.mlm|deviance\\\\.nls|dexp|df|df\\\\.kernel|df\\\\.residual|df\\\\.residual.default|df\\\\.residual.nls|dfbeta|dfbeta\\\\.lm|dfbetas|dfbetas\\\\.lm|dffits|dgamma|dgeom|dhyper|diff\\\\.ts|diffinv|diffinv\\\\.default|diffinv\\\\.ts|diffinv\\\\.vector|dist|dlnorm|dlogis|dmultinom|dnbinom|dnorm|dpois|drop\\\\.name|drop\\\\.terms|drop1|drop1\\\\.default|drop1\\\\.glm|drop1\\\\.lm|drop1\\\\.mlm|dsignrank|dt|dummy\\\\.coef|dummy\\\\.coef.aovlist|dummy\\\\.coef.lm|dunif|dweibull|dwilcox|ecdf|eff\\\\.aovlist|effects|effects\\\\.glm|effects\\\\.lm|embed|end|end\\\\.default|estVar|estVar\\\\.mlm|estVar\\\\.SSD|expand\\\\.model.frame|extractAIC|extractAIC\\\\.aov|extractAIC\\\\.coxph|extractAIC\\\\.glm|extractAIC\\\\.lm|extractAIC\\\\.negbin|extractAIC\\\\.survreg|factanal|factanal\\\\.fit.mle|factor\\\\.name|family|family\\\\.glm|family\\\\.lm|fft|filter|fisher\\\\.test|fitted|fitted\\\\.default|fitted\\\\.isoreg|fitted\\\\.kmeans|fitted\\\\.nls|fitted\\\\.smooth.spline|fitted\\\\.values|fivenum|fligner\\\\.test|fligner\\\\.test.default|fligner\\\\.test.formula|format_perc|format\\\\.dist|format\\\\.ftable|format\\\\.perc|formula|formula\\\\.character|formula\\\\.data.frame|formula\\\\.default|formula\\\\.formula|formula\\\\.glm|formula\\\\.lm|formula\\\\.nls|formula\\\\.terms|frequency|frequency\\\\.default|friedman\\\\.test|friedman\\\\.test.default|friedman\\\\.test.formula|ftable|ftable\\\\.default|ftable\\\\.formula|Gamma|gaussian|get_all_vars|getCall|getCall\\\\.default|getInitial|getInitial\\\\.default|getInitial\\\\.formula|getInitial\\\\.selfStart|glm|glm\\\\.control|glm\\\\.fit|hasTsp|hat|hatvalues|hatvalues\\\\.lm|hatvalues\\\\.smooth.spline|hclust|heatmap|HL|HoltWinters|hyman_filter|identify\\\\.hclust|influence|influence\\\\.glm|influence\\\\.lm|influence\\\\.measures|integrate|interaction\\\\.plot|inverse\\\\.gaussian|IQR|is\\\\.empty.model|is\\\\.leaf|is\\\\.mts|is\\\\.stepfun|is\\\\.ts|is\\\\.tskernel|isoreg|KalmanForecast|KalmanLike|KalmanRun|KalmanSmooth|kernapply|kernapply\\\\.default|kernapply\\\\.ts|kernapply\\\\.tskernel|kernapply\\\\.vector|kernel|kmeans|knots|knots\\\\.stepfun|kruskal\\\\.test|kruskal\\\\.test.default|kruskal\\\\.test.formula|ks\\\\.test|ksmooth|labels\\\\.dendrogram|labels\\\\.dist|labels\\\\.lm|labels\\\\.terms|lag|lag\\\\.default|lag\\\\.plot|line|lines\\\\.isoreg|lines\\\\.stepfun|lines\\\\.ts|lm|lm\\\\.fit|lm\\\\.influence|lm\\\\.wfit|loadings|loess|loess\\\\.control|loess\\\\.smooth|logLik|logLik\\\\.Arima|logLik\\\\.glm|logLik\\\\.lm|logLik\\\\.logLik|logLik\\\\.nls|loglin|lowess|ls\\\\.diag|ls\\\\.print|lsfit|mad|mahalanobis|make\\\\.link|make\\\\.tables.aovproj|make\\\\.tables.aovprojlist|makeARIMA|makepredictcall|makepredictcall\\\\.default|makepredictcall\\\\.poly|manova|mantelhaen\\\\.test|mauchly\\\\.test|mauchly\\\\.test.mlm|mauchly\\\\.test.SSD|mcnemar\\\\.test|median|median\\\\.default|medpolish|merge\\\\.dendrogram|midcache\\\\.dendrogram|model\\\\.extract|model\\\\.frame|model\\\\.frame.aovlist|model\\\\.frame.default|model\\\\.frame.glm|model\\\\.frame.lm|model\\\\.matrix|model\\\\.matrix.default|model\\\\.matrix.lm|model\\\\.offset|model\\\\.response|model\\\\.tables|model\\\\.tables.aov|model\\\\.tables.aovlist|model\\\\.weights|monthplot|monthplot\\\\.default|monthplot\\\\.stl|monthplot\\\\.StructTS|monthplot\\\\.ts|mood\\\\.test|mood\\\\.test.default|mood\\\\.test.formula|mvfft|n\\\\.knots|na\\\\.action|na\\\\.action.default|na\\\\.contiguous|na\\\\.contiguous.default|na\\\\.exclude|na\\\\.exclude.data.frame|na\\\\.exclude.default|na\\\\.fail|na\\\\.fail.default|na\\\\.omit|na\\\\.omit.data.frame|na\\\\.omit.default|na\\\\.omit.ts|na\\\\.pass|napredict|napredict\\\\.default|napredict\\\\.exclude|naprint|naprint\\\\.default|naprint\\\\.exclude|naprint\\\\.omit|naresid|naresid\\\\.default|naresid\\\\.exclude|nextn|nleaves|nlm|nlminb|nls|nls_port_fit|nls\\\\.control|nlsModel|nlsModel\\\\.plinear|NLSstAsymptotic|NLSstAsymptotic\\\\.sortedXyData|NLSstClosestX|NLSstClosestX\\\\.sortedXyData|NLSstLfAsymptote|NLSstLfAsymptote\\\\.sortedXyData|NLSstRtAsymptote|NLSstRtAsymptote\\\\.sortedXyData|nobs|nobs\\\\.default|nobs\\\\.dendrogram|nobs\\\\.glm|nobs\\\\.lm|nobs\\\\.logLik|nobs\\\\.nls|numericDeriv|offset|oneway\\\\.test|Ops\\\\.ts|optim|optimHess|optimise|optimize|order\\\\.dendrogram|p\\\\.adjust|pacf|pacf\\\\.default|pairwise\\\\.prop.test|pairwise\\\\.t.test|pairwise\\\\.table|pairwise\\\\.wilcox.test|pbeta|pbinom|pbirthday|pcauchy|pchisq|pexp|pf|pgamma|pgeom|phyper|Pillai|plclust|plnorm|plogis|plot\\\\.acf|plot\\\\.decomposed.ts|plot\\\\.dendrogram|plot\\\\.density|plot\\\\.ecdf|plot\\\\.hclust|plot\\\\.HoltWinters|plot\\\\.isoreg|plot\\\\.lm|plot\\\\.medpolish|plot\\\\.mlm|plot\\\\.ppr|plot\\\\.prcomp|plot\\\\.princomp|plot\\\\.profile.nls|plot\\\\.spec|plot\\\\.spec.coherency|plot\\\\.spec.phase|plot\\\\.stepfun|plot\\\\.stl|plot\\\\.ts|plot\\\\.tskernel|plot\\\\.TukeyHSD|plotNode|plotNodeLimit|pnbinom|pnorm|pointwise|poisson|poisson\\\\.test|poly|polym|port_get_named_v|port_msg|power|power\\\\.anova.test|power\\\\.prop.test|power\\\\.t.test|PP\\\\.test|ppoints|ppois|ppr|ppr\\\\.default|ppr\\\\.formula|prcomp|prcomp\\\\.default|prcomp\\\\.formula|predict|predict\\\\.ar|predict\\\\.Arima|predict\\\\.arima0|predict\\\\.glm|predict\\\\.HoltWinters|predict\\\\.lm|predict\\\\.loess|predict\\\\.mlm|predict\\\\.nls|predict\\\\.poly|predict\\\\.ppr|predict\\\\.prcomp|predict\\\\.princomp|predict\\\\.smooth.spline|predict\\\\.smooth.spline.fit|predict\\\\.StructTS|predLoess|preplot|princomp|princomp\\\\.default|princomp\\\\.formula|print\\\\.acf|print\\\\.anova|print\\\\.aov|print\\\\.aovlist|print\\\\.ar|print\\\\.Arima|print\\\\.arima0|print\\\\.dendrogram|print\\\\.density|print\\\\.dist|print\\\\.dummy_coef|print\\\\.dummy_coef_list|print\\\\.ecdf|print\\\\.factanal|print\\\\.family|print\\\\.formula|print\\\\.ftable|print\\\\.glm|print\\\\.hclust|print\\\\.HoltWinters|print\\\\.htest|print\\\\.infl|print\\\\.integrate|print\\\\.isoreg|print\\\\.kmeans|print\\\\.lm|print\\\\.loadings|print\\\\.loess|print\\\\.logLik|print\\\\.medpolish|print\\\\.mtable|print\\\\.nls|print\\\\.pairwise.htest|print\\\\.power.htest|print\\\\.ppr|print\\\\.prcomp|print\\\\.princomp|print\\\\.smooth.spline|print\\\\.stepfun|print\\\\.stl|print\\\\.StructTS|print\\\\.summary.aov|print\\\\.summary.aovlist|print\\\\.summary.ecdf|print\\\\.summary.glm|print\\\\.summary.lm|print\\\\.summary.loess|print\\\\.summary.manova|print\\\\.summary.nls|print\\\\.summary.ppr|print\\\\.summary.prcomp|print\\\\.summary.princomp|print\\\\.tables_aov|print\\\\.terms|print\\\\.ts|print\\\\.tskernel|print\\\\.TukeyHSD|print\\\\.tukeyline|print\\\\.tukeysmooth|print\\\\.xtabs|printCoefmat|profile|profile\\\\.nls|profiler|profiler\\\\.nls|proj|proj\\\\.aov|proj\\\\.aovlist|proj\\\\.default|proj\\\\.lm|proj\\\\.matrix|promax|prop\\\\.test|prop\\\\.trend.test|psignrank|pt|ptukey|punif|pweibull|pwilcox|qbeta|qbinom|qbirthday|qcauchy|qchisq|qexp|qf|qgamma|qgeom|qhyper|qlnorm|qlogis|qnbinom|qnorm|qpois|qqline|qqnorm|qqnorm\\\\.default|qqplot|qr\\\\.lm|qsignrank|qt|qtukey|quade\\\\.test|quade\\\\.test.default|quade\\\\.test.formula|quantile|quantile\\\\.default|quantile\\\\.ecdf|quantile\\\\.POSIXt|quasi|quasibinomial|quasipoisson|qunif|qweibull|qwilcox|r2dtable|Rank|rbeta|rbinom|rcauchy|rchisq|read\\\\.ftable|rect\\\\.hclust|reformulate|regularize\\\\.values|relevel|relevel\\\\.default|relevel\\\\.factor|relevel\\\\.ordered|reorder|reorder\\\\.default|reorder\\\\.dendrogram|replications|reshape|resid|residuals|residuals\\\\.default|residuals\\\\.glm|residuals\\\\.HoltWinters|residuals\\\\.isoreg|residuals\\\\.lm|residuals\\\\.nls|residuals\\\\.smooth.spline|residuals\\\\.tukeyline|rev\\\\.dendrogram|rexp|rf|rgamma|rgeom|rhyper|rlnorm|rlogis|rmultinom|rnbinom|rnorm|Roy|rpois|rsignrank|rstandard|rstandard\\\\.glm|rstandard\\\\.lm|rstudent|rstudent\\\\.glm|rstudent\\\\.lm|rt|runif|runmed|rweibull|rwilcox|rWishart|safe_pchisq|safe_pf|scatter\\\\.smooth|screeplot|screeplot\\\\.default|sd|se\\\\.aov|se\\\\.aovlist|se\\\\.contrast|se\\\\.contrast.aov|se\\\\.contrast.aovlist|selfStart|selfStart\\\\.default|selfStart\\\\.formula|setNames|shapiro\\\\.test|sigma|sigma\\\\.default|sigma\\\\.mlm|simpleLoess|simulate|simulate\\\\.lm|smooth|smooth\\\\.spline|smoothEnds|sortedXyData|sortedXyData\\\\.default|spec\\\\.ar|spec\\\\.pgram|spec\\\\.taper|spectrum|sphericity|spl_coef_conv|spline|splinefun|splinefunH|splinefunH0|SSasymp|SSasympOff|SSasympOrig|SSbiexp|SSD|SSD\\\\.mlm|SSfol|SSfpl|SSgompertz|SSlogis|SSmicmen|SSweibull|start|start\\\\.default|stat\\\\.anova|step|stepfun|stl|str\\\\.dendrogram|str\\\\.logLik|StructTS|summary\\\\.aov|summary\\\\.aovlist|summary\\\\.ecdf|summary\\\\.glm|summary\\\\.infl|summary\\\\.lm|summary\\\\.loess|summary\\\\.manova|summary\\\\.mlm|summary\\\\.nls|summary\\\\.ppr|summary\\\\.prcomp|summary\\\\.princomp|summary\\\\.stepfun|summary\\\\.stl|summary\\\\.tukeysmooth|supsmu|symnum|t\\\\.test|t\\\\.test.default|t\\\\.test.formula|t\\\\.ts|termplot|terms|terms\\\\.aovlist|terms\\\\.default|terms\\\\.formula|terms\\\\.terms|Thin\\\\.col|Thin\\\\.row|time|time\\\\.default|time\\\\.ts|toeplitz|Tr|ts|ts\\\\.intersect|ts\\\\.plot|ts\\\\.union|tsdiag|tsdiag\\\\.Arima|tsdiag\\\\.arima0|tsdiag\\\\.StructTS|tsp|tsSmooth|tsSmooth\\\\.StructTS|TukeyHSD|TukeyHSD\\\\.aov|uniroot|update|update\\\\.default|update\\\\.formula|var|var\\\\.test|var\\\\.test.default|var\\\\.test.formula|variable\\\\.names|variable\\\\.names.default|variable\\\\.names.lm|varimax|vcov|vcov\\\\.Arima|vcov\\\\.glm|vcov\\\\.lm|vcov\\\\.mlm|vcov\\\\.nls|vcov\\\\.summary.glm|vcov\\\\.summary.lm|weighted\\\\.mean|weighted\\\\.mean.Date|weighted\\\\.mean.default|weighted\\\\.mean.difftime|weighted\\\\.mean.POSIXct|weighted\\\\.mean.POSIXlt|weighted\\\\.residuals|weights|weights\\\\.default|weights\\\\.glm|weights\\\\.nls|wilcox\\\\.test|wilcox\\\\.test.default|wilcox\\\\.test.formula|Wilks|window|window\\\\.default|window\\\\.ts|write\\\\.ftable|xtabs)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(adist|alarm|apropos|aregexec|argNames|argsAnywhere|as\\\\.bibentry|as\\\\.bibentry.bibentry|as\\\\.bibentry.citation|as\\\\.character.person|as\\\\.character.roman|as\\\\.person|as\\\\.person.default|as\\\\.personList|as\\\\.personList.default|as\\\\.personList.person|as\\\\.relistable|as\\\\.roman|aspell|aspell_find_dictionaries|aspell_find_program|aspell_inspect_context|aspell_package|aspell_package_C_files|aspell_package_description|aspell_package_pot_files|aspell_package_R_files|aspell_package_Rd_files|aspell_package_vignettes|aspell_R_C_files|aspell_R_manuals|aspell_R_R_files|aspell_R_Rd_files|aspell_R_vignettes|aspell_write_personal_dictionary_file|assignInMyNamespace|assignInNamespace|attachedPackageCompletions|available\\\\.packages|bibentry|blank_out_ignores_in_lines|blank_out_regexp_matches|browseEnv|browseURL|browseVignettes|bug\\\\.report|bug\\\\.report.info|c\\\\.bibentry|c\\\\.person|capture\\\\.output|changedFiles|check_for_XQuartz|checkCRAN|chooseBioCmirror|chooseCRANmirror|citation|cite|citeNatbib|citEntry|citFooter|citHeader|close\\\\.socket|close\\\\.txtProgressBar|combn|compareVersion|contrib\\\\.url|correctFilenameToken|count\\\\.fields|CRAN\\\\.packages|create\\\\.post|data|data\\\\.entry|dataentry|de|de\\\\.ncols|de\\\\.restore|de\\\\.setup|debugcall|debugger|defaultUserAgent|demo|download\\\\.file|download\\\\.packages|dump\\\\.frames|edit|edit\\\\.data.frame|edit\\\\.default|edit\\\\.matrix|edit\\\\.vignette|emacs|example|expr2token|file_test|file\\\\.edit|fileCompletionPreferred|fileCompletions|fileSnapshot|filter_packages_by_depends_predicates|find|find_files_in_directories|findExactMatches|findFuzzyMatches|findGeneric|findLineNum|findMatches|fix|fixInNamespace|flush\\\\.console|fnLineNum|format\\\\.aspell|format\\\\.bibentry|format\\\\.citation|format\\\\.news_db|format\\\\.object_size|format\\\\.person|format\\\\.roman|formatOL|formatUL|functionArgs|fuzzyApropos|get_parse_data_for_message_strings|getAnywhere|getCRANmirrors|getDependencies|getFromNamespace|getIsFirstArg|getKnownS3generics|getParseData|getParseText|getRcode|getRcode\\\\.vignette|getS3method|getSrcDirectory|getSrcfile|getSrcFilename|getSrcLocation|getSrcref|getTxtProgressBar|glob2rx|globalVariables|hasName|head|head\\\\.data.frame|head\\\\.default|head\\\\.ftable|head\\\\.function|head\\\\.matrix|head\\\\.table|help|help\\\\.request|help\\\\.search|help\\\\.start|helpCompletions|history|hsearch_db|hsearch_db_concepts|hsearch_db_keywords|index\\\\.search|inFunction|install\\\\.packages|installed\\\\.packages|is\\\\.relistable|isBasePkg|isInsideQuotes|isS3method|isS3stdGeneric|keywordCompletions|limitedLabels|loadedPackageCompletions|loadhistory|localeToCharset|ls\\\\.str|lsf\\\\.str|maintainer|make_sysdata_rda|make\\\\.packages.html|make\\\\.socket|makeRegexpSafe|makeRweaveLatexCodeRunner|makeUserAgent|matchAvailableTopics|memory\\\\.limit|memory\\\\.size|menu|merge_demo_index|merge_vignette_index|methods|mirror2html|modifyList|new\\\\.packages|news|normalCompletions|nsl|object\\\\.size|offline_help_helper|old\\\\.packages|Ops\\\\.roman|package\\\\.skeleton|packageDescription|packageName|packageStatus|packageVersion|page|person|personList|pico|print\\\\.aspell|print\\\\.aspell_inspect_context|print\\\\.bibentry|print\\\\.Bibtex|print\\\\.browseVignettes|print\\\\.changedFiles|print\\\\.citation|print\\\\.fileSnapshot|print\\\\.findLineNumResult|print\\\\.getAnywhere|print\\\\.help_files_with_topic|print\\\\.hsearch|print\\\\.hsearch_db|print\\\\.Latex|print\\\\.ls_str|print\\\\.MethodsFunction|print\\\\.news_db|print\\\\.object_size|print\\\\.packageDescription|print\\\\.packageIQR|print\\\\.packageStatus|print\\\\.person|print\\\\.roman|print\\\\.sessionInfo|print\\\\.socket|print\\\\.summary.packageStatus|print\\\\.vignette|printhsearchInternal|process\\\\.events|prompt|prompt\\\\.data.frame|prompt\\\\.default|promptData|promptImport|promptPackage|rc\\\\.getOption|rc\\\\.options|rc\\\\.settings|rc\\\\.status|read\\\\.csv|read\\\\.csv2|read\\\\.delim|read\\\\.delim2|read\\\\.DIF|read\\\\.fortran|read\\\\.fwf|read\\\\.socket|read\\\\.table|readCitationFile|recover|registerNames|regquote|relist|relist\\\\.default|relist\\\\.factor|relist\\\\.list|relist\\\\.matrix|remove\\\\.packages|removeSource|rep\\\\.bibentry|rep\\\\.roman|resolvePkgType|Rprof|Rprof_memory_summary|Rprofmem|RShowDoc|RSiteSearch|rtags|rtags\\\\.file|Rtangle|RtangleFinish|RtangleRuncode|RtangleSetup|RtangleWritedoc|RweaveChunkPrefix|RweaveEvalWithOpt|RweaveLatex|RweaveLatexFinish|RweaveLatexOptions|RweaveLatexRuncode|RweaveLatexSetup|RweaveLatexWritedoc|RweaveTryStop|savehistory|select\\\\.list|sessionInfo|setBreakpoint|setIsFirstArg|setRepositories|setTxtProgressBar|shorten\\\\.to.string|simplifyRepos|sort\\\\.bibentry|specialCompletions|specialFunctionArgs|specialOpCompletionsHelper|specialOpLocs|stack|stack\\\\.data.frame|stack\\\\.default|Stangle|str|str\\\\.data.frame|str\\\\.Date|str\\\\.default|str\\\\.POSIXt|strcapture|strextract|strOptions|substr_with_tabs|summary\\\\.aspell|summary\\\\.packageStatus|summaryRprof|suppressForeignCheck|Sweave|SweaveGetSyntax|SweaveHooks|SweaveParseOptions|SweaveReadFile|SweaveSyntConv|tail|tail\\\\.data.frame|tail\\\\.default|tail\\\\.ftable|tail\\\\.function|tail\\\\.matrix|tail\\\\.table|tar|timestamp|toBibtex|toBibtex\\\\.bibentry|toBibtex\\\\.person|toLatex|toLatex\\\\.sessionInfo|topicName|txtProgressBar|type\\\\.convert|undebugcall|unique\\\\.bibentry|unlist\\\\.relistable|unstack|unstack\\\\.data.frame|unstack\\\\.default|untar|untar2|unzip|update\\\\.packages|update\\\\.packageStatus|upgrade|upgrade\\\\.packageStatus|url\\\\.show|URLdecode|URLencode|vi|View|vignette|write\\\\.csv|write\\\\.csv2|write\\\\.etags|write\\\\.socket|write\\\\.table|wsbrowser|xedit|xemacs|zip)\\\\s*(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.r\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/raku.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl%206.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/perl.tmbundle/commit/d9841a0878239fa43f88c640f8d458590f97e8f5\",\n  \"name\": \"raku\",\n  \"scopeName\": \"source.perl.6\",\n  \"patterns\": [\n    {\n      \"begin\": \"^=begin\",\n      \"end\": \"^=end\",\n      \"name\": \"comment.block.perl\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.perl\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.perl\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.perl\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.class.perl.6\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.perl.6\"\n        }\n      },\n      \"match\": \"(class|enum|grammar|knowhow|module|package|role|slang|subset)(\\\\s+)(((?:::|')?(?:([a-zA-Z_\\\\x{C0}-\\\\x{FF}\\\\$])([a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\\\\\$]|[\\\\-'][a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$])*))+)\",\n      \"name\": \"meta.class.perl.6\"\n    },\n    {\n      \"begin\": \"(?<=\\\\s)'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.single.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.perl\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.perl\"\n        }\n      },\n      \"name\": \"string.quoted.double.perl\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[abtnfre\\\"\\\\\\\\]\",\n          \"name\": \"constant.character.escape.perl\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"q(q|to|heredoc)*\\\\s*:?(q|to|heredoc)*\\\\s*/(.+)/\",\n      \"end\": \"\\\\3\",\n      \"name\": \"string.quoted.single.heredoc.perl\"\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*{{\",\n      \"end\": \"}}\",\n      \"name\": \"string.quoted.double.heredoc.brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\(\\\\(\",\n      \"end\": \"\\\\)\\\\)\",\n      \"name\": \"string.quoted.double.heredoc.paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\[\\\\[\",\n      \"end\": \"\\\\]\\\\]\",\n      \"name\": \"string.quoted.double.heredoc.bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*{\",\n      \"end\": \"}\",\n      \"name\": \"string.quoted.single.heredoc.brace.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*/\",\n      \"end\": \"/\",\n      \"name\": \"string.quoted.single.heredoc.slash.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_slash_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\(\",\n      \"end\": \"\\\\)\",\n      \"name\": \"string.quoted.single.heredoc.paren.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"string.quoted.single.heredoc.bracket.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.heredoc.single.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_single_string_content\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\\\s*\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.single.heredoc.double.perl\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_double_string_content\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b\\\\$\\\\w+\\\\b\",\n      \"name\": \"variable.other.perl\"\n    },\n    {\n      \"match\": \"\\\\b(macro|sub|submethod|method|multi|proto|only|rule|token|regex|category)\\\\b\",\n      \"name\": \"storage.type.declare.routine.perl\"\n    },\n    {\n      \"match\": \"\\\\b(self)\\\\b\",\n      \"name\": \"variable.language.perl\"\n    },\n    {\n      \"match\": \"\\\\b(use|require)\\\\b\",\n      \"name\": \"keyword.other.include.perl\"\n    },\n    {\n      \"match\": \"\\\\b(if|else|elsif|unless)\\\\b\",\n      \"name\": \"keyword.control.conditional.perl\"\n    },\n    {\n      \"match\": \"\\\\b(let|my|our|state|temp|has|constant)\\\\b\",\n      \"name\": \"storage.type.variable.perl\"\n    },\n    {\n      \"match\": \"\\\\b(for|loop|repeat|while|until|gather|given)\\\\b\",\n      \"name\": \"keyword.control.repeat.perl\"\n    },\n    {\n      \"match\": \"\\\\b(take|do|when|next|last|redo|return|contend|maybe|defer|default|exit|make|continue|break|goto|leave|async|lift)\\\\b\",\n      \"name\": \"keyword.control.flowcontrol.perl\"\n    },\n    {\n      \"match\": \"\\\\b(is|as|but|trusts|of|returns|handles|where|augment|supersede)\\\\b\",\n      \"name\": \"storage.modifier.type.constraints.perl\"\n    },\n    {\n      \"match\": \"\\\\b(BEGIN|CHECK|INIT|START|FIRST|ENTER|LEAVE|KEEP|UNDO|NEXT|LAST|PRE|POST|END|CATCH|CONTROL|TEMP)\\\\b\",\n      \"name\": \"meta.function.perl\"\n    },\n    {\n      \"match\": \"\\\\b(die|fail|try|warn)\\\\b\",\n      \"name\": \"keyword.control.control-handlers.perl\"\n    },\n    {\n      \"match\": \"\\\\b(prec|irs|ofs|ors|export|deep|binary|unary|reparsed|rw|parsed|cached|readonly|defequiv|will|ref|copy|inline|tighter|looser|equiv|assoc|required)\\\\b\",\n      \"name\": \"storage.modifier.perl\"\n    },\n    {\n      \"match\": \"\\\\b(NaN|Inf)\\\\b\",\n      \"name\": \"constant.numeric.perl\"\n    },\n    {\n      \"match\": \"\\\\b(oo|fatal)\\\\b\",\n      \"name\": \"keyword.other.pragma.perl\"\n    },\n    {\n      \"match\": \"\\\\b(Object|Any|Junction|Whatever|Capture|MatchSignature|Proxy|Matcher|Package|Module|ClassGrammar|Scalar|Array|Hash|KeyHash|KeySet|KeyBagPair|List|Seq|Range|Set|Bag|Mapping|Void|UndefFailure|Exception|Code|Block|Routine|Sub|MacroMethod|Submethod|Regex|Str|str|Blob|Char|ByteCodepoint|Grapheme|StrPos|StrLen|Version|NumComplex|num|complex|Bit|bit|bool|True|FalseIncreasing|Decreasing|Ordered|Callable|AnyCharPositional|Associative|Ordering|KeyExtractorComparator|OrderingPair|IO|KitchenSink|RoleInt|int|int1|int2|int4|int8|int16|int32|int64Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32uint64|Abstraction|utf8|utf16|utf32)\\\\b\",\n      \"name\": \"support.type.perl6\"\n    },\n    {\n      \"match\": \"\\\\b(div|xx|x|mod|also|leg|cmp|before|after|eq|ne|le|lt|not|gt|ge|eqv|ff|fff|and|andthen|or|xor|orelse|extra|lcm|gcd)\\\\b\",\n      \"name\": \"keyword.operator.perl\"\n    },\n    {\n      \"match\": \"(\\\\$|@|%|&)(\\\\*|:|!|\\\\^|~|=|\\\\?|(<(?=.+>)))?([a-zA-Z_\\\\x{C0}-\\\\x{FF}\\\\$])([a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$]|[\\\\-'][a-zA-Z0-9_\\\\x{C0}-\\\\x{FF}\\\\$])*\",\n      \"name\": \"variable.other.identifier.perl.6\"\n    },\n    {\n      \"match\": \"\\\\b(eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints|chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin|classify|first|sum|keys|values|pairs|defined|delete|exists|elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push|shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign|sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2|pick|chop|p5chop|chomp|p5chomp|lc|lcfirst|uc|ucfirst|capitalize|normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars|nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead|nothing|want|bless|chr|ord|gmtime|time|eof|localtime|gethost|getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs|codes|bytes|clone|print|open|read|write|readline|say|seek|close|opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink|symlink|uniq|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan|sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh|sech|acosech|acotanh|asech|ok|nok|plan_ok|dies_ok|lives_ok|skip|todo|pass|flunk|force_todo|use_ok|isa_ok|diag|is_deeply|isnt|like|skip_rest|unlike|cmp_ok|eval_dies_ok|nok_error|eval_lives_ok|approx|is_approx|throws_ok|version_lt|plan|EVAL|succ|pred|times|nonce|once|signature|new|connect|operator|undef|undefine|sleep|from|to|infix|postfix|prefix|circumfix|postcircumfix|minmax|lazy|count|unwrap|getc|pi|e|context|void|quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity|assuming|rewind|callwith|callsame|nextwith|nextsame|attr|eval_elsewhere|none|srand|trim|trim_start|trim_end|lastcall|WHAT|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not|true|iterator|by|re|im|invert|flip|gist|flat|tree|is-prime|throws_like|trans)\\\\b\",\n      \"name\": \"support.function.perl\"\n    }\n  ],\n  \"repository\": {\n    \"qq_brace_string_content\": {\n      \"begin\": \"{\",\n      \"end\": \"}\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_brace_string_content\"\n        }\n      ]\n    },\n    \"qq_bracket_string_content\": {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_bracket_string_content\"\n        }\n      ]\n    },\n    \"qq_double_string_content\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_double_string_content\"\n        }\n      ]\n    },\n    \"qq_paren_string_content\": {\n      \"begin\": \"\\\\(\",\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_paren_string_content\"\n        }\n      ]\n    },\n    \"qq_single_string_content\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_single_string_content\"\n        }\n      ]\n    },\n    \"qq_slash_string_content\": {\n      \"begin\": \"\\\\\\\\/\",\n      \"end\": \"\\\\\\\\/\",\n      \"patterns\": [\n        {\n          \"include\": \"#qq_slash_string_content\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/razor.tmLanguage.json",
    "content": "{\n  \"name\": \"razor\",\n  \"scopeName\": \"text.aspnetcorerazor\",\n  \"fileTypes\": [\"razor\", \"cshtml\"],\n  \"patterns\": [\n    {\n      \"include\": \"#razor-control-structures\"\n    },\n    {\n      \"include\": \"text.html.basic\"\n    }\n  ],\n  \"repository\": {\n    \"razor-control-structures\": {\n      \"patterns\": [\n        {\n          \"include\": \"#razor-comment\"\n        },\n        {\n          \"include\": \"#razor-codeblock\"\n        },\n        {\n          \"include\": \"#explicit-razor-expression\"\n        },\n        {\n          \"include\": \"#escaped-transition\"\n        },\n        {\n          \"include\": \"#directives\"\n        },\n        {\n          \"include\": \"#transitioned-csharp-control-structures\"\n        },\n        {\n          \"include\": \"#implicit-expression\"\n        }\n      ]\n    },\n    \"escaped-transition\": {\n      \"name\": \"constant.character.escape.razor.transition\",\n      \"match\": \"@@\"\n    },\n    \"transition\": {\n      \"match\": \"@\",\n      \"name\": \"keyword.control.cshtml.transition\"\n    },\n    \"razor-codeblock\": {\n      \"name\": \"meta.structure.razor.codeblock\",\n      \"begin\": \"(@)(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"contentName\": \"source.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"razor-codeblock-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#text-tag\"\n        },\n        {\n          \"include\": \"#wellformed-html\"\n        },\n        {\n          \"include\": \"#razor-single-line-markup\"\n        },\n        {\n          \"include\": \"#razor-control-structures\"\n        },\n        {\n          \"include\": \"source.cs\"\n        }\n      ]\n    },\n    \"razor-single-line-markup\": {\n      \"match\": \"(\\\\@\\\\:)([^$]*)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.singleLineMarkup\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#razor-control-structures\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      }\n    },\n    \"text-tag\": {\n      \"begin\": \"(<text\\\\s*>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cshtml.transition.textTag.open\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#wellformed-html\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ],\n      \"end\": \"(</text>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.cshtml.transition.textTag.close\"\n        }\n      }\n    },\n    \"razor-comment\": {\n      \"name\": \"meta.comment.razor\",\n      \"begin\": \"(@)(\\\\*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.comment.star\"\n        }\n      },\n      \"contentName\": \"comment.block.razor\",\n      \"end\": \"(\\\\*)(@)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.comment.star\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      }\n    },\n    \"wellformed-html\": {\n      \"patterns\": [\n        {\n          \"include\": \"#void-tag\"\n        },\n        {\n          \"include\": \"#non-void-tag\"\n        }\n      ]\n    },\n    \"void-tag\": {\n      \"name\": \"meta.tag.structure.$3.void.html\",\n      \"begin\": \"(?i)(<)(!)?(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)(?=\\\\s|/?>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.razor.tagHelperOptOut\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"text.html.basic#attribute\"\n        }\n      ],\n      \"end\": \"/?>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      }\n    },\n    \"non-void-tag\": {\n      \"begin\": \"(?=<(!)?([^/\\\\s>]+)(\\\\s|/?>))\",\n      \"end\": \"(</)(\\\\2)\\\\s*(>)|(/>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)(!)?([^/\\\\s>]+)(?=\\\\s|/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.html\"\n            },\n            \"2\": {\n              \"name\": \"constant.character.escape.razor.tagHelperOptOut\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.html\"\n            }\n          },\n          \"end\": \"(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#razor-control-structures\"\n            },\n            {\n              \"include\": \"text.html.basic#attribute\"\n            }\n          ]\n        },\n        {\n          \"begin\": \">\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"patterns\": [\n            {\n              \"include\": \"#wellformed-html\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"explicit-razor-expression\": {\n      \"name\": \"meta.expression.explicit.cshtml\",\n      \"begin\": \"(@)\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.cshtml\"\n        },\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#expression\"\n        }\n      ],\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.cshtml\"\n        }\n      }\n    },\n    \"implicit-expression\": {\n      \"name\": \"meta.expression.implicit.cshtml\",\n      \"contentName\": \"source.cs\",\n      \"begin\": \"(?<![[:alpha:][:alnum:]])(@)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#await-prefix\"\n        },\n        {\n          \"include\": \"#implicit-expression-body\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-invocation-start\"\n        },\n        {\n          \"include\": \"#implicit-expression-accessor-start\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-invocation-start\": {\n      \"begin\": \"([_[:alpha:]][_[:alnum:]]*)(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-continuation\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-accessor-start\": {\n      \"begin\": \"([_[:alpha:]][_[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.object.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-continuation\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-continuation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#balanced-parenthesis-csharp\"\n        },\n        {\n          \"include\": \"#balanced-brackets-csharp\"\n        },\n        {\n          \"include\": \"#implicit-expression-invocation\"\n        },\n        {\n          \"include\": \"#implicit-expression-accessor\"\n        },\n        {\n          \"include\": \"#implicit-expression-extension\"\n        }\n      ],\n      \"end\": \"(?=[\\\\s<>\\\\{\\\\}\\\\)\\\\]'\\\"])\"\n    },\n    \"implicit-expression-accessor\": {\n      \"match\": \"(?<=\\\\.)[_[:alpha:]][_[:alnum:]]*\",\n      \"name\": \"variable.other.object.property.cs\"\n    },\n    \"implicit-expression-invocation\": {\n      \"match\": \"(?<=\\\\.)[_[:alpha:]][_[:alnum:]]*(?=\\\\()\",\n      \"name\": \"entity.name.function.cs\"\n    },\n    \"implicit-expression-operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#implicit-expression-dot-operator\"\n        },\n        {\n          \"include\": \"#implicit-expression-null-conditional-operator\"\n        },\n        {\n          \"include\": \"#implicit-expression-null-forgiveness-operator\"\n        }\n      ]\n    },\n    \"implicit-expression-dot-operator\": {\n      \"match\": \"(\\\\.)(?=[_[:alpha:]][_[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.cs\"\n        }\n      }\n    },\n    \"implicit-expression-null-conditional-operator\": {\n      \"match\": \"(\\\\?)(?=[.\\\\[])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.null-conditional.cs\"\n        }\n      }\n    },\n    \"implicit-expression-null-forgiveness-operator\": {\n      \"match\": \"(\\\\!)(?=(?:\\\\.[_[:alpha:]][_[:alnum:]]*)|\\\\?|[\\\\[\\\\(])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.logical.cs\"\n        }\n      }\n    },\n    \"balanced-parenthesis-csharp\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"name\": \"razor.test.balanced.parenthesis\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    },\n    \"balanced-brackets-csharp\": {\n      \"begin\": \"(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.open.cs\"\n        }\n      },\n      \"name\": \"razor.test.balanced.brackets\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\])\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.squarebracket.close.cs\"\n        }\n      }\n    },\n    \"directives\": {\n      \"patterns\": [\n        {\n          \"include\": \"#code-directive\"\n        },\n        {\n          \"include\": \"#functions-directive\"\n        },\n        {\n          \"include\": \"#page-directive\"\n        },\n        {\n          \"include\": \"#addTagHelper-directive\"\n        },\n        {\n          \"include\": \"#removeTagHelper-directive\"\n        },\n        {\n          \"include\": \"#tagHelperPrefix-directive\"\n        },\n        {\n          \"include\": \"#model-directive\"\n        },\n        {\n          \"include\": \"#inherits-directive\"\n        },\n        {\n          \"include\": \"#implements-directive\"\n        },\n        {\n          \"include\": \"#namespace-directive\"\n        },\n        {\n          \"include\": \"#inject-directive\"\n        },\n        {\n          \"include\": \"#attribute-directive\"\n        },\n        {\n          \"include\": \"#section-directive\"\n        },\n        {\n          \"include\": \"#layout-directive\"\n        },\n        {\n          \"include\": \"#using-directive\"\n        }\n      ]\n    },\n    \"code-directive\": {\n      \"begin\": \"(@)(code)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.code\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-codeblock\"\n        }\n      ],\n      \"end\": \"(?<=})|\\\\s\"\n    },\n    \"functions-directive\": {\n      \"begin\": \"(@)(functions)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.functions\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-codeblock\"\n        }\n      ],\n      \"end\": \"(?<=})|\\\\s\"\n    },\n    \"directive-codeblock\": {\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"name\": \"meta.structure.razor.directive.codeblock\",\n      \"contentName\": \"source.cs\",\n      \"patterns\": [\n        {\n          \"include\": \"source.cs\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"page-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(page)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.page\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#string-literal\"\n            }\n          ]\n        }\n      }\n    },\n    \"addTagHelper-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(addTagHelper)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.addTagHelper\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"removeTagHelper-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(removeTagHelper)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.removeTagHelper\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"tagHelperPrefix-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(tagHelperPrefix)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.tagHelperPrefix\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tagHelper-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"tagHelper-directive-argument\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#string-literal\"\n        },\n        {\n          \"include\": \"#unquoted-string-argument\"\n        }\n      ]\n    },\n    \"unquoted-string-argument\": {\n      \"name\": \"string.quoted.double.cs\",\n      \"match\": \"[^$]+\"\n    },\n    \"model-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(model)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.model\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"inherits-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(inherits)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.inherits\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"implements-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(implements)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.implements\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"layout-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(layout)\\\\s+([^$]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.layout\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"namespace-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(namespace)\\\\s+([^\\\\s]+)?\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.namespace\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#namespace-directive-argument\"\n            }\n          ]\n        }\n      }\n    },\n    \"namespace-directive-argument\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)(\\\\.)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.namespace.cs\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.cs\"\n        }\n      }\n    },\n    \"inject-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(inject)\\\\s*([\\\\S\\\\s]+?)?\\\\s*([_[:alpha:]][_[:alnum:]]*)?\\\\s*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.inject\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"entity.name.variable.property.cs\"\n        }\n      }\n    },\n    \"attribute-directive\": {\n      \"name\": \"meta.directive\",\n      \"begin\": \"(@)(attribute)\\\\b\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.attribute\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#attribute-section\"\n        }\n      ],\n      \"end\": \"(?<=\\\\])|$\"\n    },\n    \"section-directive\": {\n      \"name\": \"meta.directive.block\",\n      \"begin\": \"(@)(section)\\\\b\\\\s+([_[:alpha:]][_[:alnum:]]*)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.razor.directive.section\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.razor.directive.sectionName\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#directive-markupblock\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"directive-markupblock\": {\n      \"name\": \"meta.structure.razor.directive.markblock\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.open\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.razor.directive.codeblock.close\"\n        }\n      }\n    },\n    \"using-directive\": {\n      \"name\": \"meta.directive\",\n      \"match\": \"(@)(using)\\\\b\\\\s+(?!\\\\(|\\\\s)(.+?)?(;)?$\",\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.using.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#using-static-directive\"\n            },\n            {\n              \"include\": \"#using-alias-directive\"\n            },\n            {\n              \"include\": \"#using-standard-directive\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"keyword.control.razor.optionalSemicolon\"\n        }\n      }\n    },\n    \"using-static-directive\": {\n      \"match\": \"(static)\\\\b\\\\s+(.+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.static.cs\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"using-alias-directive\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)\\\\b\\\\s*(=)\\\\s*(.+)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.alias.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.assignment.cs\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cs#type\"\n            }\n          ]\n        }\n      }\n    },\n    \"using-standard-directive\": {\n      \"match\": \"([_[:alpha:]][_[:alnum:]]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.type.namespace.cs\"\n        }\n      }\n    },\n    \"transitioned-csharp-control-structures\": {\n      \"patterns\": [\n        {\n          \"include\": \"#using-statement\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"include\": \"#else-part\"\n        },\n        {\n          \"include\": \"#foreach-statement\"\n        },\n        {\n          \"include\": \"#for-statement\"\n        },\n        {\n          \"include\": \"#while-statement\"\n        },\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#lock-statement\"\n        },\n        {\n          \"include\": \"#do-statement\"\n        },\n        {\n          \"include\": \"#try-statement\"\n        }\n      ]\n    },\n    \"using-statement\": {\n      \"name\": \"meta.statement.using.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(using)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.using.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"if-statement\": {\n      \"name\": \"meta.statement.if.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(if)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"else-part\": {\n      \"name\": \"meta.statement.else.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(else)\\\\b\\\\s*?(?: (if))?\\\\s*?(?=[\\\\n\\\\(\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.conditional.else.cs\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.conditional.if.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"for-statement\": {\n      \"name\": \"meta.statement.for.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(for)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.for.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"foreach-statement\": {\n      \"name\": \"meta.statement.foreach.razor\",\n      \"begin\": \"(?:^\\\\s*|(@)(await\\\\s+)?)(foreach)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#await-prefix\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.loop.foreach.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#foreach-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"foreach-condition\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?:\\n  (\\\\bvar\\\\b)|\\n  (?<type-name>\\n    (?:\\n      (?:\\n        (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n        (?<name-and-type-args> # identifier + type arguments (if any)\\n          \\\\g<identifier>\\\\s*\\n          (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n        )\\n        (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)* | # Are there any more names being dotted into?\\n        (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n      )\\n      (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n      (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n    )\\n  )\\n)\\\\s+\\n(\\\\g<identifier>)\\\\s+\\n\\\\b(in)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.var.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#type\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"entity.name.variable.local.cs\"\n            },\n            \"8\": {\n              \"name\": \"keyword.control.loop.in.cs\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) # match foreach (var (x, y) in ...)\\n(?:\\\\b(var)\\\\b\\\\s*)?\\n(?<tuple>\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\\\s+\\n\\\\b(in)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.var.cs\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#tuple-declaration-deconstruction-element-list\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.loop.in.cs\"\n            }\n          }\n        },\n        {\n          \"include\": \"source.cs#expression\"\n        }\n      ]\n    },\n    \"do-statement\": {\n      \"name\": \"meta.statement.do.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(do)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.do.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"while-statement\": {\n      \"name\": \"meta.statement.while.razor\",\n      \"begin\": \"(?:(@)|^\\\\s*|(?<=})\\\\s*)(while)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.loop.while.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})|(;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.statement.cs\"\n        }\n      }\n    },\n    \"switch-statement\": {\n      \"name\": \"meta.statement.switch.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(switch)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.switch.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#switch-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"switch-code-block\": {\n      \"name\": \"meta.structure.razor.csharp.codeblock.switch\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#switch-label\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      }\n    },\n    \"lock-statement\": {\n      \"name\": \"meta.statement.lock.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(lock)\\\\b\\\\s*(?=\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.other.lock.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"try-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#try-block\"\n        },\n        {\n          \"include\": \"#catch-clause\"\n        },\n        {\n          \"include\": \"#finally-clause\"\n        }\n      ]\n    },\n    \"try-block\": {\n      \"name\": \"meta.statement.try.razor\",\n      \"begin\": \"(?:^\\\\s*|(@))(try)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#transition\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"keyword.control.try.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-condition\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"catch-clause\": {\n      \"name\": \"meta.statement.catch.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(catch)\\\\b\\\\s*?(?=[\\\\n\\\\(\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.catch.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#catch-condition\"\n        },\n        {\n          \"include\": \"source.cs#when-clause\"\n        },\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"catch-condition\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n(?<type-name>\\n  (?:\\n    (?:\\n      (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\\\s*\\\\:\\\\:\\\\s*)? # alias-qualification\\n      (?<name-and-type-args> # identifier + type arguments (if any)\\n        \\\\g<identifier>\\\\s*\\n        (?<type-args>\\\\s*<(?:[^<>]|\\\\g<type-args>)+>\\\\s*)?\\n      )\\n      (?:\\\\s*\\\\.\\\\s*\\\\g<name-and-type-args>)* | # Are there any more names being dotted into?\\n      (?<tuple>\\\\s*\\\\((?:[^\\\\(\\\\)]|\\\\g<tuple>)+\\\\))\\n    )\\n    (?:\\\\s*\\\\?\\\\s*)? # nullable suffix?\\n    (?:\\\\s*\\\\[(?:\\\\s*,\\\\s*)*\\\\]\\\\s*)* # array suffix?\\n  )\\n)\\\\s*\\n(?:(\\\\g<identifier>)\\\\b)?\",\n          \"captures\": {\n            \"1\": {\n              \"patterns\": [\n                {\n                  \"include\": \"source.cs#type\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"entity.name.variable.local.cs\"\n            }\n          }\n        }\n      ]\n    },\n    \"finally-clause\": {\n      \"name\": \"meta.statement.finally.razor\",\n      \"begin\": \"(?:^|(?<=}))\\\\s*(finally)\\\\b\\\\s*?(?=[\\\\n\\\\{])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.try.finally.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#csharp-code-block\"\n        },\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(?<=})\"\n    },\n    \"await-prefix\": {\n      \"name\": \"keyword.other.await.cs\",\n      \"match\": \"(await)\\\\s+\"\n    },\n    \"csharp-code-block\": {\n      \"name\": \"meta.structure.razor.csharp.codeblock\",\n      \"begin\": \"(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#razor-codeblock-body\"\n        }\n      ],\n      \"end\": \"(\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.curlybrace.close.cs\"\n        }\n      }\n    },\n    \"csharp-condition\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.open.cs\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.cs#local-variable-declaration\"\n        },\n        {\n          \"include\": \"source.cs#expression\"\n        },\n        {\n          \"include\": \"source.cs#punctuation-comma\"\n        },\n        {\n          \"include\": \"source.cs#punctuation-semicolon\"\n        }\n      ],\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.parenthesis.close.cs\"\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/rel.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"name\": \"rel\",\n  \"patterns\": [\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#single-line-comment-consuming-line-ending\"\n    },\n    {\n      \"include\": \"#deprecated-temporary\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#symbols\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#otherkeywords\"\n    },\n    {\n      \"include\": \"#types\"\n    },\n    {\n      \"include\": \"#constants\"\n    }\n  ],\n  \"repository\": {\n    \"strings\": {\n      \"name\": \"string.quoted.double.rel\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.rel\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.rel\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.rel\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.rel\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.rel\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.rel\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.rel\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.rel\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.rel\"\n            }\n          }\n        },\n        {\n          \"name\": \"comment.block.documentation.rel\",\n          \"begin\": \"doc\\\"\\\"\\\"\",\n          \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.rel\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.rel\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.rel\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.rel\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.rel\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.rel\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.rel\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.rel\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.rel\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.rel\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.rel\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.rel\"\n    },\n    \"deprecated-temporary\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.rel\",\n          \"match\": \"@inspect\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.rel\",\n          \"match\": \"(\\\\b(if|then|else|and|or|not|eq|neq|lt|lt_eq|gt|gt_eq)\\\\b)|(\\\\+|\\\\-|\\\\*|\\\\/|÷|\\\\^|\\\\%|\\\\=|\\\\!\\\\=|≠|\\\\<|\\\\<\\\\=|≤|\\\\>|\\\\>\\\\=|≥|\\\\&)|\\\\s+(end)\"\n        }\n      ]\n    },\n    \"symbols\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.parameter.rel\",\n          \"match\": \"(:[\\\\[_$[:alpha:]](\\\\]|[_$[:alnum:]]*))\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.rel\",\n          \"match\": \"(\\\\b(def|entity|bound|include|ic|forall|exists|∀|∃|return|module|^end)\\\\b)|(((\\\\<)?\\\\|(\\\\>)?)|∀|∃)\"\n        }\n      ]\n    },\n    \"otherkeywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.other.rel\",\n          \"match\": \"\\\\s*(@inline)\\\\s*|\\\\s*(@auto_number)\\\\s*|\\\\s*(function)\\\\s|(\\\\b(implies|select|from|∈|where|for|in)\\\\b)|(((\\\\<)?\\\\|(\\\\>)?)|∈)\"\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.type.rel\",\n          \"match\": \"(\\\\b(Symbol|Char|Bool|Rational|FixedDecimal|Float16|Float32|Float64|Int8|Int16|Int32|Int64|Int128|UInt8|UInt16|UInt32|UInt64|UInt128|Date|DateTime|Day|Week|Month|Year|Nanosecond|Microsecond|Millisecond|Second|Minute|Hour|FilePos|HashValue|AutoNumberValue)\\\\b)\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.rel\",\n          \"match\": \"(\\\\b(true|false)\\\\b)\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.rel\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/riscv.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"S\", \"s\", \"riscv\", \"asm\"],\n  \"keyEquivalent\": \"^~M\",\n  \"name\": \"riscv\",\n  \"patterns\": [\n    {\n      \"comment\": \"ok actually this are instructions, but one also could call them funtions…\",\n      \"match\": \"\\\\b(la|lb|lh|lw|ld|nop|li|mv|not|neg|negw|sext\\\\.w|seqz|snez|sltz|sgtz|beqz|bnez|blez|bgez|bltz|bgtz|bgt|ble|bgtu|bleu|j|jal|jr|ret|call|tail|fence|csr[r|w|s|c]|csr[w|s|c]i)\\\\b\",\n      \"name\": \"support.function.pseudo.riscv\"\n    },\n    {\n      \"match\": \"\\\\b(add|addw|auipc|lui|jalr|beq|bne|blt|bge|bltu|bgeu|lb|lh|lw|ld|lbu|lhu|sb|sh|sw|sd|addi|addiw|slti|sltiu|xori|ori|andi|slli|slliw|srli|srliw|srai|sraiw|sub|subw|sll|sllw|slt|sltu|xor|srl|srlw|sra|sraw|or|and|fence|fence\\\\.i|csrrw|csrrs|csrrc|csrrwi|csrrsi|csrrci)\\\\b\",\n      \"name\": \"support.function.riscv\"\n    },\n    {\n      \"comment\": \"priviledged instructions\",\n      \"match\": \"\\\\b(ecall|ebreak|sfence\\\\.vma|mret|sret|uret|wfi)\\\\b\",\n      \"name\": \"support.function.riscv.privileged\"\n    },\n    {\n      \"comment\": \"M extension (multiplication and division)\",\n      \"match\": \"\\\\b(mul|mulh|mulhsu|mulhu|div|divu|rem|remu|mulw|divw|divuw|remw|remuw)\\\\b\",\n      \"name\": \"support.function.riscv.m\"\n    },\n    {\n      \"comment\": \"C extension (compressed instructions)\",\n      \"match\": \"\\\\b(c\\\\.addi4spn|c\\\\.fld|c\\\\.lq|c\\\\.lw|c\\\\.flw|c\\\\.ld|c\\\\.fsd|c\\\\.sq|c\\\\.sw|c\\\\.fsw|c\\\\.sd|c\\\\.nop|c\\\\.addi|c\\\\.jal|c\\\\.addiw|c\\\\.li|c\\\\.addi16sp|c\\\\.lui|c\\\\.srli|c\\\\.srli64|c\\\\.srai|c\\\\.srai64|c\\\\.andi|c\\\\.sub|c\\\\.xor|c\\\\.or|c\\\\.and|c\\\\.subw|c\\\\.addw|c\\\\.j|c\\\\.beqz|c\\\\.bnez)\\\\b\",\n      \"name\": \"support.function.riscv.c\"\n    },\n    {\n      \"comment\": \"A extension (atomic instructions)\",\n      \"match\": \"\\\\b(lr\\\\.[w|d]|sc\\\\.[w|d]|amoswap\\\\.[w|d]|amoadd\\\\.[w|d]|amoxor\\\\.[w|d]|amoand\\\\.[w|d]|amoor\\\\.[w|d]|amomin\\\\.[w|d]|amomax\\\\.[w|d]|amominu\\\\.[w|d]|amomaxu\\\\.[w|d])\\\\b\",\n      \"name\": \"support.function.riscv.a\"\n    },\n    {\n      \"comment\": \"F extension (single precision floating point)\",\n      \"match\": \"\\\\b(flw|fsw|fmadd\\\\.s|fmsub\\\\.s|fnmsub\\\\.s|fnmadd\\\\.s|fadd\\\\.s|fsub\\\\.s|fmul\\\\.s|fdiv\\\\.s|fsqrt\\\\.s|fsgnj\\\\.s|fsgnjn\\\\.s|fsgnjx\\\\.s|fmin\\\\.s|fmax\\\\.s|fcvt\\\\.w\\\\.s|fcvt\\\\.wu\\\\.s|fmv\\\\.x\\\\.w|feq\\\\.s|flt\\\\.s|fle\\\\.s|fclass\\\\.s|fcvt\\\\.s\\\\.w|fcvt\\\\.s\\\\.wu|fmv\\\\.w\\\\.x|fcvt\\\\.l\\\\.s|fcvt\\\\.lu\\\\.s|fcvt\\\\.s\\\\.l|fcvt\\\\.s\\\\.lu)\\\\b\",\n      \"name\": \"support.function.riscv.f\"\n    },\n    {\n      \"comment\": \"D extension (double precision floating point)\",\n      \"match\": \"\\\\b(fld|fsd|fmadd\\\\.d|fmsub\\\\.d|fnmsub\\\\.d|fnmadd\\\\.d|fadd\\\\.d|fsub\\\\.d|fmul\\\\.d|fdiv\\\\.d|fsqrt\\\\.d|fsgnj\\\\.d|fsgnjn\\\\.d|fsgnjx\\\\.d|fmin\\\\.d|fmax\\\\.d|fcvt\\\\.s\\\\.d|fcvt\\\\.d\\\\.s|feq\\\\.d|flt\\\\.d|fle\\\\.d|fclass\\\\.d|fcvt\\\\.w\\\\.d|fcvt\\\\.wu\\\\.d|fcvt\\\\.d\\\\.w|fcvt\\\\.d\\\\.wu|fcvt\\\\.l\\\\.d|fcvt\\\\.lu\\\\.d|fmv\\\\.x\\\\.d|fcvt\\\\.d\\\\.l|fcvt\\\\.d\\\\.lu|fmv\\\\.d\\\\.x)\\\\b\",\n      \"name\": \"support.function.riscv.d\"\n    },\n    {\n      \"match\": \"\\\\.(skip|ascii|asciiz|byte|[2|4|8]byte|data|double|float|half|kdata|ktext|space|text|word|dword|dtprelword|dtpreldword|set\\\\s*(noat|at)|[s|u]leb128|string|incbin|zero|rodata|comm|common)\\\\b\",\n      \"name\": \"storage.type.riscv\"\n    },\n    {\n      \"match\": \"\\\\.(balign|align|p2align|extern|globl|global|local|pushsection|section|bss|insn|option|type|equ|macro|endm|file|ident)\\\\b\",\n      \"name\": \"storage.modifier.riscv\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.label.riscv\"\n        }\n      },\n      \"match\": \"\\\\b([A-Za-z0-9_]+):\",\n      \"name\": \"meta.function.label.riscv\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.riscv\"\n        }\n      },\n      \"match\": \"\\\\b(x([0-9]|1[0-9]|2[0-9]|3[0-1]))\\\\b\",\n      \"name\": \"variable.other.register.usable.by-number.riscv\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.riscv\"\n        }\n      },\n      \"match\": \"\\\\b(zero|ra|sp|gp|tp|t[0-6]|a[0-7]|s[0-9]|fp|s1[0-1])\\\\b\",\n      \"name\": \"variable.other.register.usable.by-name.riscv\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.riscv\"\n        }\n      },\n      \"match\": \"\\\\b(([umsh]|vs)status|([umsh]|vs)ie|([ums]|vs)tvec|([ums]|vs)scratch|([ums]|vs)epc|([ums]|vs)cause|([umsh]|vs)tval|([umsh]|vs)ip|fflags|frm|fcsr|m?cycleh?|timeh?|m?instreth?|m?hpmcounter([3-9]|[12][0-9]|3[01])h?|[msh][ei]deleg|[msh]counteren|v?satp|hgeie|hgeip|[hm]tinst|hvip|hgatp|htimedeltah?|mvendorid|marchid|mimpid|mhartid|misa|mstatush|mtval2|pmpcfg[0-3]|pmpaddr([0-9]|1[0-5])|mcountinhibit|mhpmevent([3-9]|[12][0-9]|3[01])|tselect|tdata[1-3]|dcsr|dpc|dscratch[0-1])\\\\b\",\n      \"name\": \"variable.other.csr.names.riscv\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.riscv\"\n        }\n      },\n      \"match\": \"\\\\bf([0-9]|1[0-9]|2[0-9]|3[0-1])\\\\b\",\n      \"name\": \"variable.other.register.usable.floating-point.riscv\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+\\\\.\\\\d+\\\\b\",\n      \"name\": \"constant.numeric.float.riscv\"\n    },\n    {\n      \"match\": \"\\\\b(\\\\d+|0(x|X)[a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.integer.riscv\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.riscv\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.riscv\"\n        }\n      },\n      \"name\": \"string.quoted.double.riscv\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[rnt\\\\\\\\\\\"]\",\n          \"name\": \"constant.character.escape.riscv\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.riscv\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.riscv\"\n        }\n      },\n      \"name\": \"string.quoted.single.riscv\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[rnt\\\\\\\\\\\"]\",\n          \"name\": \"constant.character.escape.riscv\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\/\\\\*\",\n      \"end\": \"\\\\*\\\\/\",\n      \"name\": \"comment.block\"\n    },\n    {\n      \"begin\": \"\\\\/\\\\/\",\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.double-slash\"\n    },\n    {\n      \"begin\": \"(?x)\\n          ^\\\\s*\\\\#\\\\s*(define)\\\\s+             # define\\n          ((?<id>[a-zA-Z_][a-zA-Z0-9_]*))  # macro name\\n          (?:                              # and optionally:\\n          (\\\\()                         # an open parenthesis\\n          (\\n          \\\\s* \\\\g<id> \\\\s*       # first argument\\n          ((,) \\\\s* \\\\g<id> \\\\s*)*  # additional arguments\\n          (?:\\\\.\\\\.\\\\.)?          # varargs ellipsis?\\n          )\\n          (\\\\))                         # a close parenthesis\\n          )?\\n        \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.define.c\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.preprocessor.c\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.c\"\n        },\n        \"5\": {\n          \"name\": \"variable.parameter.preprocessor.c\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.separator.parameters.c\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.parameters.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"name\": \"meta.preprocessor.macro.c\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        },\n        {\n          \"include\": \"$base\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(error|warning)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.error.c\"\n        }\n      },\n      \"end\": \"$\",\n      \"name\": \"meta.preprocessor.diagnostic.c\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(include|import)\\\\b\\\\s+\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.include.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"name\": \"meta.preprocessor.c.include\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.double.include.c\"\n        },\n        {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.c\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.c\"\n            }\n          },\n          \"name\": \"string.quoted.other.lt-gt.include.c\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^\\\\s*#\\\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.import.c\"\n        }\n      },\n      \"end\": \"(?=(?://|/\\\\*))|$\",\n      \"name\": \"meta.preprocessor.c\",\n      \"patterns\": [\n        {\n          \"match\": \"(?>\\\\\\\\\\\\s*\\\\n)\",\n          \"name\": \"punctuation.separator.continuation.c\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.riscv\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#|(\\\\/\\\\/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.riscv\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.riscv\"\n        }\n      ]\n    }\n  ],\n  \"scopeName\": \"source.riscv\",\n  \"uuid\": \"003223C7-B8D1-4B7F-BF91-5E0062B19B53\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/rst.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/trond-snekvik/vscode-rst/blob/master/syntaxes/rst.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/trond-snekvik/vscode-rst/commit/f0fe19ffde6509be52ad9267a57e1b3df665f072\",\n  \"scopeName\": \"source.rst\",\n  \"patterns\": [\n    {\n      \"include\": \"#body\"\n    }\n  ],\n  \"repository\": {\n    \"body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#title\"\n        },\n        {\n          \"include\": \"#inline-markup\"\n        },\n        {\n          \"include\": \"#anchor\"\n        },\n        {\n          \"include\": \"#line-block\"\n        },\n        {\n          \"include\": \"#replace-include\"\n        },\n        {\n          \"include\": \"#footnote\"\n        },\n        {\n          \"include\": \"#substitution\"\n        },\n        {\n          \"include\": \"#blocks\"\n        },\n        {\n          \"include\": \"#table\"\n        },\n        {\n          \"include\": \"#simple-table\"\n        },\n        {\n          \"include\": \"#options-list\"\n        }\n      ]\n    },\n    \"title\": {\n      \"match\": \"^(\\\\*{3,}|#{3,}|\\\\={3,}|~{3,}|\\\\+{3,}|-{3,}|`{3,}|\\\\^{3,}|:{3,}|\\\"{3,}|_{3,}|'{3,})$\",\n      \"name\": \"markup.heading\"\n    },\n    \"inline-markup\": {\n      \"patterns\": [\n        {\n          \"include\": \"#escaped\"\n        },\n        {\n          \"include\": \"#ignore\"\n        },\n        {\n          \"include\": \"#ref\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#monospaced\"\n        },\n        {\n          \"include\": \"#citation\"\n        },\n        {\n          \"include\": \"#bold\"\n        },\n        {\n          \"include\": \"#italic\"\n        },\n        {\n          \"include\": \"#list\"\n        },\n        {\n          \"include\": \"#macro\"\n        },\n        {\n          \"include\": \"#reference\"\n        },\n        {\n          \"include\": \"#footnote-ref\"\n        }\n      ]\n    },\n    \"ignore\": {\n      \"patterns\": [\n        {\n          \"match\": \"'[`*]+'\"\n        },\n        {\n          \"match\": \"<[`*]+>\"\n        },\n        {\n          \"match\": \"{[`*]+}\"\n        },\n        {\n          \"match\": \"\\\\([`*]+\\\\)\"\n        },\n        {\n          \"match\": \"\\\\[[`*]+\\\\]\"\n        },\n        {\n          \"match\": \"\\\"[`*]+\\\"\"\n        }\n      ]\n    },\n    \"table\": {\n      \"begin\": \"^\\\\s*\\\\+[=+-]+\\\\+\\\\s*$\",\n      \"end\": \"^(?![+|])\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.table\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"[=+|-]\",\n          \"name\": \"keyword.control.table\"\n        }\n      ]\n    },\n    \"simple-table\": {\n      \"match\": \"^[=\\\\s]+$\",\n      \"name\": \"keyword.control.table\"\n    },\n    \"ref\": {\n      \"begin\": \"(:ref:)`\",\n      \"end\": \"`|^\\\\s*$\",\n      \"name\": \"entity.name.tag\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"<.*?>\",\n          \"name\": \"markup.underline.link\"\n        }\n      ]\n    },\n    \"reference\": {\n      \"match\": \"[\\\\w-]*[a-zA-Z\\\\d-]__?\\\\b\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"macro\": {\n      \"match\": \"\\\\|[^\\\\|]+\\\\|\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"literal\": {\n      \"match\": \"(:\\\\S+:)(`.*?`\\\\\\\\?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag\"\n        }\n      }\n    },\n    \"monospaced\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)``[^\\\\s`]\",\n      \"end\": \"``|^\\\\s*$\",\n      \"name\": \"string.interpolated\"\n    },\n    \"citation\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)`[^\\\\s`]\",\n      \"end\": \"`_{,2}|^\\\\s*$\",\n      \"name\": \"entity.name.tag\",\n      \"applyEndPatternLast\": 0\n    },\n    \"bold\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)\\\\*{2}[^\\\\s*]\",\n      \"end\": \"\\\\*{2}|^\\\\s*$\",\n      \"name\": \"markup.bold\"\n    },\n    \"italic\": {\n      \"begin\": \"(?<=[\\\\s\\\"'(\\\\[{<]|^)\\\\*[^\\\\s*]\",\n      \"end\": \"\\\\*|^\\\\s*$\",\n      \"name\": \"markup.italic\"\n    },\n    \"escaped\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape\"\n    },\n    \"list\": {\n      \"match\": \"^\\\\s*(\\\\d+\\\\.|\\\\* -|[a-zA-Z#]\\\\.|[iIvVxXmMcC]+\\\\.|\\\\(\\\\d+\\\\)|\\\\d+\\\\)|[*+-])\\\\s+\",\n      \"name\": \"keyword.control\"\n    },\n    \"line-block\": {\n      \"match\": \"^\\\\|\\\\s+\",\n      \"name\": \"keyword.control\"\n    },\n    \"raw-html\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+raw\\\\s*::)\\\\s+(html)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"text.html.derivative\"\n        }\n      ]\n    },\n    \"anchor\": {\n      \"match\": \"^\\\\.{2}\\\\s+(_[^:]+:)\\\\s*\",\n      \"name\": \"entity.name.tag.anchor\"\n    },\n    \"replace-include\": {\n      \"match\": \"^\\\\s*(\\\\.{2})\\\\s+(\\\\|[^\\\\|]+\\\\|)\\\\s+(replace::)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control\"\n        }\n      }\n    },\n    \"footnote\": {\n      \"match\": \"^\\\\s*\\\\.{2}\\\\s+\\\\[(?:[\\\\w\\\\.-]+|[#*]|#\\\\w+)\\\\]\\\\s+\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"footnote-ref\": {\n      \"match\": \"\\\\[(?:[\\\\w\\\\.-]+|[#*])\\\\]_\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"substitution\": {\n      \"match\": \"^\\\\.{2}\\\\s*\\\\|([^|]+)\\\\|\",\n      \"name\": \"entity.name.tag\"\n    },\n    \"options-list\": {\n      \"match\": \"^((?:-\\\\w|--[\\\\w-]+|/\\\\w+)(?:,? ?[\\\\w-]+)*)(?:  |\\\\t|$)\",\n      \"name\": \"variable.parameter\"\n    },\n    \"blocks\": {\n      \"patterns\": [\n        {\n          \"include\": \"#domains\"\n        },\n        {\n          \"include\": \"#doctest\"\n        },\n        {\n          \"include\": \"#code-block-cpp\"\n        },\n        {\n          \"include\": \"#code-block-py\"\n        },\n        {\n          \"include\": \"#code-block-console\"\n        },\n        {\n          \"include\": \"#code-block-javascript\"\n        },\n        {\n          \"include\": \"#code-block-yaml\"\n        },\n        {\n          \"include\": \"#code-block-cmake\"\n        },\n        {\n          \"include\": \"#code-block-kconfig\"\n        },\n        {\n          \"include\": \"#code-block-ruby\"\n        },\n        {\n          \"include\": \"#code-block-dts\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#doctest-block\"\n        },\n        {\n          \"include\": \"#raw-html\"\n        },\n        {\n          \"include\": \"#block\"\n        },\n        {\n          \"include\": \"#literal-block\"\n        },\n        {\n          \"include\": \"#block-comment\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"begin\": \"^(\\\\s*)\\\\.{2}\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"name\": \"comment.block\"\n    },\n    \"literal-block\": {\n      \"begin\": \"^(\\\\s*)(.*)(::)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#inline-markup\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control\"\n        }\n      }\n    },\n    \"block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+\\\\S+::)(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"variable\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"block-param\": {\n      \"patterns\": [\n        {\n          \"match\": \"(:param\\\\s+(.+?):)(?:\\\\s|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter\"\n            }\n          }\n        },\n        {\n          \"match\": \"(:.+?:)(?:$|\\\\s+(.*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(0x[a-fA-F\\\\d]+|\\\\d+)\\\\b\",\n                  \"name\": \"constant.numeric\"\n                },\n                {\n                  \"include\": \"#inline-markup\"\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"domains\": {\n      \"patterns\": [\n        {\n          \"include\": \"#domain-cpp\"\n        },\n        {\n          \"include\": \"#domain-py\"\n        },\n        {\n          \"include\": \"#domain-auto\"\n        },\n        {\n          \"include\": \"#domain-js\"\n        }\n      ]\n    },\n    \"domain-cpp\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(?:cpp|c):(?:class|struct|function|member|var|type|enum|enum-struct|enum-class|enumerator|union|concept)::)\\\\s*(?:(@\\\\w+)|(.*))\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag\"\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.cpp\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-py\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+py:(?:module|function|data|exception|class|attribute|property|method|staticmethod|classmethod|decorator|decoratormethod)::)\\\\s*(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-auto\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+auto(?:class|module|exception|function|decorator|data|method|attribute|property)::)\\\\s*(.*)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.py\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"domain-js\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+js:\\\\w+::)\\\\s*(.*)\",\n      \"end\": \"^(?!\\\\1[ \\\\t]|$)\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"#body\"\n        }\n      ]\n    },\n    \"doctest\": {\n      \"begin\": \"^(>>>)\\\\s*(.*)\",\n      \"end\": \"^\\\\s*$\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        }\n      }\n    },\n    \"code-block-cpp\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(c|c\\\\+\\\\+|cpp|C|C\\\\+\\\\+|CPP|Cpp)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.cpp\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.cpp\"\n        }\n      ]\n    },\n    \"code-block-console\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(console|shell|bash)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.console\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.shell\"\n        }\n      ]\n    },\n    \"code-block-py\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(python)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.py\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"code-block-javascript\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(javascript)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.js\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.js\"\n        }\n      ]\n    },\n    \"code-block-yaml\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(ya?ml)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.yaml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.yaml\"\n        }\n      ]\n    },\n    \"code-block-cmake\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(cmake)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.cmake\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.cmake\"\n        }\n      ]\n    },\n    \"code-block-kconfig\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*([kK]config)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.kconfig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.kconfig\"\n        }\n      ]\n    },\n    \"code-block-ruby\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(ruby)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.ruby\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.ruby\"\n        }\n      ]\n    },\n    \"code-block-dts\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\\\\s*(dts|DTS|devicetree)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.codeblock.dts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.dts\"\n        }\n      ]\n    },\n    \"code-block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+(code|code-block)::)\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        }\n      ]\n    },\n    \"doctest-block\": {\n      \"begin\": \"^(\\\\s*)(\\\\.{2}\\\\s+doctest::)\\\\s*$\",\n      \"while\": \"^\\\\1(?=\\\\s)|^\\\\s*$\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-param\"\n        },\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    }\n  },\n  \"name\": \"rst\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ruby.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/ruby.tmbundle/blob/master/Syntaxes/Ruby.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/ruby.tmbundle/commit/efcb8941c701343f1b2e9fb105c678152fea6892\",\n  \"name\": \"ruby\",\n  \"scopeName\": \"source.ruby\",\n  \"comment\": \"\\n\\tTODO: unresolved issues\\n\\n\\ttext:\\n\\t\\\"p <<end\\n\\tprint me!\\n\\tend\\\"\\n\\tsymptoms:\\n\\tnot recognized as a heredoc\\n\\tsolution:\\n\\tthere is no way to distinguish perfectly between the << operator and the start\\n\\tof a heredoc. Currently, we require assignment to recognize a heredoc. More\\n\\trefinement is possible.\\n\\t• Heredocs with indented terminators (<<-) are always distinguishable, however.\\n\\t• Nested heredocs are not really supportable at present\\n\\n\\ttext:\\n\\tprint <<-'THERE' \\n\\tThis is single quoted. \\n\\tThe above used #{Time.now} \\n\\tTHERE \\n\\tsymtoms:\\n\\tFrom Programming Ruby p306; should be a non-interpolated heredoc.\\n\\t\\n    text:\\n    val?(a):p(b)\\n    val?'a':'b'\\n    symptoms:\\n    ':p' is recognized as a symbol.. its 2 things ':' and 'p'.\\n    :'b' has same problem.\\n    solution:\\n    ternary operator rule, precedence stuff, symbol rule.\\n    but also consider 'a.b?(:c)' ??\\n\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.class.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.ruby\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.other.ruby\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.inherited-class.ruby\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.other.ruby\"\n        },\n        \"6\": {\n          \"name\": \"variable.other.object.ruby\"\n        }\n      },\n      \"match\": \"^\\\\s*(class)\\\\s+(?:([.a-zA-Z0-9_:]+)(?:\\\\s*(<)\\\\s*([.a-zA-Z0-9_:]+))?|(<<)\\\\s*([.a-zA-Z0-9_:]+))\",\n      \"name\": \"meta.class.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.module.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.module.ruby\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.inherited-class.module.first.ruby\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.inherited-class.module.second.ruby\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        },\n        \"7\": {\n          \"name\": \"entity.other.inherited-class.module.third.ruby\"\n        },\n        \"8\": {\n          \"name\": \"punctuation.separator.inheritance.ruby\"\n        }\n      },\n      \"match\": \"^\\\\s*(module)\\\\s+(([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))?([A-Z]\\\\w*(::))*[A-Z]\\\\w*)\",\n      \"name\": \"meta.module.ruby\"\n    },\n    {\n      \"comment\": \"else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.\",\n      \"match\": \"(?<!\\\\.)\\\\belse(\\\\s)+if\\\\b\",\n      \"name\": \"invalid.deprecated.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols as hash key (1.9 syntax)\",\n      \"match\": \"(?>[a-zA-Z_]\\\\w*(?>[?!])?)(:)(?!:)\",\n      \"name\": \"constant.other.symbol.hashkey.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols as hash key (1.8 syntax)\",\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_]\\\\w*(?>[?!])?)(?=\\\\s*=>)\",\n      \"name\": \"constant.other.symbol.hashkey.ruby\"\n    },\n    {\n      \"comment\": \"everything being a reserved word, not a value and needing a 'end' is a..\",\n      \"match\": \"(?<!\\\\.)\\\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.ruby\"\n    },\n    {\n      \"comment\": \"contextual smart pair support for block parameters\",\n      \"match\": \"(?<!\\\\.)\\\\bdo\\\\b\",\n      \"name\": \"keyword.control.start-block.ruby\"\n    },\n    {\n      \"comment\": \"contextual smart pair support\",\n      \"match\": \"(?<=\\\\{)(\\\\s+)\",\n      \"name\": \"meta.syntax.ruby.start-block\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(alias|alias_method|block_given[?]|break|defined[?]|iterator[?]|next|redo|retry|return|super|undef|yield)(\\\\b|(?<=[?]))(?![?!])\",\n      \"name\": \"keyword.control.pseudo-method.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(nil|true|false)\\\\b(?![?!])\",\n      \"name\": \"constant.language.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(__(dir|FILE|LINE)__)\\\\b(?![?!])\",\n      \"name\": \"variable.language.ruby\"\n    },\n    {\n      \"begin\": \"^__END__\\\\n\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"string.unquoted.program-block.ruby\"\n        }\n      },\n      \"comment\": \"__END__ marker\",\n      \"contentName\": \"text.plain\",\n      \"end\": \"(?=not)impossible\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=<?xml|<(?i:html\\\\b)|!DOCTYPE (?i:html\\\\b))\",\n          \"end\": \"(?=not)impossible\",\n          \"name\": \"text.html.embedded.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(self)\\\\b(?![?!])\",\n      \"name\": \"variable.language.self.ruby\"\n    },\n    {\n      \"comment\": \" everything being a method but having a special function is a..\",\n      \"match\": \"\\\\b(initialize|new|loop|include|extend|prepend|fail|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|private_class_method|module_function|public|public_class_method|protected|refine|using)\\\\b(?![?!])\",\n      \"name\": \"keyword.other.special-method.ruby\"\n    },\n    {\n      \"begin\": \"\\\\b(?<!\\\\.|::)(require|require_relative)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.special-method.ruby\"\n        }\n      },\n      \"end\": \"$|(?=#|\\\\})\",\n      \"name\": \"meta.require.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.instance.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(@@)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.class.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(\\\\$)[a-zA-Z_]\\\\w*\",\n      \"name\": \"variable.other.readwrite.global.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.ruby\"\n        }\n      },\n      \"match\": \"(\\\\$)(!|@|&|`|'|\\\\+|\\\\d+|~|=|/|\\\\\\\\|,|;|\\\\.|<|>|_|\\\\*|\\\\$|\\\\?|:|\\\"|-[0adFiIlpvw])\",\n      \"name\": \"variable.other.readwrite.global.pre-defined.ruby\"\n    },\n    {\n      \"begin\": \"\\\\b(ENV)\\\\[\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.other.constant.ruby\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"name\": \"meta.environment-variable.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*(?=((\\\\.|::)[A-Za-z]|\\\\[))\",\n      \"name\": \"support.class.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(abort|at_exit|autoload[?]?|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|exit!|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)(\\\\b|(?<=[?!]))(?![?!])\",\n      \"name\": \"support.function.kernel.ruby\"\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.constant.ruby\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         \\\\s*(\\\\()                                                        # the openning parenthesis for arguments\\n\\t\\t\\t        \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ruby\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.ruby\"\n        }\n      },\n      \"comment\": \"the method pattern comes from the symbol pattern, see there for a explaination\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.ruby\"\n        }\n      },\n      \"name\": \"meta.function.method.with-arguments.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=[&*_a-zA-Z])\",\n          \"end\": \"(?=[,)])\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.variable.ruby\"\n                },\n                \"2\": {\n                  \"name\": \"constant.other.symbol.hashkey.parameter.function.ruby\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.constant.ruby\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.ruby\"\n                }\n              },\n              \"match\": \"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))\"\n            },\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"braces\": {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.ruby\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        \"parens\": {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.end.ruby\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parens\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      }\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                      # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\s+                                              # the def keyword\\n\\t\\t\\t         ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                   # a method name prefix\\n\\t\\t\\t           (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                              # the method name\\n\\t\\t\\t           |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) )  # …or an operator method\\n\\t\\t\\t         [ \\\\t]                                                          # the space separating the arguments\\n\\t\\t\\t         (?=[ \\\\t]*[^\\\\s#;])                                              # make sure arguments and not a comment follow\\n\\t\\t\\t        \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.ruby\"\n        }\n      },\n      \"comment\": \"same as the previous rule, but without parentheses around the arguments\",\n      \"end\": \"$\",\n      \"name\": \"meta.function.method.with-arguments.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?![\\\\s,])\",\n          \"end\": \"(?=,|$)\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.variable.ruby\"\n                },\n                \"2\": {\n                  \"name\": \"constant.other.symbol.hashkey.parameter.function.ruby\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.constant.ruby\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.ruby\"\n                }\n              },\n              \"match\": \"\\\\G([&*]?)(?:([_a-zA-Z]\\\\w*(:))|([_a-zA-Z]\\\\w*))\",\n              \"name\": \"variable.parameter.function.ruby\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.def.ruby\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.ruby\"\n        }\n      },\n      \"comment\": \" the optional name is just to catch the def also without a method-name\",\n      \"match\": \"(?x)\\n\\t\\t\\t         (?=def\\\\b)                                                           # an optimization to help Oniguruma fail fast\\n\\t\\t\\t         (?<=^|\\\\s)(def)\\\\b                                                    # the def keyword\\n\\t\\t\\t         ( \\\\s+                                                               # an optional group of whitespace followed by…\\n\\t\\t\\t           ( (?>[a-zA-Z_]\\\\w*(?>\\\\.|::))?                                      # a method name prefix\\n\\t\\t\\t             (?>[a-zA-Z_]\\\\w*(?>[?!]|=(?!>))?                                 # the method name\\n\\t\\t\\t             |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\\\|^]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?) ) )?  # …or an operator method\\n\\t\\t\\t        \",\n      \"name\": \"meta.function.method.without-arguments.ruby\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d(?>_?\\\\d)*(?=\\\\.\\\\d|[eE])(\\\\.\\\\d(?>_?\\\\d)*)?([eE][-+]?\\\\d(?>_?\\\\d)*)?r?i?\\\\b\",\n      \"name\": \"constant.numeric.float.ruby\"\n    },\n    {\n      \"match\": \"\\\\b(0|(0[dD]\\\\d|[1-9])(?>_?\\\\d)*)r?i?\\\\b\",\n      \"name\": \"constant.numeric.integer.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0[xX]\\\\h(?>_?\\\\h)*r?i?\\\\b\",\n      \"name\": \"constant.numeric.hex.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0[bB][01](?>_?[01])*r?i?\\\\b\",\n      \"name\": \"constant.numeric.binary.ruby\"\n    },\n    {\n      \"match\": \"\\\\b0([oO]?[0-7](?>_?[0-7])*)?r?i?\\\\b\",\n      \"name\": \"constant.numeric.octal.ruby\"\n    },\n    {\n      \"begin\": \":'\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"end\": \"'\",\n      \"name\": \"constant.other.symbol.single-quoted.ruby\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\['\\\\\\\\]\",\n          \"name\": \"constant.character.escape.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \":\\\"\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"name\": \"constant.other.symbol.double-quoted.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"Needs higher precedence than regular expressions.\",\n      \"match\": \"(?<!\\\\()/=\",\n      \"name\": \"keyword.operator.assignment.augmented.ruby\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"single quoted string (does not allow interpolation)\",\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.quoted.single.ruby\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\'|\\\\\\\\\\\\\\\\\",\n          \"name\": \"constant.character.escape.ruby\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"double quoted string (allows for interpolation)\",\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.quoted.double.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"`\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"execute string (allows for interpolation)\",\n      \"end\": \"`\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.interpolated.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#percent_literals\"\n    },\n    {\n      \"begin\": \"(?x)\\n\\t\\t\\t   (?:\\n\\t\\t\\t     ^                      # beginning of line\\n\\t\\t\\t   | (?<=                   # or look-behind on:\\n\\t\\t\\t       [=>~(?:\\\\[,|&;]\\n\\t\\t\\t     | [\\\\s;]if\\\\s\\t\\t\\t# keywords\\n\\t\\t\\t     | [\\\\s;]elsif\\\\s\\n\\t\\t\\t     | [\\\\s;]while\\\\s\\n\\t\\t\\t     | [\\\\s;]unless\\\\s\\n\\t\\t\\t     | [\\\\s;]when\\\\s\\n\\t\\t\\t     | [\\\\s;]assert_match\\\\s\\n\\t\\t\\t     | [\\\\s;]or\\\\s\\t\\t\\t# boolean opperators\\n\\t\\t\\t     | [\\\\s;]and\\\\s\\n\\t\\t\\t     | [\\\\s;]not\\\\s\\n\\t\\t\\t     | [\\\\s.]index\\\\s\\t\\t\\t# methods\\n\\t\\t\\t     | [\\\\s.]scan\\\\s\\n\\t\\t\\t     | [\\\\s.]sub\\\\s\\n\\t\\t\\t     | [\\\\s.]sub!\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub\\\\s\\n\\t\\t\\t     | [\\\\s.]gsub!\\\\s\\n\\t\\t\\t     | [\\\\s.]match\\\\s\\n\\t\\t\\t     )\\n\\t\\t\\t   | (?<=                  # or a look-behind with line anchor:\\n\\t\\t\\t        ^when\\\\s            # duplication necessary due to limits of regex\\n\\t\\t\\t      | ^if\\\\s\\n\\t\\t\\t      | ^elsif\\\\s\\n\\t\\t\\t      | ^while\\\\s\\n\\t\\t\\t      | ^unless\\\\s\\n\\t\\t\\t      )\\n\\t\\t\\t   )\\n\\t\\t\\t   \\\\s*((/))(?![*+{}?])\\n\\t\\t\\t\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.regexp.classic.ruby\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.string.ruby\"\n        }\n      },\n      \"comment\": \"regular expressions (normal)\\n\\t\\t\\twe only start a regexp if the character before it (excluding whitespace)\\n\\t\\t\\tis what we think is before a regexp\\n\\t\\t\\t\",\n      \"contentName\": \"string.regexp.classic.ruby\",\n      \"end\": \"((/[eimnosux]*))\",\n      \"patterns\": [\n        {\n          \"include\": \"#regex_sub\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.ruby\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(?<!:)(:)(?>[a-zA-Z_]\\\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\\\|]|\\\\*\\\\*?|=?~|[-+]@?|\\\\[\\\\]=?|(@@?|\\\\$)[a-zA-Z_]\\\\w*)\",\n      \"name\": \"constant.other.symbol.ruby\"\n    },\n    {\n      \"begin\": \"^=begin\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.ruby\"\n        }\n      },\n      \"comment\": \"multiline comments\",\n      \"end\": \"^=end\",\n      \"name\": \"comment.block.documentation.ruby\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ruby\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ruby\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"\\n\\t\\t\\tmatches questionmark-letters.\\n\\n\\t\\t\\texamples (1st alternation = hex):\\n\\t\\t\\t?\\\\x1     ?\\\\x61\\n\\n\\t\\t\\texamples (2nd alternation = octal):\\n\\t\\t\\t?\\\\0      ?\\\\07     ?\\\\017\\n\\n\\t\\t\\texamples (3rd alternation = escaped):\\n\\t\\t\\t?\\\\n      ?\\\\b\\n\\n\\t\\t\\texamples (4th alternation = meta-ctrl):\\n\\t\\t\\t?\\\\C-a    ?\\\\M-a    ?\\\\C-\\\\M-\\\\C-\\\\M-a\\n\\n\\t\\t\\texamples (4th alternation = normal):\\n\\t\\t\\t?a       ?A       ?0 \\n\\t\\t\\t?*       ?\\\"       ?( \\n\\t\\t\\t?.       ?#\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\tthe negative lookbehind prevents against matching\\n\\t\\t\\tp(42.tainted?)\\n\\t\\t\\t\",\n      \"match\": \"(?<!\\\\w)\\\\?(\\\\\\\\(x\\\\h{1,2}(?!\\\\h)\\\\b|0[0-7]{0,2}(?![0-7])\\\\b|[^x0MC])|(\\\\\\\\[MC]-)+\\\\w|[^\\\\s\\\\\\\\])\",\n      \"name\": \"constant.numeric.ruby\"\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded html\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)HTML)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"text.html\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"text.html.basic\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)XML)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded xml\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.xml\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)XML)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"text.xml\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"text.xml\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded sql\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.sql\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)SQL)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.sql\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.sql\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded css\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.css\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CSS)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.css\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.css\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded c++\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.c++\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)CPP)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.c++\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.c++\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)C)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded c\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.c\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)C)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.c\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.c\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded javascript\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.js\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:JS|JAVASCRIPT))\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.js\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.js\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded jQuery javascript\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.js.jquery\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)JQUERY)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.js.jquery\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.js.jquery\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded shell\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.shell\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)(?:SH|SHELL))\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.shell\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.shell\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)LUA)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded lua\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.lua\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)LUA)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.lua\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.lua\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?=(?><<[-~](\\\"?)((?:[_\\\\w]+_|)RUBY)\\\\b\\\\1))\",\n      \"comment\": \"Heredoc with embedded ruby\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.embedded.block.ruby\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?><<[-~](\\\"?)((?:[_\\\\w]+_|)RUBY)\\\\b\\\\1)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"\\\\s*\\\\2$\\\\n?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#heredoc\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            },\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?>=\\\\s*<<(\\\\w+))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"end\": \"^\\\\1$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.unquoted.heredoc.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?><<[-~](\\\\w+))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ruby\"\n        }\n      },\n      \"comment\": \"heredoc with indented terminator\",\n      \"end\": \"\\\\s*\\\\1$\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.ruby\"\n        }\n      },\n      \"name\": \"string.unquoted.heredoc.ruby\",\n      \"patterns\": [\n        {\n          \"include\": \"#heredoc\"\n        },\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?<=\\\\{|do|\\\\{\\\\s|do\\\\s)(\\\\|)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.arguments.ruby\"\n        }\n      },\n      \"end\": \"(?<!\\\\|)(\\\\|)(?!\\\\|)\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        },\n        {\n          \"match\": \"[_a-zA-Z][_a-zA-Z0-9]*\",\n          \"name\": \"variable.other.block.ruby\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.variable.ruby\"\n        }\n      ]\n    },\n    {\n      \"match\": \"=>\",\n      \"name\": \"punctuation.separator.key-value\"\n    },\n    {\n      \"match\": \"->\",\n      \"name\": \"support.function.kernel.lambda.ruby\"\n    },\n    {\n      \"match\": \"<<=|%=|&{1,2}=|\\\\*=|\\\\*\\\\*=|\\\\+=|-=|\\\\^=|\\\\|{1,2}=|<<\",\n      \"name\": \"keyword.operator.assignment.augmented.ruby\"\n    },\n    {\n      \"match\": \"<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\\\t])\\\\?\",\n      \"name\": \"keyword.operator.comparison.ruby\"\n    },\n    {\n      \"match\": \"(?<!\\\\.)\\\\b(and|not|or)\\\\b(?![?!])\",\n      \"name\": \"keyword.operator.logical.ruby\"\n    },\n    {\n      \"comment\": \"Make sure this goes after assignment and comparison\",\n      \"match\": \"(?<=^|[ \\\\t])!|&&|\\\\|\\\\||\\\\^\",\n      \"name\": \"keyword.operator.logical.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.method.ruby\"\n        }\n      },\n      \"comment\": \"Safe navigation operator - Added in 2.3\",\n      \"match\": \"(&\\\\.)\\\\s*(?![A-Z])\"\n    },\n    {\n      \"match\": \"(%|&|\\\\*\\\\*|\\\\*|\\\\+|-|/)\",\n      \"name\": \"keyword.operator.arithmetic.ruby\"\n    },\n    {\n      \"match\": \"=\",\n      \"name\": \"keyword.operator.assignment.ruby\"\n    },\n    {\n      \"match\": \"\\\\||~|>>\",\n      \"name\": \"keyword.operator.other.ruby\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.separator.statement.ruby\"\n    },\n    {\n      \"match\": \",\",\n      \"name\": \"punctuation.separator.object.ruby\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.namespace.ruby\"\n        }\n      },\n      \"comment\": \"Mark as namespace separator if double colons followed by capital letter\",\n      \"match\": \"(::)\\\\s*(?=[A-Z])\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.method.ruby\"\n        }\n      },\n      \"comment\": \"Mark as method separator if double colons not followed by capital letter\",\n      \"match\": \"(\\\\.|::)\\\\s*(?![A-Z])\"\n    },\n    {\n      \"comment\": \"Must come after method and constant separators to prefer double colons\",\n      \"match\": \":\",\n      \"name\": \"punctuation.separator.other.ruby\"\n    },\n    {\n      \"match\": \"\\\\{\",\n      \"name\": \"punctuation.section.scope.begin.ruby\"\n    },\n    {\n      \"match\": \"\\\\}\",\n      \"name\": \"punctuation.section.scope.end.ruby\"\n    },\n    {\n      \"match\": \"\\\\[\",\n      \"name\": \"punctuation.section.array.begin.ruby\"\n    },\n    {\n      \"match\": \"\\\\]\",\n      \"name\": \"punctuation.section.array.end.ruby\"\n    },\n    {\n      \"match\": \"\\\\(|\\\\)\",\n      \"name\": \"punctuation.section.function.ruby\"\n    }\n  ],\n  \"repository\": {\n    \"escaped_char\": {\n      \"match\": \"\\\\\\\\(?:[0-7]{1,3}|x[\\\\da-fA-F]{1,2}|.)\",\n      \"name\": \"constant.character.escape.ruby\"\n    },\n    \"heredoc\": {\n      \"begin\": \"^<<[-~]?\\\\w+\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"interpolated_ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"#\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.ruby\"\n            }\n          },\n          \"contentName\": \"source.ruby\",\n          \"end\": \"(\\\\})\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.ruby\"\n            },\n            \"1\": {\n              \"name\": \"source.ruby\"\n            }\n          },\n          \"name\": \"meta.embedded.line.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#nest_curly_and_self\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ],\n          \"repository\": {\n            \"nest_curly_and_self\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.scope.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#nest_curly_and_self\"\n                    }\n                  ]\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.instance.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#@@)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.class.ruby\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.ruby\"\n            }\n          },\n          \"match\": \"(#\\\\$)[a-zA-Z_]\\\\w*\",\n          \"name\": \"variable.other.readwrite.global.ruby\"\n        }\n      ]\n    },\n    \"percent_literals\": {\n      \"patterns\": [\n        {\n          \"begin\": \"%i(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.symbol.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#symbol\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"symbol\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\[ ]\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%I(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.symbol.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#symbol\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#symbol\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.other.symbol.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#symbol\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"symbol\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=\\\\\\\\|#\\\\{)\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"constant.other.symbol.ruby\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escaped_char\"\n                    },\n                    {\n                      \"include\": \"#interpolated_ruby\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"constant.other.symbol.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%q(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.quoted.other.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%Q?(?:([(\\\\[{<])|([^\\\\w\\\\s=]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.quoted.other.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%r(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"([)\\\\]}>]\\\\2|\\\\1\\\\2)[eimnosux]*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.regexp.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#regex_sub\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#regex_sub\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%s(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.constant.end.ruby\"\n            }\n          },\n          \"name\": \"constant.other.symbol.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)|\\\\\\\\\\\\\\\\\",\n                  \"name\": \"constant.character.escape.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%w(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.string.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\<|\\\\\\\\>\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\{|\\\\\\\\\\\\}\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\[|\\\\\\\\\\\\]\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\(|\\\\\\\\\\\\)\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"string\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"constant.character.escape.ruby\"\n                    }\n                  },\n                  \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\[ ]\",\n                  \"name\": \"string.other.ruby\"\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"string.other.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%W(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.array.end.ruby\"\n            }\n          },\n          \"name\": \"meta.array.string.interpolated.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                },\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"<\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\{\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\[\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\(\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"string.other.ruby\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    },\n                    {\n                      \"include\": \"#string\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"string\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(?=\\\\\\\\|#\\\\{)\",\n                  \"end\": \"(?!\\\\G)\",\n                  \"name\": \"string.other.ruby\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#escaped_char\"\n                    },\n                    {\n                      \"include\": \"#interpolated_ruby\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\S\\\\w*\",\n                  \"name\": \"string.other.ruby\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"begin\": \"%x(?:([(\\\\[{<])|([^\\\\w\\\\s]|_))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ruby\"\n            }\n          },\n          \"end\": \"[)\\\\]}>]\\\\2|\\\\1\\\\2\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.ruby\"\n            }\n          },\n          \"name\": \"string.interpolated.percent.ruby\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?<=\\\\()(?!\\\\))\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\[)(?!\\\\])\",\n              \"end\": \"(?=\\\\])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#brackets\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=\\\\{)(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#braces\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G(?<=<)(?!>)\",\n              \"end\": \"(?=>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#angles\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#escaped_char\"\n            },\n            {\n              \"include\": \"#interpolated_ruby\"\n            }\n          ],\n          \"repository\": {\n            \"angles\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"<\",\n                  \"end\": \">\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#angles\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"braces\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"end\": \"\\\\}\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#braces\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"brackets\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\[\",\n                  \"end\": \"\\\\]\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#brackets\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"parens\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#escaped_char\"\n                },\n                {\n                  \"include\": \"#interpolated_ruby\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#parens\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        }\n      ]\n    },\n    \"regex_sub\": {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolated_ruby\"\n        },\n        {\n          \"include\": \"#escaped_char\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.quantifier.begin.ruby\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.quantifier.end.ruby\"\n            }\n          },\n          \"match\": \"(\\\\{)\\\\d+(,\\\\d+)?(\\\\})\",\n          \"name\": \"keyword.operator.quantifier.ruby\"\n        },\n        {\n          \"begin\": \"\\\\[\\\\^?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.character-class.end.ruby\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\\\\?#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.ruby\"\n            }\n          },\n          \"name\": \"comment.line.number-sign.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#escaped_char\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.ruby\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"name\": \"meta.group.regexp.ruby\",\n          \"patterns\": [\n            {\n              \"include\": \"#regex_sub\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|\\\\s)(#)\\\\s(?=[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.ruby\"\n            }\n          },\n          \"comment\": \"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\",\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.number-sign.ruby\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/rust.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/dustypomerleau/rust-syntax/blob/master/syntaxes/rust.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/dustypomerleau/rust-syntax/commit/20462d50ff97338f42c6b64c3f421c634fd60734\",\n  \"name\": \"rust\",\n  \"scopeName\": \"source.rust\",\n  \"patterns\": [\n    {\n      \"comment\": \"boxed slice literal\",\n      \"begin\": \"(<)(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.brackets.angle.rust\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.brackets.square.rust\"\n        }\n      },\n      \"end\": \">\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.brackets.angle.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#gtypes\"\n        },\n        {\n          \"include\": \"#lvariables\"\n        },\n        {\n          \"include\": \"#lifetimes\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#types\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro type metavariables\",\n      \"name\": \"meta.macro.metavariable.type.rust\",\n      \"match\": \"(\\\\$)((crate)|([A-Z][A-Za-z0-9_]*))((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.dollar.rust\"\n        },\n        \"3\": {\n          \"name\": \"keyword.other.crate.rust\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.metavariable.rust\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.key-value.rust\"\n        },\n        \"7\": {\n          \"name\": \"variable.other.metavariable.specifier.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro metavariables\",\n      \"name\": \"meta.macro.metavariable.rust\",\n      \"match\": \"(\\\\$)([a-z][A-Za-z0-9_]*)((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.macro.dollar.rust\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.metavariable.name.rust\"\n        },\n        \"4\": {\n          \"name\": \"keyword.operator.key-value.rust\"\n        },\n        \"5\": {\n          \"name\": \"variable.other.metavariable.specifier.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"macro rules\",\n      \"name\": \"meta.macro.rules.rust\",\n      \"match\": \"\\\\b(macro_rules!)\\\\s+(([a-z0-9_]+)|([A-Z][a-z0-9_]*))\\\\s+(\\\\{)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.macro.rules.rust\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.macro.rust\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.macro.rust\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.brackets.curly.rust\"\n        }\n      }\n    },\n    {\n      \"comment\": \"attributes\",\n      \"name\": \"meta.attribute.rust\",\n      \"begin\": \"(#)(\\\\!?)(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.attribute.rust\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.attribute.inner.rust\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.brackets.attribute.rust\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.brackets.attribute.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#lifetimes\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#gtypes\"\n        },\n        {\n          \"include\": \"#types\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"modules\",\n      \"match\": \"(mod)\\\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.rust\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.module.rust\"\n        }\n      }\n    },\n    {\n      \"comment\": \"external crate imports\",\n      \"name\": \"meta.import.rust\",\n      \"begin\": \"\\\\b(extern)\\\\s+(crate)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.rust\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.crate.rust\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.semi.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"use statements\",\n      \"name\": \"meta.use.rust\",\n      \"begin\": \"\\\\b(use)\\\\s\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.rust\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.semi.rust\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#namespaces\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#types\"\n        },\n        {\n          \"include\": \"#lvariables\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#block-comments\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#lvariables\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#gtypes\"\n    },\n    {\n      \"include\": \"#functions\"\n    },\n    {\n      \"include\": \"#types\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#lifetimes\"\n    },\n    {\n      \"include\": \"#macros\"\n    },\n    {\n      \"include\": \"#namespaces\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#variables\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"documentation comments\",\n          \"name\": \"comment.line.documentation.rust\",\n          \"match\": \"^\\\\s*///.*\"\n        },\n        {\n          \"comment\": \"line comments\",\n          \"name\": \"comment.line.double-slash.rust\",\n          \"match\": \"\\\\s*//.*\"\n        }\n      ]\n    },\n    \"block-comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"empty block comments\",\n          \"name\": \"comment.block.rust\",\n          \"match\": \"/\\\\*\\\\*/\"\n        },\n        {\n          \"comment\": \"block documentation comments\",\n          \"name\": \"comment.block.documentation.rust\",\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"block comments\",\n          \"name\": \"comment.block.rust\",\n          \"begin\": \"/\\\\*(?!\\\\*)\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"comment\": \"ALL CAPS constants\",\n          \"name\": \"constant.other.caps.rust\",\n          \"match\": \"\\\\b[A-Z]{2}[A-Z0-9_]*\\\\b\"\n        },\n        {\n          \"comment\": \"constant declarations\",\n          \"match\": \"\\\\b(const)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"constant.other.caps.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"decimal integers and floats\",\n          \"name\": \"constant.numeric.decimal.rust\",\n          \"match\": \"\\\\b\\\\d[\\\\d_]*(\\\\.?)[\\\\d_]*(?:(E)([+-])([\\\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.dot.decimal.rust\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.exponent.rust\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.exponent.sign.rust\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.decimal.exponent.mantissa.rust\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"hexadecimal integers\",\n          \"name\": \"constant.numeric.hex.rust\",\n          \"match\": \"\\\\b0x[\\\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"octal integers\",\n          \"name\": \"constant.numeric.oct.rust\",\n          \"match\": \"\\\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"binary integers\",\n          \"name\": \"constant.numeric.bin.rust\",\n          \"match\": \"\\\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"booleans\",\n          \"name\": \"constant.language.bool.rust\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        }\n      ]\n    },\n    \"escapes\": {\n      \"comment\": \"escapes: ASCII, byte, Unicode, quote, regex\",\n      \"name\": \"constant.character.escape.rust\",\n      \"match\": \"(\\\\\\\\)(?:(?:(x[0-7][0-7a-fA-F])|(u(\\\\{)[\\\\da-fA-F]{4,6}(\\\\}))|.))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.escape.backslash.rust\"\n        },\n        \"2\": {\n          \"name\": \"constant.character.escape.bit.rust\"\n        },\n        \"3\": {\n          \"name\": \"constant.character.escape.unicode.rust\"\n        },\n        \"4\": {\n          \"name\": \"constant.character.escape.unicode.punctuation.rust\"\n        },\n        \"5\": {\n          \"name\": \"constant.character.escape.unicode.punctuation.rust\"\n        }\n      }\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"pub as a function\",\n          \"match\": \"\\\\b(pub)(\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"function definition\",\n          \"name\": \"meta.function.definition.rust\",\n          \"begin\": \"\\\\b(fn)\\\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\\\()|(<))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.fn.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.rust\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"end\": \"\\\\{|;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"function/method calls, chaining\",\n          \"name\": \"meta.function.call.rust\",\n          \"begin\": \"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"function/method calls with turbofish\",\n          \"name\": \"meta.function.call.rust\",\n          \"begin\": \"((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::<.*>\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.rust\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#gtypes\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#macros\"\n            },\n            {\n              \"include\": \"#namespaces\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"comment\": \"control flow keywords\",\n          \"name\": \"keyword.control.rust\",\n          \"match\": \"\\\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\\\b\"\n        },\n        {\n          \"comment\": \"storage keywords\",\n          \"name\": \"keyword.other.rust storage.type.rust\",\n          \"match\": \"\\\\b(extern|let|macro|mod)\\\\b\"\n        },\n        {\n          \"comment\": \"const keyword\",\n          \"name\": \"storage.modifier.rust\",\n          \"match\": \"\\\\b(const)\\\\b\"\n        },\n        {\n          \"comment\": \"type keyword\",\n          \"name\": \"keyword.declaration.type.rust storage.type.rust\",\n          \"match\": \"\\\\b(type)\\\\b\"\n        },\n        {\n          \"comment\": \"enum keyword\",\n          \"name\": \"keyword.declaration.enum.rust storage.type.rust\",\n          \"match\": \"\\\\b(enum)\\\\b\"\n        },\n        {\n          \"comment\": \"trait keyword\",\n          \"name\": \"keyword.declaration.trait.rust storage.type.rust\",\n          \"match\": \"\\\\b(trait)\\\\b\"\n        },\n        {\n          \"comment\": \"struct keyword\",\n          \"name\": \"keyword.declaration.struct.rust storage.type.rust\",\n          \"match\": \"\\\\b(struct)\\\\b\"\n        },\n        {\n          \"comment\": \"storage modifiers\",\n          \"name\": \"storage.modifier.rust\",\n          \"match\": \"\\\\b(abstract|static)\\\\b\"\n        },\n        {\n          \"comment\": \"other keywords\",\n          \"name\": \"keyword.other.rust\",\n          \"match\": \"\\\\b(as|async|become|box|dyn|move|final|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\\\b\"\n        },\n        {\n          \"comment\": \"fn\",\n          \"name\": \"keyword.other.fn.rust\",\n          \"match\": \"\\\\bfn\\\\b\"\n        },\n        {\n          \"comment\": \"crate\",\n          \"name\": \"keyword.other.crate.rust\",\n          \"match\": \"\\\\bcrate\\\\b\"\n        },\n        {\n          \"comment\": \"mut\",\n          \"name\": \"storage.modifier.mut.rust\",\n          \"match\": \"\\\\bmut\\\\b\"\n        },\n        {\n          \"comment\": \"logical operators\",\n          \"name\": \"keyword.operator.logical.rust\",\n          \"match\": \"(\\\\^|\\\\||\\\\|\\\\||&&|<<|>>|!)(?!=)\"\n        },\n        {\n          \"comment\": \"logical AND, borrow references\",\n          \"name\": \"keyword.operator.borrow.and.rust\",\n          \"match\": \"&(?![&=])\"\n        },\n        {\n          \"comment\": \"assignment operators\",\n          \"name\": \"keyword.operator.assignment.rust\",\n          \"match\": \"(\\\\+=|-=|\\\\*=|/=|%=|\\\\^=|&=|\\\\|=|<<=|>>=)\"\n        },\n        {\n          \"comment\": \"single equal\",\n          \"name\": \"keyword.operator.assignment.equal.rust\",\n          \"match\": \"(?<![<>])=(?!=|>)\"\n        },\n        {\n          \"comment\": \"comparison operators\",\n          \"name\": \"keyword.operator.comparison.rust\",\n          \"match\": \"(=(=)?(?!>)|!=|<=|(?<!=)>=)\"\n        },\n        {\n          \"comment\": \"math operators\",\n          \"name\": \"keyword.operator.math.rust\",\n          \"match\": \"(([+%]|(\\\\*(?!\\\\w)))(?!=))|(-(?!>))|(/(?!/))\"\n        },\n        {\n          \"comment\": \"less than, greater than (special case)\",\n          \"match\": \"(?:\\\\b|(?:(\\\\))|(\\\\])|(\\\\})))[ \\\\t]+([<>])[ \\\\t]+(?:\\\\b|(?:(\\\\()|(\\\\[)|(\\\\{)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.square.rust\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.comparison.rust\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.brackets.round.rust\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.brackets.square.rust\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.brackets.curly.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"namespace operator\",\n          \"name\": \"keyword.operator.namespace.rust\",\n          \"match\": \"::\"\n        },\n        {\n          \"comment\": \"dereference asterisk\",\n          \"match\": \"(\\\\*)(?=\\\\w+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.dereference.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"subpattern binding\",\n          \"name\": \"keyword.operator.subpattern.rust\",\n          \"match\": \"@\"\n        },\n        {\n          \"comment\": \"dot access\",\n          \"name\": \"keyword.operator.access.dot.rust\",\n          \"match\": \"\\\\.(?!\\\\.)\"\n        },\n        {\n          \"comment\": \"ranges, range patterns\",\n          \"name\": \"keyword.operator.range.rust\",\n          \"match\": \"\\\\.{2}(=|\\\\.)?\"\n        },\n        {\n          \"comment\": \"colon\",\n          \"name\": \"keyword.operator.key-value.rust\",\n          \"match\": \":(?!:)\"\n        },\n        {\n          \"comment\": \"dashrocket, skinny arrow\",\n          \"name\": \"keyword.operator.arrow.skinny.rust\",\n          \"match\": \"->\"\n        },\n        {\n          \"comment\": \"hashrocket, fat arrow\",\n          \"name\": \"keyword.operator.arrow.fat.rust\",\n          \"match\": \"=>\"\n        },\n        {\n          \"comment\": \"dollar macros\",\n          \"name\": \"keyword.operator.macro.dollar.rust\",\n          \"match\": \"\\\\$\"\n        },\n        {\n          \"comment\": \"question mark operator, questionably sized, macro kleene matcher\",\n          \"name\": \"keyword.operator.question.rust\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"interpolations\": {\n      \"comment\": \"curly brace interpolations\",\n      \"name\": \"meta.interpolation.rust\",\n      \"match\": \"({)[^\\\"{}]*(})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.interpolation.rust\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.interpolation.rust\"\n        }\n      }\n    },\n    \"lifetimes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"named lifetime parameters\",\n          \"match\": \"(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.lifetime.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.lifetime.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"borrowing references to named lifetimes\",\n          \"match\": \"(\\\\&)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.borrow.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.lifetime.rust\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.lifetime.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"macros\": {\n      \"patterns\": [\n        {\n          \"comment\": \"macros\",\n          \"name\": \"meta.macro.rust\",\n          \"match\": \"(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.name.function.macro.rust\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.macro.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"namespaces\": {\n      \"patterns\": [\n        {\n          \"comment\": \"namespace (non-type, non-function path segment)\",\n          \"match\": \"(?<![A-Za-z0-9_])([a-z0-9_]+)((?<!super|self)::)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.namespace.rust\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.namespace.rust\"\n            }\n          }\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"comment\": \"numeric types\",\n          \"match\": \"(?<![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.numeric.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"parameterized types\",\n          \"begin\": \"\\\\b([A-Z][A-Za-z0-9]*)(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"end\": \">\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.brackets.angle.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#lvariables\"\n            },\n            {\n              \"include\": \"#lifetimes\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#types\"\n            },\n            {\n              \"include\": \"#variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"primitive types\",\n          \"name\": \"entity.name.type.primitive.rust\",\n          \"match\": \"\\\\b(bool|char|str)\\\\b\"\n        },\n        {\n          \"comment\": \"trait declarations\",\n          \"match\": \"\\\\b(trait)\\\\s+([A-Z][A-Za-z0-9]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.trait.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.trait.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"struct declarations\",\n          \"match\": \"\\\\b(struct)\\\\s+([A-Z][A-Za-z0-9]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.struct.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"enum declarations\",\n          \"match\": \"\\\\b(enum)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.enum.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.enum.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"type declarations\",\n          \"match\": \"\\\\b(type)\\\\s+([A-Z][A-Za-z0-9_]*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.type.rust storage.type.rust\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.declaration.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"types\",\n          \"name\": \"entity.name.type.rust\",\n          \"match\": \"\\\\b[A-Z][A-Za-z0-9]*\\\\b(?!!)\"\n        }\n      ]\n    },\n    \"gtypes\": {\n      \"patterns\": [\n        {\n          \"comment\": \"option types\",\n          \"name\": \"entity.name.type.option.rust\",\n          \"match\": \"\\\\b(Some|None)\\\\b\"\n        },\n        {\n          \"comment\": \"result types\",\n          \"name\": \"entity.name.type.result.rust\",\n          \"match\": \"\\\\b(Ok|Err)\\\\b\"\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"comment\": \"comma\",\n          \"name\": \"punctuation.comma.rust\",\n          \"match\": \",\"\n        },\n        {\n          \"comment\": \"curly braces\",\n          \"name\": \"punctuation.brackets.curly.rust\",\n          \"match\": \"[{}]\"\n        },\n        {\n          \"comment\": \"parentheses, round brackets\",\n          \"name\": \"punctuation.brackets.round.rust\",\n          \"match\": \"[()]\"\n        },\n        {\n          \"comment\": \"semicolon\",\n          \"name\": \"punctuation.semi.rust\",\n          \"match\": \";\"\n        },\n        {\n          \"comment\": \"square brackets\",\n          \"name\": \"punctuation.brackets.square.rust\",\n          \"match\": \"[\\\\[\\\\]]\"\n        },\n        {\n          \"comment\": \"angle brackets\",\n          \"name\": \"punctuation.brackets.angle.rust\",\n          \"match\": \"(?<!=)[<>]\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"comment\": \"double-quoted strings and byte strings\",\n          \"name\": \"string.quoted.double.rust\",\n          \"begin\": \"(b?)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            },\n            {\n              \"include\": \"#interpolations\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"double-quoted raw strings and raw byte strings\",\n          \"name\": \"string.quoted.double.rust\",\n          \"begin\": \"(b?r)(#*)(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.raw.rust\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            }\n          },\n          \"end\": \"(\\\")(\\\\2)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.raw.rust\"\n            }\n          }\n        },\n        {\n          \"comment\": \"characters and bytes\",\n          \"name\": \"string.quoted.single.char.rust\",\n          \"begin\": \"(b)?(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.byte.raw.rust\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.char.rust\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.char.rust\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#escapes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"lvariables\": {\n      \"patterns\": [\n        {\n          \"comment\": \"self\",\n          \"name\": \"variable.language.self.rust\",\n          \"match\": \"\\\\b[Ss]elf\\\\b\"\n        },\n        {\n          \"comment\": \"super\",\n          \"name\": \"variable.language.super.rust\",\n          \"match\": \"\\\\bsuper\\\\b\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"comment\": \"variables\",\n          \"name\": \"variable.other.rust\",\n          \"match\": \"\\\\b(?<!(?<!\\\\.)\\\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\\\b\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/sas.tmLanguage.json",
    "content": "{\n  \"comment\": \"A work in progress--improves over the existing in that it populates symbols, and handles comments more gracefully.\",\n  \"fileTypes\": [\"sas\"],\n  \"foldingStartMarker\": \"(?i:(proc|data|%macro).*;$)\",\n  \"foldingStopMarker\": \"(?i:(run|quit|%mend)\\\\s?);\",\n  \"name\": \"sas\",\n  \"patterns\": [\n    {\n      \"include\": \"#starComment\"\n    },\n    {\n      \"include\": \"#blockComment\"\n    },\n    {\n      \"include\": \"#macro\"\n    },\n    {\n      \"include\": \"#constant\"\n    },\n    {\n      \"include\": \"#quote\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"begin\": \"\\\\b(?i:(data))\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.sas\"\n        }\n      },\n      \"comment\": \"Begins a DATA step and provides names for any output SAS data sets, views, or programs.\",\n      \"end\": \"(;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#blockComment\"\n        },\n        {\n          \"include\": \"#dataSet\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.sas\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.sas\"\n            }\n          },\n          \"match\": \"(?i:(?:(stack|pgm|view|source)\\\\s?=\\\\s?)|(debug|nesting|nolist))\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(?i:(set|update|modify|merge))\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.sas\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.class.sas\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.class.sas\"\n        }\n      },\n      \"comment\": \"DATA set File-Handling Statements for DATA step\",\n      \"end\": \"(;)\",\n      \"patterns\": [\n        {\n          \"include\": \"#blockComment\"\n        },\n        {\n          \"include\": \"#dataSet\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i:\\\\b(if|while|until|for|do|end|then|else|run|quit|cancel|options)\\\\b)\",\n      \"name\": \"keyword.control.sas\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.sas\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.sas\"\n        }\n      },\n      \"match\": \"(?i:(%(bquote|do|else|end|eval|global|goto|if|inc|include|index|input|length|let|list|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qscan|qsysfunc|quote|run|scan|str|substr|syscall|sysevalf|sysexec|sysfunc|sysrc|then|to|unquote|upcase|until|while|window)\\\\b))\\\\s*(\\\\w*)\",\n      \"name\": \"keyword.other.sas\"\n    },\n    {\n      \"begin\": \"(?i:\\\\b(proc\\\\s*(sql))\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.sas\"\n        },\n        \"2\": {\n          \"name\": \"support.class.sas\"\n        }\n      },\n      \"comment\": \"Looks like for this to work there must be a *name* as well as the patterns/include bit.\",\n      \"end\": \"(?i:\\\\b(quit)\\\\s*;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.sas\"\n        }\n      },\n      \"name\": \"meta.sql.sas\",\n      \"patterns\": [\n        {\n          \"include\": \"#starComment\"\n        },\n        {\n          \"include\": \"#blockComment\"\n        },\n        {\n          \"include\": \"source.sql\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i:\\\\b(by|label|format)\\\\b)\",\n      \"name\": \"keyword.datastep.sas\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.sas\"\n        },\n        \"2\": {\n          \"name\": \"support.class.sas\"\n        }\n      },\n      \"match\": \"(?i:\\\\b(proc (\\\\w+))\\\\b)\",\n      \"name\": \"meta.function-call.sas\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(_n_|_error_)\\\\b)\",\n      \"name\": \"variable.language.sas\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.class.sas\"\n        }\n      },\n      \"match\": \"\\\\b(?i:(_all_|_character_|_cmd_|_freq_|_i_|_infile_|_last_|_msg_|_null_|_numeric_|_temporary_|_type_|abort|abs|addr|adjrsq|airy|alpha|alter|altlog|altprint|and|arcos|array|arsin|as|atan|attrc|attrib|attrn|authserver|autoexec|awscontrol|awsdef|awsmenu|awsmenumerge|awstitle|backward|band|base|betainv|between|blocksize|blshift|bnot|bor|brshift|bufno|bufsize|bxor|by|byerr|byline|byte|calculated|call|cards|cards4|case|catcache|cbufno|cdf|ceil|center|cexist|change|chisq|cinv|class|cleanup|close|cnonct|cntllev|coalesce|codegen|col|collate|collin|column|comamid|comaux1|comaux2|comdef|compbl|compound|compress|config|continue|convert|cos|cosh|cpuid|create|cross|crosstab|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|datalines|datalines4|date|datejul|datepart|datetime|day|dbcslang|dbcstype|dclose|ddm|delete|delimiter|depdb|depdbsl|depsl|depsyd|deptab|dequote|descending|descript|design=|device|dflang|dhms|dif|digamma|dim|dinfo|display|distinct|dkricond|dkrocond|dlm|dnum|do|dopen|doptname|doptnum|dread|drop|dropnote|dsname|dsnferr|echo|else|emaildlg|emailid|emailpw|emailserver|emailsys|encrypt|end|endsas|engine|eof|eov|erf|erfc|error|errorcheck|errors|exist|exp|fappend|fclose|fcol|fdelete|feedback|fetch|fetchobs|fexist|fget|file|fileclose|fileexist|filefmt|filename|fileref|filevar|finfo|finv|fipname|fipnamel|fipstate|first|firstobs|floor|fmterr|fmtsearch|fnonct|fnote|font|fontalias|footnote[1-9]?|fopen|foptname|foptnum|force|formatted|formchar|formdelim|formdlim|forward|fpoint|fpos|fput|fread|frewind|frlen|from|fsep|full|fullstimer|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|go|goto|group|gwindow|hbar|hbound|helpenv|helploc|hms|honorappearance|hosthelp|hostprint|hour|hpct|html|hvar|ibessel|ibr|id|if|index|indexc|indexw|infile|informat|initcmd|initstmt|inner|input|inputc|inputn|inr|insert|int|intck|intnx|into|intrr|invaliddata|irr|is|jbessel|join|juldate|keep|kentb|kurtosis|label|lag|last|lbound|leave|left|length|levels|lgamma|lib|libname|library|libref|line|linesize|link|list|log|log10|log2|logpdf|logpmf|logsdf|lostcard|lowcase|lrecl|ls|macro|macrogen|maps|mautosource|max|maxdec|maxr|mdy|mean|measures|median|memtype|merge|merror|min|minute|missing|missover|mlogic|mod|mode|model|modify|month|mopen|mort|mprint|mrecall|msglevel|msymtabmax|mvarsize|myy|n|nest|netpv|new|news|nmiss|no|nobatch|nobs|nocaps|nocardimage|nocenter|nocharcode|nocmdmac|nocol|nocum|nodate|nodbcs|nodetails|nodmr|nodms|nodmsbatch|nodup|nodupkey|noduplicates|noechoauto|noequals|noerrorabend|noexitwindows|nofullstimer|noicon|noimplmac|noint|nolist|noloadlist|nomiss|nomlogic|nomprint|nomrecall|nomsgcase|nomstored|nomultenvappl|nonotes|nonumber|noobs|noovp|nopad|nopercent|noprint|noprintinit|normal|norow|norsasuser|nosetinit|nosource|nosource2|nosplash|nosymbolgen|note|notes|notitle|notitles|notsorted|noverbose|noxsync|noxwait|npv|null|number|numkeys|nummousekeys|nway|obs|ods|on|open|option|order|ordinal|otherwise|out|outer|outp=|output|over|ovp|p(1|5|10|25|50|75|90|95|99)|pad|pad2|page|pageno|pagesize|paired|parm|parmcards|path|pathdll|pathname|pdf|peek|peekc|pfkey|pmf|point|poisson|poke|position|printer|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probsig|probt|procleave|project|prt|propcase|prxmatch|prxparse|prxchange|prxposn|ps|put|putc|putn|pw|pwreq|qtr|quote|r|ranbin|rancau|ranexp|rangam|range|ranks|rannor|ranpoi|rantbl|rantri|ranuni|read|recfm|register|regr|remote|remove|rename|repeat|replace|resolve|retain|return|reuse|reverse|rewind|right|round|rsquare|rtf|rtrace|rtraceloc|s|s2|samploc|sasautos|sascontrol|sasfrscr|sashelp|sasmsg|sasmstore|sasscript|sasuser|saving|scan|sdf|second|select|selection|separated|seq|serror|set|setcomm|setot|sign|simple|sin|sinh|siteinfo|skewness|skip|sle|sls|sortedby|sortpgm|sortseq|sortsize|soundex|source2|spedis|splashlocation|split|spool|sqrt|start|std|stderr|stdin|stfips|stimer|stname|stnamel|stop|stopover|strip|subgroup|subpopn|substr|sum|sumwgt|symbol|symbolgen|symget|symput|sysget|sysin|sysleave|sysmsg|sysparm|sysprint|sysprintfont|sysprod|sysrc|system|t|table|tables|tan|tanh|tapeclose|tbufsize|terminal|test|then|time|timepart|tinv|title[1-9]?|tnonct|to|today|tol|tooldef|totper|transformout|translate|trantab|tranwrd|trigamma|trim|trimn|trunc|truncover|type|unformatted|uniform|union|until|upcase|update|user|usericon|uss|validate|value|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vnferr|vtype|vtypex|weekday|weight|when|where|while|wincharset|window|work|workinit|workterm|write|wsum|wsumx|x|xsync|xwait|year|yearcutoff|yes|yyq|zipfips|zipname|zipnamel|zipstate))\\\\b\",\n      \"name\": \"support.function.sas\"\n    }\n  ],\n  \"repository\": {\n    \"blockComment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\/\\\\*\",\n          \"end\": \"\\\\*\\\\/\",\n          \"name\": \"comment.block.slashstar.sas\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"comment\": \"numeric constant\",\n          \"match\": \"(?<![&\\\\}])\\\\b[0-9]*\\\\.?[0-9]+([eEdD][-+]?[0-9]+)?\\\\b\",\n          \"name\": \"constant.numeric.sas\"\n        },\n        {\n          \"comment\": \"single quote numeric-type constant\",\n          \"match\": \"(')([^']+)(')(dt|[dt])\",\n          \"name\": \"constant.numeric.quote.single.sas\"\n        },\n        {\n          \"comment\": \"double quote numeric-type constant\",\n          \"match\": \"(\\\")([^\\\"]+)(\\\")(dt|[dt])\",\n          \"name\": \"constant.numeric.quote.double.sas\"\n        }\n      ]\n    },\n    \"dataSet\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((\\\\w+)\\\\.)?(\\\\w+)\\\\s?\\\\(\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.class.libref.sas\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.dsname.sas\"\n            }\n          },\n          \"comment\": \"data set with options\",\n          \"end\": \"\\\\)\",\n          \"patterns\": [\n            {\n              \"include\": \"#dataSetOptions\"\n            },\n            {\n              \"include\": \"#blockComment\"\n            },\n            {\n              \"include\": \"#macro\"\n            },\n            {\n              \"include\": \"#constant\"\n            },\n            {\n              \"include\": \"#quote\"\n            },\n            {\n              \"include\": \"#operator\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.name.class.libref.sas\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.dsname.sas\"\n            }\n          },\n          \"comment\": \"data set without options\",\n          \"match\": \"\\\\b((\\\\w+)\\\\.)?(\\\\w+)\\\\b\"\n        }\n      ]\n    },\n    \"dataSetOptions\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\s|\\\\(|\\\\))(?i:ALTER|BUFNO|BUFSIZE|CNTLLEV|COMPRESS|DLDMGACTION|ENCRYPT|ENCRYPTKEY|EXTENDOBSCOUNTER|GENMAX|GENNUM|INDEX|LABEL|OBSBUF|OUTREP|PW|PWREQ|READ|REPEMPTY|REPLACE|REUSE|ROLE|SORTEDBY|SPILL|TOBSNO|TYPE|WRITE|FILECLOSE|FIRSTOBS|IN|OBS|POINTOBS|WHERE|WHEREUP|IDXNAME|IDXWHERE|DROP|KEEP|RENAME)\\\\s?=\",\n          \"name\": \"keyword.other.sas\"\n        }\n      ]\n    },\n    \"macro\": {\n      \"patterns\": [\n        {\n          \"match\": \"(&+(?i:[a-z_]([a-z0-9_]+)?)(\\\\.+)?)\\\\b\",\n          \"name\": \"variable.other.macro.sas\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"([\\\\+\\\\-\\\\*\\\\^\\\\/])\",\n          \"name\": \"keyword.operator.arithmetic.sas\"\n        },\n        {\n          \"match\": \"\\\\b(?i:(eq|ne|gt|lt|ge|le|in|not|&|and|or|min|max))\\\\b\",\n          \"name\": \"keyword.operator.comparison.sas\"\n        },\n        {\n          \"match\": \"([¬<>^~]?=(:)?|>|<|\\\\||!|¦|¬|^|~|<>|><|\\\\|\\\\|)\",\n          \"name\": \"keyword.operator.sas\"\n        }\n      ]\n    },\n    \"quote\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!%)(')\",\n          \"comment\": \"single quoted string block\",\n          \"end\": \"(')([bx])?\",\n          \"name\": \"string.quoted.single.sas\"\n        },\n        {\n          \"begin\": \"(\\\")\",\n          \"comment\": \"double quoted string block\",\n          \"end\": \"(\\\")([bx])?\",\n          \"name\": \"string.quoted.double.sas\"\n        }\n      ]\n    },\n    \"starComment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#blockcomment\"\n        },\n        {\n          \"begin\": \"(?<=;)[\\\\s%]*\\\\*\",\n          \"end\": \";\",\n          \"name\": \"comment.line.inline.star.sas\"\n        },\n        {\n          \"begin\": \"^[\\\\s%]*\\\\*\",\n          \"end\": \";\",\n          \"name\": \"comment.line.start.sas\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.sas\",\n  \"uuid\": \"7e721b1e-6265-4865-bc4b-308d49affba1\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/sass.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sass\"],\n  \"foldingStartMarker\": \"/\\\\*|^#|^\\\\*|^\\\\b|*#?region|^\\\\.\",\n  \"foldingStopMarker\": \"\\\\*/|*#?endregion|^\\\\s*$\",\n  \"name\": \"sass\",\n  \"patterns\": [\n    {\n      \"begin\": \"^(\\\\s*)(/\\\\*)\",\n      \"end\": \"(\\\\*/)|^(?!\\\\s\\\\1)\",\n      \"name\": \"comment.block.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-tag\"\n        },\n        {\n          \"include\": \"#comment-param\"\n        }\n      ]\n    },\n    {\n      \"match\": \"^[\\\\t ]*/?//[\\\\t ]*[SRI][\\\\t ]*$\",\n      \"name\": \"keyword.other.sass.formatter.action\"\n    },\n    {\n      \"begin\": \"^[\\\\t ]*//[\\\\t ]*(import)[\\\\t ]*(css-variables)[\\\\t ]*(from)\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.import.css.variables\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control\"\n        },\n        \"2\": {\n          \"name\": \"variable\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-quotes\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#double-slash\"\n    },\n    {\n      \"include\": \"#double-quoted\"\n    },\n    {\n      \"include\": \"#single-quoted\"\n    },\n    {\n      \"include\": \"#interpolation\"\n    },\n    {\n      \"include\": \"#curly-brackets\"\n    },\n    {\n      \"include\": \"#placeholder-selector\"\n    },\n    {\n      \"begin\": \"\\\\$[a-zA-Z0-9_-]+(?=:)\",\n      \"end\": \"$\\\\n?|(?=\\\\)\\\\s\\\\)|\\\\)\\\\n)\",\n      \"name\": \"sass.script.maps\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"variable.other.name\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#double-slash\"\n        },\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#rgb-value\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#flag\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#function-content\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#reserved-words\"\n        },\n        {\n          \"include\": \"#parent-selector\"\n        },\n        {\n          \"include\": \"#property-value\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#dotdotdot\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#variable-root\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"include\": \"#unit\"\n    },\n    {\n      \"include\": \"#flag\"\n    },\n    {\n      \"include\": \"#comma\"\n    },\n    {\n      \"include\": \"#semicolon\"\n    },\n    {\n      \"include\": \"#dotdotdot\"\n    },\n    {\n      \"begin\": \"@include|\\\\+(?!\\\\W|\\\\d)\",\n      \"end\": \"(?=\\\\n|\\\\()\",\n      \"name\": \"support.function.name.sass.library\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.css.sass\"\n        }\n      }\n    },\n    {\n      \"begin\": \"^(@use)\",\n      \"end\": \"(?=\\\\n)\",\n      \"name\": \"sass.use\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.css.sass.use\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"as|with\",\n          \"name\": \"support.type.css.sass\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#variable-root\"\n        },\n        {\n          \"include\": \"#rgb-value\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#parenthesis-open\"\n        },\n        {\n          \"include\": \"#parenthesis-close\"\n        },\n        {\n          \"include\": \"#colon\"\n        },\n        {\n          \"include\": \"#import-quotes\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^@import(.*?)( as.*)?$\",\n      \"end\": \"(?=\\\\n)\",\n      \"name\": \"keyword.control.at-rule.use\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.css.sass\"\n        },\n        \"2\": {\n          \"name\": \"invalid\"\n        }\n      }\n    },\n    {\n      \"begin\": \"@mixin|^[\\\\t ]*=|@function\",\n      \"end\": \"$\\\\n?|(?=\\\\()\",\n      \"name\": \"support.function.name.sass\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.css.sass\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"[\\\\w-]+\",\n          \"name\": \"entity.name.function\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"@\",\n      \"end\": \"$\\\\n?|\\\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\\\s|,))\",\n      \"name\": \"keyword.control.at-rule.css.sass\"\n    },\n    {\n      \"begin\": \"(?<!\\\\-|\\\\()\\\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|x)\\\\b(?!-|\\\\)|:\\\\s)|&\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|\\\\(|\\\\)|\\\\.|\\\\#|\\\\[|>|-|_)\",\n      \"name\": \"entity.name.tag.css.sass.symbol\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|\\\\(|\\\\)|\\\\.|\\\\[|>)\",\n      \"name\": \"entity.other.attribute-name.id.css.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\.|(?<=&)(-|_)\",\n      \"end\": \"$\\\\n?|(?=\\\\s|,|\\\\(|\\\\)|\\\\[|>)\",\n      \"name\": \"entity.other.attribute-name.class.css.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\[\",\n      \"end\": \"\\\\]\",\n      \"name\": \"entity.other.attribute-selector.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        },\n        {\n          \"match\": \"\\\\^|\\\\$|\\\\*|~\",\n          \"name\": \"keyword.other.regex.sass\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?<=\\\\]|\\\\)|not\\\\(|\\\\*|>|>\\\\s):[a-z:-]+|(::|:-)[a-z:-]+\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.sass\"\n    },\n    {\n      \"include\": \"#module\"\n    },\n    {\n      \"match\": \"[\\\\w-]*\\\\(\",\n      \"name\": \"entity.name.function\"\n    },\n    {\n      \"match\": \"\\\\)\",\n      \"name\": \"entity.name.function.close\"\n    },\n    {\n      \"begin\": \":\",\n      \"end\": \"$\\\\n?|(?=\\\\s\\\\(|and\\\\(|\\\\),)\",\n      \"name\": \"meta.property-list.css.sass.prop\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=:)[a-z-]+\\\\s\",\n          \"name\": \"support.type.property-name.css.sass.prop.name\"\n        },\n        {\n          \"include\": \"#double-slash\"\n        },\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#curly-brackets\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#rgb-value\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#module\"\n        },\n        {\n          \"match\": \"--.+?(?=\\\\))\",\n          \"name\": \"variable.css\"\n        },\n        {\n          \"match\": \"[\\\\w-]*\\\\(\",\n          \"name\": \"entity.name.function\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"entity.name.function.close\"\n        },\n        {\n          \"include\": \"#flag\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#semicolon\"\n        },\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#function-content\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#parent-selector\"\n        },\n        {\n          \"include\": \"#property-value\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#rgb-value\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#function-content\"\n    },\n    {\n      \"begin\": \"(?<=})(?!\\\\n|\\\\(|\\\\)|[a-zA-Z0-9_-]+:)\",\n      \"end\": \"\\\\s|(?=,|\\\\.|\\\\[|\\\\)|\\\\n)\",\n      \"name\": \"entity.name.tag.css.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#pseudo-class\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"match\": \"[a-z-]+((?=:|#{))\",\n      \"name\": \"support.type.property-name.css.sass.prop.name\"\n    },\n    {\n      \"include\": \"#reserved-words\"\n    },\n    {\n      \"include\": \"#property-value\"\n    }\n  ],\n  \"repository\": {\n    \"module\": {\n      \"match\": \"([\\\\w-]+?)(\\\\.)\",\n      \"name\": \"constant.character.module\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.character.module.name\"\n        },\n        \"2\": {\n          \"name\": \"constant.numeric.module.dot\"\n        }\n      }\n    },\n    \"comma\": {\n      \"match\": \"\\\\band\\\\b|\\\\bor\\\\b|,\",\n      \"name\": \"comment.punctuation.comma.sass\"\n    },\n    \"comment-tag\": {\n      \"begin\": \"(?<={{)\",\n      \"end\": \"(?=}})\",\n      \"name\": \"comment.tag.sass\"\n    },\n    \"comment-param\": {\n      \"match\": \"\\\\@(\\\\w+)\",\n      \"name\": \"storage.type.class.jsdoc\"\n    },\n    \"curly-brackets\": {\n      \"match\": \"{|}\",\n      \"name\": \"invalid\"\n    },\n    \"dotdotdot\": {\n      \"match\": \"\\\\.\\\\.\\\\.\",\n      \"name\": \"variable.other\"\n    },\n    \"double-slash\": {\n      \"begin\": \"//\",\n      \"end\": \"$\\\\n?\",\n      \"name\": \"comment.line.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-tag\"\n        }\n      ]\n    },\n    \"double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"name\": \"string.quoted.double.css.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#quoted-interpolation\"\n        }\n      ]\n    },\n    \"flag\": {\n      \"match\": \"!(important|default|optional|global)\",\n      \"name\": \"keyword.other.important.css.sass\"\n    },\n    \"function\": {\n      \"match\": \"(?<=[\\\\s|\\\\(|,|:])(?!url|format|attr)[a-zA-Z0-9_-][\\\\w-]*(?=\\\\()\",\n      \"name\": \"support.function.name.sass\"\n    },\n    \"function-content\": {\n      \"begin\": \"(?<=url\\\\(|format\\\\(|attr\\\\()\",\n      \"end\": \".(?=\\\\))\",\n      \"name\": \"string.quoted.double.css.sass\"\n    },\n    \"parenthesis-open\": {\n      \"match\": \"\\\\(\",\n      \"name\": \"entity.name.function.parenthesis.open\"\n    },\n    \"parenthesis-close\": {\n      \"match\": \"\\\\)\",\n      \"name\": \"entity.name.function.parenthesis.close\"\n    },\n    \"colon\": {\n      \"match\": \":\",\n      \"name\": \"meta.property-list.css.sass.colon\"\n    },\n    \"interpolation\": {\n      \"begin\": \"#{\",\n      \"end\": \"}\",\n      \"name\": \"support.function.interpolation.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#comma\"\n        },\n        {\n          \"include\": \"#double-quoted\"\n        },\n        {\n          \"include\": \"#single-quoted\"\n        }\n      ]\n    },\n    \"numeric\": {\n      \"match\": \"(-|\\\\.)?[0-9]+(\\\\.[0-9]+)?\",\n      \"name\": \"constant.numeric.css.sass\"\n    },\n    \"operator\": {\n      \"match\": \"\\\\+|\\\\s-\\\\s|\\\\s-(?=\\\\$)|(?<=\\\\()-(?=\\\\$)|\\\\s-(?=\\\\()|\\\\*|/|%|=|!|<|>|~\",\n      \"name\": \"keyword.operator.sass\"\n    },\n    \"parent-selector\": {\n      \"match\": \"&\",\n      \"name\": \"entity.name.tag.css.sass\"\n    },\n    \"placeholder-selector\": {\n      \"begin\": \"(?<!\\\\d)%(?!\\\\d)\",\n      \"end\": \"$\\\\n?|\\\\s\",\n      \"name\": \"entity.other.inherited-class.placeholder-selector.css.sass\"\n    },\n    \"property-value\": {\n      \"match\": \"[a-zA-Z0-9_-]+\",\n      \"name\": \"meta.property-value.css.sass support.constant.property-value.css.sass\"\n    },\n    \"pseudo-class\": {\n      \"match\": \":[a-z:-]+\",\n      \"name\": \"entity.other.attribute-name.pseudo-class.css.sass\"\n    },\n    \"quoted-interpolation\": {\n      \"begin\": \"#{\",\n      \"end\": \"}\",\n      \"name\": \"support.function.interpolation.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#unit\"\n        },\n        {\n          \"include\": \"#comma\"\n        }\n      ]\n    },\n    \"reserved-words\": {\n      \"match\": \"\\\\b(false|from|in|not|null|through|to|true)\\\\b\",\n      \"name\": \"support.type.property-name.css.sass\"\n    },\n    \"rgb-value\": {\n      \"match\": \"(#)([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\\\b\",\n      \"name\": \"constant.language.color.rgb-value.css.sass\"\n    },\n    \"semicolon\": {\n      \"match\": \";\",\n      \"name\": \"invalid\"\n    },\n    \"single-quoted\": {\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"name\": \"string.quoted.single.css.sass\",\n      \"patterns\": [\n        {\n          \"include\": \"#quoted-interpolation\"\n        }\n      ]\n    },\n    \"unit\": {\n      \"match\": \"(?<=[\\\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|fr|%)\",\n      \"name\": \"keyword.control.unit.css.sass\"\n    },\n    \"variable-root\": {\n      \"match\": \"\\\\$[a-zA-Z0-9_-]+\",\n      \"name\": \"variable.other.root\"\n    },\n    \"variable\": {\n      \"match\": \"\\\\$[a-zA-Z0-9_-]+\",\n      \"name\": \"variable.other.value\"\n    },\n    \"import-quotes\": {\n      \"match\": \"[\\\"']?\\\\.{0,2}[\\\\w/]+[\\\"']?\",\n      \"name\": \"constant.character.css.sass\"\n    }\n  },\n  \"scopeName\": \"source.sass\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/scala.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"scala\"],\n  \"firstLineMatch\": \"^#!/.*\\\\b\\\\w*scala\\\\b\",\n  \"foldingStartMarker\": \"/\\\\*\\\\*|\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"\\\\*\\\\*/|^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~S\",\n  \"repository\": {\n    \"empty-parentheses\": {\n      \"match\": \"(\\\\(\\\\))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.bracket.scala\"\n        }\n      },\n      \"name\": \"meta.parentheses.scala\"\n    },\n    \"imports\": {\n      \"end\": \"(?<=[\\\\n;])\",\n      \"begin\": \"\\\\b(import)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.import.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"\\\\b(given)\\\\b\",\n          \"name\": \"keyword.other.import.given.scala\"\n        },\n        {\n          \"match\": \"[A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?\",\n          \"name\": \"entity.name.class.import.scala\"\n        },\n        {\n          \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n          \"name\": \"entity.name.import.scala\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.definition.import\"\n        },\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)(given\\\\s)?\\\\s*(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\\\\s*(=>)\\\\s*(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.import.given.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class.import.renamed-from.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.import.renamed-from.scala\"\n                },\n                \"4\": {\n                  \"name\": \"keyword.other.arrow.scala\"\n                },\n                \"5\": {\n                  \"name\": \"entity.name.class.import.renamed-to.scala\"\n                },\n                \"6\": {\n                  \"name\": \"entity.name.import.renamed-to.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\b(given)\\\\b\",\n              \"name\": \"keyword.other.import.given.scala\"\n            },\n            {\n              \"match\": \"(given\\\\s+)?(?:([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.import.given.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class.import.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.import.scala\"\n                }\n              }\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.import.selector.scala\"\n        }\n      ],\n      \"name\": \"meta.import.scala\"\n    },\n    \"exports\": {\n      \"end\": \"(?<=[\\\\n;])\",\n      \"begin\": \"\\\\b(export)\\\\s+(given\\\\s+)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.export.scala\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.export.given.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n          \"name\": \"entity.name.export.scala\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.definition.export\"\n        },\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(?x)\\\\s*(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\\\\s*(=>)\\\\s*(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\\\\s*\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.export.renamed-from.scala\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.arrow.scala\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.export.renamed-to.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"([^\\\\s.,}]+)\",\n              \"name\": \"entity.name.export.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.export.selector.scala\"\n        }\n      ],\n      \"name\": \"meta.export.scala\"\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(false|null|true)\\\\b\",\n          \"name\": \"constant.language.scala\"\n        },\n        {\n          \"match\": \"\\\\b(0[xX][0-9a-fA-F_]*)\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"\\\\b(([0-9][0-9_]*(\\\\.[0-9][0-9_]*)?)([eE](\\\\+|-)?[0-9][0-9_]*)?|[0-9][0-9_]*)[LlFfDd]?\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"(\\\\.[0-9][0-9_]*)([eE](\\\\+|-)?[0-9][0-9_]*)?[LlFfDd]?\\\\b\",\n          \"name\": \"constant.numeric.scala\"\n        },\n        {\n          \"match\": \"\\\\b(this|super)\\\\b\",\n          \"name\": \"variable.language.scala\"\n        }\n      ]\n    },\n    \"script-header\": {\n      \"match\": \"^#!(.*)$\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"string.unquoted.shebang.scala\"\n        }\n      },\n      \"name\": \"comment.block.shebang.scala\"\n    },\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#script-header\"\n        },\n        {\n          \"include\": \"#storage-modifiers\"\n        },\n        {\n          \"include\": \"#declarations\"\n        },\n        {\n          \"include\": \"#inheritance\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#imports\"\n        },\n        {\n          \"include\": \"#exports\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#initialization\"\n        },\n        {\n          \"include\": \"#xml-literal\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#using\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#scala-symbol\"\n        },\n        {\n          \"include\": \"#singleton-type\"\n        },\n        {\n          \"include\": \"#inline\"\n        },\n        {\n          \"include\": \"#scala-quoted\"\n        },\n        {\n          \"include\": \"#char-literal\"\n        },\n        {\n          \"include\": \"#empty-parentheses\"\n        },\n        {\n          \"include\": \"#parameter-list\"\n        },\n        {\n          \"include\": \"#qualifiedClassName\"\n        },\n        {\n          \"include\": \"#backQuotedVariable\"\n        },\n        {\n          \"include\": \"#curly-braces\"\n        },\n        {\n          \"include\": \"#meta-brackets\"\n        },\n        {\n          \"include\": \"#meta-bounds\"\n        },\n        {\n          \"include\": \"#meta-colons\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"end\": \"\\\"\\\"\\\"(?!\\\")\",\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\u[0-9A-Fa-f]{4}\",\n              \"name\": \"constant.character.escape.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scala\"\n            }\n          },\n          \"name\": \"string.quoted.triple.scala\"\n        },\n        {\n          \"begin\": \"\\\\b(raw)(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")(?!\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.triple.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(\\\"\\\"\\\")\",\n          \"end\": \"(\\\"\\\"\\\")(?!\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\\\\\\\\\|\\\\\\\\u[0-9A-Fa-f]{4}\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.triple.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"end\": \"\\\"\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scala\"\n            }\n          },\n          \"name\": \"string.quoted.double.scala\"\n        },\n        {\n          \"begin\": \"\\\\b(raw)(\\\")\",\n          \"end\": \"(\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(\\\")\",\n          \"end\": \"(\\\")|\\\\$\\n|(\\\\$[^\\\\$\\\"_{A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.interpolation.scala\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\$[\\\\$\\\"]\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"include\": \"#string-interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n              \"name\": \"constant.character.escape.scala\"\n            },\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.interpolated.scala\"\n            }\n          ],\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"string.quoted.double.interpolated.scala punctuation.definition.string.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.unrecognized-string-escape.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"using\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\()\\\\s*(using)\\\\s\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"string-interpolation\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.interpolation.scala\",\n          \"match\": \"\\\\$\\\\$\"\n        },\n        {\n          \"name\": \"meta.template.expression.scala\",\n          \"match\": \"(\\\\$)([A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.template-expression.begin.scala\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.template.expression.scala\",\n          \"begin\": \"\\\\$\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.begin.scala\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.template-expression.end.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ],\n          \"contentName\": \"meta.embedded.line.scala\"\n        }\n      ]\n    },\n    \"xml-entity\": {\n      \"match\": \"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        }\n      },\n      \"name\": \"constant.character.entity.xml\"\n    },\n    \"xml-singlequotedString\": {\n      \"end\": \"'\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.single.xml\"\n    },\n    \"meta-colons\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!:):(?!:)\",\n          \"name\": \"meta.colon.scala\"\n        }\n      ],\n      \"comment\": \"For themes: Matching type colons\"\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(return|throw)\\\\b\",\n          \"name\": \"keyword.control.flow.jump.scala\"\n        },\n        {\n          \"match\": \"\\\\b(classOf|isInstanceOf|asInstanceOf)\\\\b\",\n          \"name\": \"support.function.type-of.scala\"\n        },\n        {\n          \"match\": \"\\\\b(else|if|then|do|while|for|yield|match|case)\\\\b\",\n          \"name\": \"keyword.control.flow.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(if|while|for|match)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.control.flow.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(val)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.declaration.stable.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(var)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.declaration.volatile.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(?:(new|extension)|([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?))(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(catch|finally|try)\\\\b\",\n          \"name\": \"keyword.control.exception.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(try)(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"name\": \"keyword.control.exception.end.scala\"\n        },\n        {\n          \"match\": \"^\\\\s*(end)\\\\s+(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))?(?=\\\\s*(//.*|/\\\\*(?!.*\\\\*/\\\\s*\\\\S.*).*)?$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.end.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"(==?|!=|<=|>=|<>|<|>)\",\n          \"name\": \"keyword.operator.comparison.scala\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|/(?![/*])|%|~)\",\n          \"name\": \"keyword.operator.arithmetic.scala\"\n        },\n        {\n          \"match\": \"(?<![!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]|_)(!|&&|\\\\|\\\\|)(?![!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}])\",\n          \"name\": \"keyword.operator.logical.scala\"\n        },\n        {\n          \"match\": \"(<-|←|->|→|=>|⇒|\\\\?|\\\\:+|@|\\\\|)+\",\n          \"name\": \"keyword.operator.scala\"\n        }\n      ]\n    },\n    \"singleton-type\": {\n      \"match\": \"\\\\.(type)(?![A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[0-9])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.type.scala\"\n        }\n      }\n    },\n    \"inline\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(inline)(?=\\\\s+((?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)\\\\s*:)\",\n          \"name\": \"storage.modifier.other\"\n        },\n        {\n          \"match\": \"\\\\b(inline)\\\\b(?=(?:.(?!\\\\b(?:val|def|given)\\\\b))*\\\\b(if|match)\\\\b)\",\n          \"name\": \"keyword.control.flow.scala\"\n        }\n      ]\n    },\n    \"scala-quoted\": {\n      \"patterns\": [\n        {\n          \"match\": \"['$]\\\\{(?!')\",\n          \"name\": \"punctuation.section.block.begin.scala\"\n        },\n        {\n          \"match\": \"'\\\\[(?!')\",\n          \"name\": \"meta.bracket.scala\"\n        }\n      ]\n    },\n    \"xml-doublequotedString\": {\n      \"end\": \"\\\"\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.double.xml\"\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(def)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(trait)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(case)\\\\s+)?(class|object|enum)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(type)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.declaration\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)(?=(?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)?\\\\()\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)(?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`)(?=\\\\s*,)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(?:(val)|(var))\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.stable.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.volatile.scala\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.declaration.scala\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(package)\\\\s+(object)\\\\b\\\\s*(?!//|/\\\\*)((?:(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)|`[^`]+`))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.scoping.scala\"\n            },\n            \"2\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.class.declaration\"\n            }\n          }\n        },\n        {\n          \"end\": \"(?<=[\\\\n;])\",\n          \"begin\": \"\\\\b(package)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.import.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"(`[^`]+`|(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))\",\n              \"name\": \"entity.name.package.scala\"\n            },\n            {\n              \"match\": \"\\\\.\",\n              \"name\": \"punctuation.definition.package\"\n            }\n          ],\n          \"name\": \"meta.package.scala\"\n        },\n        {\n          \"match\": \"\\\\b(given)\\\\b\\\\s*([_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|`[^`]+`)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.given.declaration\"\n            }\n          }\n        }\n      ]\n    },\n    \"char-literal\": {\n      \"end\": \"'|$\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character.begin.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(?:[btnfr\\\\\\\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})\",\n          \"name\": \"constant.character.escape.scala\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"invalid.illegal.unrecognized-character-escape.scala\"\n        },\n        {\n          \"match\": \"[^']{2,}\",\n          \"name\": \"invalid.illegal.character-literal-too-long\"\n        },\n        {\n          \"match\": \"(?<!')[^']\",\n          \"name\": \"invalid.illegal.character-literal-too-long\"\n        }\n      ],\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.character.end.scala\"\n        }\n      },\n      \"name\": \"string.quoted.other constant.character.literal.scala\"\n    },\n    \"initialization\": {\n      \"match\": \"\\\\b(new)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.declaration.scala\"\n        }\n      }\n    },\n    \"scala-symbol\": {\n      \"match\": \"(?>'(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))(?!')\",\n      \"name\": \"constant.other.symbol.scala\"\n    },\n    \"curly-braces\": {\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.begin.scala\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.block.end.scala\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#code\"\n        }\n      ]\n    },\n    \"meta-brackets\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\{\",\n          \"comment\": \"The punctuation.section.*.begin is needed for return snippet in source bundle\",\n          \"name\": \"punctuation.section.block.begin.scala\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"comment\": \"The punctuation.section.*.end is needed for return snippet in source bundle\",\n          \"name\": \"punctuation.section.block.end.scala\"\n        },\n        {\n          \"match\": \"{|}|\\\\(|\\\\)|\\\\[|\\\\]\",\n          \"name\": \"meta.bracket.scala\"\n        }\n      ],\n      \"comment\": \"For themes: Brackets look nice when colored.\"\n    },\n    \"qualifiedClassName\": {\n      \"match\": \"(\\\\b([A-Z][\\\\w]*)(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.class\"\n        }\n      }\n    },\n    \"backQuotedVariable\": {\n      \"match\": \"`[^`]+`\"\n    },\n    \"storage-modifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(private\\\\[\\\\S+\\\\]|protected\\\\[\\\\S+\\\\]|private|protected)\\\\b\",\n          \"name\": \"storage.modifier.access\"\n        },\n        {\n          \"match\": \"\\\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\\\b\",\n          \"name\": \"storage.modifier.other\"\n        },\n        {\n          \"match\": \"(?<=^|\\\\s)\\\\b(transparent|opaque|infix|open|inline)\\\\b(?=[a-z\\\\s]*\\\\b(def|val|var|given|type|class|trait|object|enum)\\\\b)\",\n          \"name\": \"storage.modifier.other\"\n        }\n      ]\n    },\n    \"meta-bounds\": {\n      \"match\": \"<%|=:=|<:<|<%<|>:|<:\",\n      \"comment\": \"For themes: Matching view bounds\",\n      \"name\": \"meta.bounds.scala\"\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-comments\"\n        },\n        {\n          \"end\": \"(?!\\\\G)\",\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"end\": \"\\\\n\",\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.scala\"\n                }\n              },\n              \"name\": \"comment.line.double-slash.scala\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block-comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"/\\\\*\\\\*/\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"name\": \"comment.block.empty.scala\"\n        },\n        {\n          \"end\": \"\\\\*/\",\n          \"begin\": \"^\\\\s*(/\\\\*\\\\*)(?!/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"(@param)\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.scaladoc.scala\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.scala\"\n                }\n              }\n            },\n            {\n              \"match\": \"(@(?:tparam|throws))\\\\s+(\\\\S+)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.documentation.scaladoc.scala\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.class\"\n                }\n              }\n            },\n            {\n              \"match\": \"@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\\\b\",\n              \"name\": \"keyword.other.documentation.scaladoc.scala\"\n            },\n            {\n              \"match\": \"(\\\\[\\\\[)([^\\\\]]+)(\\\\]\\\\])\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.documentation.link.scala\"\n                },\n                \"2\": {\n                  \"name\": \"string.other.link.title.markdown\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.documentation.link.scala\"\n                }\n              }\n            },\n            {\n              \"include\": \"#block-comments\"\n            }\n          ],\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"name\": \"comment.block.documentation.scala\"\n        },\n        {\n          \"end\": \"\\\\*/\",\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scala\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#block-comments\"\n            }\n          ],\n          \"name\": \"comment.block.scala\"\n        }\n      ]\n    },\n    \"xml-embedded-content\": {\n      \"patterns\": [\n        {\n          \"end\": \"}\",\n          \"begin\": \"{\",\n          \"patterns\": [\n            {\n              \"include\": \"#code\"\n            }\n          ],\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.bracket.scala\"\n            }\n          },\n          \"name\": \"meta.source.embedded.scala\"\n        },\n        {\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.namespace.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.xml\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.xml\"\n            }\n          }\n        },\n        {\n          \"include\": \"#xml-doublequotedString\"\n        },\n        {\n          \"include\": \"#xml-singlequotedString\"\n        }\n      ]\n    },\n    \"inheritance\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(extends|with|derives)\\\\b\\\\s*([A-Z\\\\p{Lt}\\\\p{Lu}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|`[^`]+`|(?=\\\\([^\\\\)]+=>)|(?=(?:[A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?|[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+))|(?=\\\"))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.inherited-class.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"extension\": {\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*(extension)\\\\s+(?=[\\\\[\\\\(])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.declaration.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"parameter-list\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=[^\\\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}][A-Z\\\\p{Lt}\\\\p{Lu}_a-z\\\\$\\\\p{Lo}\\\\p{Nl}\\\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\\\-\\\\/:<>=?@^|~\\\\p{Sm}\\\\p{So}]+)?)\\\\s*(:)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.scala\"\n            },\n            \"2\": {\n              \"name\": \"meta.colon.scala\"\n            }\n          }\n        }\n      ]\n    },\n    \"xml-literal\": {\n      \"patterns\": [\n        {\n          \"end\": \"(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)\",\n          \"begin\": \"(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\\\s[^>]*)?></\\\\2>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#xml-embedded-content\"\n            }\n          ],\n          \"comment\": \"We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway.  Also code such as -- if (val <val2 || val> val3) will falsly be recognized as an xml tag.  The solution is to put a space on either side of the comparison operator\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"2\": {\n              \"name\": \"meta.scope.between-tag-pair.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            }\n          },\n          \"name\": \"meta.tag.no-content.xml\"\n        },\n        {\n          \"end\": \"(/?>)\",\n          \"begin\": \"(</?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^>]*?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#xml-embedded-content\"\n            }\n          ],\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.xml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.xml\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.tag.localname.xml\"\n            }\n          },\n          \"name\": \"meta.tag.xml\"\n        },\n        {\n          \"include\": \"#xml-entity\"\n        }\n      ]\n    }\n  },\n  \"uuid\": \"158C0929-299A-40C8-8D89-316BE0C446E8\",\n  \"patterns\": [\n    {\n      \"include\": \"#code\"\n    }\n  ],\n  \"name\": \"scala\",\n  \"scopeName\": \"source.scala\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/scheme.tmLanguage.json",
    "content": "{\n  \"comment\": \"\\n\\t\\tThe foldings do not currently work the way I want them to. This\\n\\t\\tmay be a limitation of the way they are applied rather than the\\n\\t\\tregexps in use. Nonetheless, the foldings will end on the last\\n\\t\\tidentically indented blank line following an s-expression. Not\\n\\t\\tideal perhaps, but it works. Also, the #illegal pattern never\\n\\t\\tmatches an unpaired ( as being illegal. Why?! -- Rob Rix\\n\\t\\t\\n\\t\\tOk, hopefully this grammar works better on quoted stuff now.  It\\n\\t\\tmay break for fancy macros, but should generally work pretty\\n\\t\\tsmoothly.  -- Jacob Rus\\n\\t\\t\\n\\t\\tI have attempted to get this under control but because of the way folding\\n\\t\\tand indentation interact in Textmate, I am not sure if it is possible. In the\\n\\t\\tmeantime, I have implemented Python-style folding anchored at newlines.\\n\\t\\tAdditionally, I have made some minor improvements to the numeric constant\\n\\t\\thighlighting. Next up is square bracket expressions, I guess, but that\\n\\t\\tshould be trivial. -- ozy`\\n\\t\",\n  \"fileTypes\": [\"scm\", \"ss\", \"sch\", \"rkt\"],\n  \"keyEquivalent\": \"^~S\",\n  \"name\": \"scheme\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#block-comment\"\n    },\n    {\n      \"include\": \"#sexp\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#language-functions\"\n    },\n    {\n      \"include\": \"#quote\"\n    },\n    {\n      \"include\": \"#illegal\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=;)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.scheme\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \";\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.scheme\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.semicolon.scheme\"\n        }\n      ]\n    },\n    \"block-comment\": {\n      \"begin\": \"\\\\#\\\\|\",\n      \"contentName\": \"comment\",\n      \"end\": \"\\\\|\\\\#\",\n      \"name\": \"comment\",\n      \"patterns\": [\n        {\n          \"include\": \"#block-comment\",\n          \"name\": \"comment\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"#[t|f]\",\n          \"name\": \"constant.language.boolean.scheme\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])((#e|#i)?[0-9]+(\\\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\\\s;()'\\\",\\\\[\\\\]])\",\n          \"name\": \"constant.numeric.scheme\"\n        }\n      ]\n    },\n    \"illegal\": {\n      \"match\": \"[()\\\\[\\\\]]\",\n      \"name\": \"invalid.illegal.parenthesis.scheme\"\n    },\n    \"language-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\(|\\\\[)) # preceded by space or ( \\n\\t\\t\\t\\t\\t\\t( do|or|and|else|quasiquote|begin|if|case|set!|\\n\\t\\t\\t\\t\\t\\t  cond|let|unquote|define|let\\\\*|unquote-splicing|delay|\\n\\t\\t\\t\\t\\t\\t  letrec)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\())\",\n          \"name\": \"keyword.control.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions run a test, and return a boolean\\n\\t\\t\\t\\t\\t\\tanswer.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( char-alphabetic|char-lower-case|char-numeric|\\n\\t\\t\\t\\t\\t\\t  char-ready|char-upper-case|char-whitespace|\\n\\t\\t\\t\\t\\t\\t  (?:char|string)(?:-ci)?(?:=|<=?|>=?)|\\n\\t\\t\\t\\t\\t\\t  atom|boolean|bound-identifier=|char|complex|\\n\\t\\t\\t\\t\\t\\t  identifier|integer|symbol|free-identifier=|inexact|\\n\\t\\t\\t\\t\\t\\t  eof-object|exact|list|(?:input|output)-port|pair|\\n\\t\\t\\t\\t\\t\\t  real|rational|zero|vector|negative|odd|null|string|\\n\\t\\t\\t\\t\\t\\t  eq|equal|eqv|even|number|positive|procedure\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(\\\\?)\\t\\t# name ends with ? sign\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.boolean-test.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions change one type into another.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( char->integer|exact->inexact|inexact->exact|\\n\\t\\t\\t\\t\\t\\t  integer->char|symbol->string|list->vector|\\n\\t\\t\\t\\t\\t\\t  list->string|identifier->symbol|vector->list|\\n\\t\\t\\t\\t\\t\\t  string->list|string->number|string->symbol|\\n\\t\\t\\t\\t\\t\\t  number->string\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.convert-type.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tThese functions are potentially dangerous because\\n\\t\\t\\t\\t\\t\\tthey have side-effects which could affect other\\n\\t\\t\\t\\t\\t\\tparts of the program.\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( set-(?:car|cdr)|\\t\\t\\t\\t # set car/cdr\\n\\t\\t\\t\\t\\t\\t  (?:vector|string)-(?:fill|set) # fill/set string/vector\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(!)\\t\\t\\t# name ends with ! sign\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.with-side-effects.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\t+, -, *, /, =, >, etc. \\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( >=?|<=?|=|[*/+-])\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\\t\",\n          \"name\": \"keyword.operator.arithmetic.scheme\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=(\\\\s|\\\\()) # preceded by space or (\\n\\t\\t\\t\\t\\t\\t( append|apply|approximate|\\n\\t\\t\\t\\t\\t\\t  call-with-current-continuation|call/cc|catch|\\n\\t\\t\\t\\t\\t\\t  construct-identifier|define-syntax|display|foo|\\n\\t\\t\\t\\t\\t\\t  for-each|force|format|cd|gen-counter|gen-loser|\\n\\t\\t\\t\\t\\t\\t  generate-identifier|last-pair|length|let-syntax|\\n\\t\\t\\t\\t\\t\\t  letrec-syntax|list|list-ref|list-tail|load|log|\\n\\t\\t\\t\\t\\t\\t  macro|magnitude|map|map-streams|max|member|memq|\\n\\t\\t\\t\\t\\t\\t  memv|min|newline|nil|not|peek-char|rationalize|\\n\\t\\t\\t\\t\\t\\t  read|read-char|return|reverse|sequence|substring|\\n\\t\\t\\t\\t\\t\\t  syntax|syntax-rules|transcript-off|transcript-on|\\n\\t\\t\\t\\t\\t\\t  truncate|unwrap-syntax|values-list|write|write-char|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # cons, car, cdr, etc\\n\\t\\t\\t\\t\\t\\t  cons|c(a|d){1,4}r| \\n                          \\n\\t\\t\\t\\t\\t\\t  # unary math operators\\n\\t\\t\\t\\t\\t\\t  abs|acos|angle|asin|assoc|assq|assv|atan|ceiling|\\n\\t\\t\\t\\t\\t\\t  cos|floor|round|sin|sqrt|tan|\\n\\t\\t\\t\\t\\t\\t  (?:real|imag)-part|numerator|denominator\\n                          \\n\\t\\t\\t\\t\\t\\t  # other math operators\\n\\t\\t\\t\\t\\t\\t  modulo|exp|expt|remainder|quotient|lcm|\\n                          \\n\\t\\t\\t\\t\\t\\t  # ports / files\\n\\t\\t\\t\\t\\t\\t  call-with-(?:input|output)-file|\\n\\t\\t\\t\\t\\t\\t  (?:close|current)-(?:input|output)-port|\\n\\t\\t\\t\\t\\t\\t  with-(?:input|output)-from-file|\\n\\t\\t\\t\\t\\t\\t  open-(?:input|output)-file|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # char-«foo»\\n\\t\\t\\t\\t\\t\\t  char-(?:downcase|upcase|ready)|\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # make-«foo»\\n\\t\\t\\t\\t\\t\\t  make-(?:polar|promise|rectangular|string|vector)\\n\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t  # string-«foo», vector-«foo»\\n\\t\\t\\t\\t\\t\\t  string(?:-(?:append|copy|length|ref))?|\\n\\t\\t\\t\\t\\t\\t  vector(?:-length|-ref)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=(\\\\s|\\\\()) # followed by space or (\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"support.function.general.scheme\"\n        }\n      ]\n    },\n    \"quote\": {\n      \"comment\": \"\\n\\t\\t\\t\\tWe need to be able to quote any kind of item, which creates\\n\\t\\t\\t\\ta tiny bit of complexity in our grammar.  It is hopefully\\n\\t\\t\\t\\tnot overwhelming complexity.\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tNote: the first two matches are special cases.  quoted\\n\\t\\t\\t\\tsymbols, and quoted empty lists are considered constant.other\\n\\t\\t\\t\\t\\n\\t\\t\\t\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.quoted.symbol.scheme\"\n            }\n          },\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(')\\\\s*\\n\\t\\t\\t\\t\\t\\t([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.symbol.scheme\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.quoted.empty-list.scheme\"\n            },\n            \"2\": {\n              \"name\": \"meta.expression.scheme\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.expression.begin.scheme\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.expression.end.scheme\"\n            }\n          },\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(')\\\\s*\\n\\t\\t\\t\\t\\t\\t((\\\\()\\\\s*(\\\\)))\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.empty-list.schem\"\n        },\n        {\n          \"begin\": \"(')\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.quoted.scheme\"\n            }\n          },\n          \"comment\": \"quoted double-quoted string or s-expression\",\n          \"end\": \"(?=[\\\\s()])|(?<=\\\\n)\",\n          \"name\": \"string.other.quoted-object.scheme\",\n          \"patterns\": [\n            {\n              \"include\": \"#quoted\"\n            }\n          ]\n        }\n      ]\n    },\n    \"quote-sexp\": {\n      \"begin\": \"(?<=\\\\()\\\\s*(quote)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.quote.scheme\"\n        }\n      },\n      \"comment\": \"\\n\\t\\t\\t\\tSomething quoted with (quote «thing»).  In this case «thing»\\n\\t\\t\\t\\twill not be evaluated, so we are considering it a string.\\n\\t\\t\\t\",\n      \"contentName\": \"string.other.quote.scheme\",\n      \"end\": \"(?=[\\\\s)])|(?<=\\\\n)\",\n      \"patterns\": [\n        {\n          \"include\": \"#quoted\"\n        }\n      ]\n    },\n    \"quoted\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.expression.begin.scheme\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.expression.end.scheme\"\n            }\n          },\n          \"name\": \"meta.expression.scheme\",\n          \"patterns\": [\n            {\n              \"include\": \"#quoted\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#quote\"\n        },\n        {\n          \"include\": \"#illegal\"\n        }\n      ]\n    },\n    \"sexp\": {\n      \"begin\": \"(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.begin.scheme\"\n        }\n      },\n      \"end\": \"(\\\\))(\\\\n)?\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.expression.end.scheme\"\n        },\n        \"2\": {\n          \"name\": \"meta.after-expression.scheme\"\n        }\n      },\n      \"name\": \"meta.expression.scheme\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=\\\\()       # preceded by (\\n\\t\\t\\t\\t\\t\\t(define)\\\\s+   # define\\n\\t\\t\\t\\t\\t\\t(\\\\()          # list of parameters\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\n\\t\\t\\t\\t\\t\\t  ((\\\\s+\\n\\t\\t\\t\\t\\t\\t    ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t   )*\\n\\t\\t\\t\\t\\t\\t  )\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\\\))\\n\\t\\t\\t\\t\\t\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.scheme\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.function.scheme\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scheme\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.function.scheme\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.function.scheme\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.declaration.procedure.scheme\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#sexp\"\n            },\n            {\n              \"include\": \"#illegal\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?<=\\\\() # preceded by (\\n\\t\\t\\t\\t\\t\\t(lambda)\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\\\() # opening paren\\n\\t\\t\\t\\t\\t\\t((?:\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t  \\\\s+\\n\\t\\t\\t\\t\\t\\t)*(?:\\n\\t\\t\\t\\t\\t\\t  ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\\n\\t\\t\\t\\t\\t\\t)?)\\n\\t\\t\\t\\t\\t\\t(\\\\)) # closing paren\\n\\t\\t\\t\\t\\t\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.scheme\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.scheme\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.scheme\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.variable.scheme\"\n            }\n          },\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tNot sure this one is quite correct.  That \\\\s* is\\n\\t\\t\\t\\t\\t\\tparticularly troubling\\n\\t\\t\\t\\t\\t\",\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.declaration.procedure.scheme\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#sexp\"\n            },\n            {\n              \"include\": \"#illegal\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\()(define)\\\\s([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\\\s*.*?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.scheme\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.scheme\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.declaration.variable.scheme\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#sexp\"\n            },\n            {\n              \"include\": \"#illegal\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#quote-sexp\"\n        },\n        {\n          \"include\": \"#quote\"\n        },\n        {\n          \"include\": \"#language-functions\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\)(space|newline|tab)(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.named.scheme\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\)x[0-9A-F]{2,4}(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.hex-literal.scheme\"\n        },\n        {\n          \"match\": \"(?<=[\\\\(\\\\s])(#\\\\\\\\).(?=[\\\\s\\\\)])\",\n          \"name\": \"constant.character.escape.scheme\"\n        },\n        {\n          \"comment\": \"\\n\\t\\t\\t\\t\\t\\tthe . in (a . b) which conses together two elements\\n\\t\\t\\t\\t\\t\\ta and b. (a b c) == (a . (b . (c . nil)))\\n\\t\\t\\t\\t\\t\",\n          \"match\": \"(?<=[ ()])\\\\.(?=[ ()])\",\n          \"name\": \"punctuation.separator.cons.scheme\"\n        },\n        {\n          \"include\": \"#sexp\"\n        },\n        {\n          \"include\": \"#illegal\"\n        }\n      ]\n    },\n    \"string\": {\n      \"begin\": \"(\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.scheme\"\n        }\n      },\n      \"end\": \"(\\\")\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.scheme\"\n        }\n      },\n      \"name\": \"string.quoted.double.scheme\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.scheme\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.scheme\",\n  \"uuid\": \"3EC2CFD0-909C-4692-AC29-1A60ADBC161E\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/scss.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-sass/blob/master/grammars/scss.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-sass/commit/f52ab12f7f9346cc2568129d8c4419bd3d506b47\",\n  \"name\": \"scss\",\n  \"scopeName\": \"source.css.scss\",\n  \"patterns\": [\n    {\n      \"include\": \"#variable_setting\"\n    },\n    {\n      \"include\": \"#at_rule_forward\"\n    },\n    {\n      \"include\": \"#at_rule_use\"\n    },\n    {\n      \"include\": \"#at_rule_include\"\n    },\n    {\n      \"include\": \"#at_rule_import\"\n    },\n    {\n      \"include\": \"#general\"\n    },\n    {\n      \"include\": \"#flow_control\"\n    },\n    {\n      \"include\": \"#rules\"\n    },\n    {\n      \"include\": \"#property_list\"\n    },\n    {\n      \"include\": \"#at_rule_mixin\"\n    },\n    {\n      \"include\": \"#at_rule_media\"\n    },\n    {\n      \"include\": \"#at_rule_function\"\n    },\n    {\n      \"include\": \"#at_rule_charset\"\n    },\n    {\n      \"include\": \"#at_rule_option\"\n    },\n    {\n      \"include\": \"#at_rule_namespace\"\n    },\n    {\n      \"include\": \"#at_rule_fontface\"\n    },\n    {\n      \"include\": \"#at_rule_page\"\n    },\n    {\n      \"include\": \"#at_rule_keyframes\"\n    },\n    {\n      \"include\": \"#at_rule_at_root\"\n    },\n    {\n      \"include\": \"#at_rule_supports\"\n    },\n    {\n      \"match\": \";\",\n      \"name\": \"punctuation.terminator.rule.css\"\n    }\n  ],\n  \"repository\": {\n    \"at_rule_charset\": {\n      \"begin\": \"\\\\s*((@)charset\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.charset.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;|$))\",\n      \"name\": \"meta.at-rule.charset.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        }\n      ]\n    },\n    \"at_rule_content\": {\n      \"begin\": \"\\\\s*((@)content\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.content.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;))\",\n      \"name\": \"meta.content.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#selectors\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_each\": {\n      \"begin\": \"\\\\s*((@)each\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.each.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=}))\",\n      \"name\": \"meta.at-rule.each.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(in|,)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"at_rule_else\": {\n      \"begin\": \"\\\\s*((@)else(\\\\s*(if)?))\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.else.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.else.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_extend\": {\n      \"begin\": \"\\\\s*((@)extend\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.extend.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.extend.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#selectors\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_fontface\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)font-face\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.fontface.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.fontface.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_for\": {\n      \"begin\": \"\\\\s*((@)for\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.for.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.for.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"(==|!=|<=|>=|<|>|from|to|through)\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"at_rule_forward\": {\n      \"begin\": \"\\\\s*((@)forward\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.forward.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.forward.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as|hide|show)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\w-]+)(\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.module.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.wildcard.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b[\\\\w-]+\\\\b\",\n          \"name\": \"entity.name.function.scss\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        }\n      ]\n    },\n    \"at_rule_function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*((@)function\\\\b)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.function.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"match\": \"\\\\s*((@)function\\\\b)\\\\s*\",\n          \"name\": \"meta.at-rule.function.scss\"\n        }\n      ]\n    },\n    \"at_rule_if\": {\n      \"begin\": \"\\\\s*((@)if\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.if.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?={)\",\n      \"name\": \"meta.at-rule.if.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_import\": {\n      \"begin\": \"\\\\s*((@)import\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.import.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;)|(?=}))\",\n      \"name\": \"meta.at-rule.import.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"at_rule_include\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@include)\\\\s+(?:([\\\\w-]+)\\\\s*(\\\\.))?([\\\\w-]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.include.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=@include)\\\\s+(?:([\\\\w-]+)\\\\s*(\\\\.))?([\\\\w-]+)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.at-rule.include.scss\"\n            },\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)include)\\\\b\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.at-rule.include.scss\"\n            },\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.include.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          }\n        }\n      ]\n    },\n    \"at_rule_keyframes\": {\n      \"begin\": \"(?<=^|\\\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.keyframes.scss\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"(?<=})\",\n      \"name\": \"meta.at-rule.keyframes.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<=@keyframes)\\\\s+((?:[_A-Za-z][-\\\\w]|-[_A-Za-z])[-\\\\w]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<=@keyframes)\\\\s+(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.scss\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scss\"\n            }\n          },\n          \"name\": \"string.quoted.double.scss\",\n          \"contentName\": \"entity.name.function.scss\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=@keyframes)\\\\s+(')\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.scss\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.scss\"\n            }\n          },\n          \"name\": \"string.quoted.single.scss\",\n          \"contentName\": \"entity.name.function.scss\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.keyframes.begin.scss\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.keyframes.end.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(?:(?:100|[1-9]\\\\d|\\\\d)%|from|to)(?=\\\\s*{)\",\n              \"name\": \"entity.other.attribute-name.scss\"\n            },\n            {\n              \"include\": \"#flow_control\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"#property_list\"\n            },\n            {\n              \"include\": \"#rules\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_media\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)media)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.media.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.media.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_docblock\"\n            },\n            {\n              \"include\": \"#comment_block\"\n            },\n            {\n              \"include\": \"#comment_line\"\n            },\n            {\n              \"match\": \"\\\\b(only)\\\\b\",\n              \"name\": \"keyword.control.operator.css.scss\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.media-query.begin.bracket.round.scss\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.media-query.end.bracket.round.scss\"\n                }\n              },\n              \"name\": \"meta.property-list.media-query.scss\",\n              \"patterns\": [\n                {\n                  \"begin\": \"(?<![-a-z])(?=[-a-z])\",\n                  \"end\": \"$|(?![-a-z])\",\n                  \"name\": \"meta.property-name.media-query.scss\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.css#media-features\"\n                    },\n                    {\n                      \"include\": \"source.css#property-names\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(:)\\\\s*(?!(\\\\s*{))\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.separator.key-value.scss\"\n                    }\n                  },\n                  \"end\": \"\\\\s*(;|(?=}|\\\\)))\",\n                  \"endCaptures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.terminator.rule.scss\"\n                    }\n                  },\n                  \"contentName\": \"meta.property-value.media-query.scss\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#general\"\n                    },\n                    {\n                      \"include\": \"#property_values\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#conditional_operators\"\n            },\n            {\n              \"include\": \"source.css#media-types\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_mixin\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@mixin)\\\\s+([\\\\w-]+)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=@mixin)\\\\s+([\\\\w-]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\"\n        },\n        {\n          \"match\": \"((@)mixin)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.mixin.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.mixin.scss\"\n        }\n      ]\n    },\n    \"at_rule_namespace\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=@namespace)\\\\s+(?=url)\",\n          \"end\": \"(?=;|$)\",\n          \"name\": \"meta.at-rule.namespace.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#string_single\"\n            },\n            {\n              \"include\": \"#string_double\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=@namespace)\\\\s+([\\\\w-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.namespace-prefix.scss\"\n            }\n          },\n          \"end\": \"(?=;|$)\",\n          \"name\": \"meta.at-rule.namespace.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#variables\"\n            },\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#string_single\"\n            },\n            {\n              \"include\": \"#string_double\"\n            }\n          ]\n        },\n        {\n          \"match\": \"((@)namespace)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.namespace.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            }\n          },\n          \"name\": \"meta.at-rule.namespace.scss\"\n        }\n      ]\n    },\n    \"at_rule_option\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.charset.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"match\": \"^\\\\s*((@)option\\\\b)\\\\s*\",\n      \"name\": \"meta.at-rule.option.scss\"\n    },\n    \"at_rule_page\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*((@)page)(?=:|\\\\s)\\\\s*([-:\\\\w]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.page.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.scss\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(?={)\",\n          \"name\": \"meta.at-rule.page.scss\"\n        }\n      ]\n    },\n    \"at_rule_return\": {\n      \"begin\": \"\\\\s*((@)(return)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.return.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*((?=;))\",\n      \"name\": \"meta.at-rule.return.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"at_rule_at_root\": {\n      \"begin\": \"\\\\s*((@)(at-root))(\\\\s+|$)\",\n      \"end\": \"\\\\s*(?={)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.at-root.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"name\": \"meta.at-rule.at-root.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#function_attributes\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#selectors\"\n        }\n      ]\n    },\n    \"at_rule_supports\": {\n      \"begin\": \"(?<=^|\\\\s)(@)supports\\\\b\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"keyword.control.at-rule.supports.scss\"\n        },\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"(?={)|$\",\n      \"name\": \"meta.at-rule.supports.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#logical_operators\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.definition.condition.begin.bracket.round.scss\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.definition.condition.end.bracket.round.scss\"\n        }\n      ]\n    },\n    \"at_rule_use\": {\n      \"begin\": \"\\\\s*((@)use\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.at-rule.use.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.use.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(as|with)\\\\b\",\n          \"name\": \"keyword.control.operator\"\n        },\n        {\n          \"match\": \"\\\\b[\\\\w-]+\\\\b\",\n          \"name\": \"variable.scss\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"variable.language.expanded-namespace.scss\"\n        },\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule_warn\": {\n      \"begin\": \"\\\\s*((@)(warn|debug|error)\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.warn.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=;)\",\n      \"name\": \"meta.at-rule.warn.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#string_single\"\n        }\n      ]\n    },\n    \"at_rule_while\": {\n      \"begin\": \"\\\\s*((@)while\\\\b)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.while.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.scss\"\n        }\n      },\n      \"end\": \"\\\\s*(?=})\",\n      \"name\": \"meta.at-rule.while.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#conditional_operators\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"comment_docblock\": {\n      \"name\": \"comment.block.documentation.scss\",\n      \"begin\": \"///\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.sassdoc\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"name\": \"comment.block.scss\"\n    },\n    \"comment_line\": {\n      \"begin\": \"//\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.scss\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"name\": \"comment.line.scss\"\n    },\n    \"constant_default\": {\n      \"match\": \"!default\",\n      \"name\": \"keyword.other.default.scss\"\n    },\n    \"constant_functions\": {\n      \"begin\": \"(?:([\\\\w-]+)(\\\\.))?([\\\\w-]+)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.access.module.scss\"\n        },\n        \"3\": {\n          \"name\": \"support.function.misc.scss\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        }\n      ]\n    },\n    \"constant_important\": {\n      \"match\": \"!important\",\n      \"name\": \"keyword.other.important.scss\"\n    },\n    \"constant_mathematical_symbols\": {\n      \"match\": \"\\\\b(\\\\+|-|\\\\*|/)\\\\b\",\n      \"name\": \"support.constant.mathematical-symbols.scss\"\n    },\n    \"constant_optional\": {\n      \"match\": \"!optional\",\n      \"name\": \"keyword.other.optional.scss\"\n    },\n    \"constant_sass_functions\": {\n      \"begin\": \"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.misc.scss\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.scss\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameters\"\n        }\n      ]\n    },\n    \"flow_control\": {\n      \"patterns\": [\n        {\n          \"include\": \"#at_rule_if\"\n        },\n        {\n          \"include\": \"#at_rule_else\"\n        },\n        {\n          \"include\": \"#at_rule_warn\"\n        },\n        {\n          \"include\": \"#at_rule_for\"\n        },\n        {\n          \"include\": \"#at_rule_while\"\n        },\n        {\n          \"include\": \"#at_rule_each\"\n        },\n        {\n          \"include\": \"#at_rule_return\"\n        }\n      ]\n    },\n    \"function_attributes\": {\n      \"patterns\": [\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.scss\"\n        },\n        {\n          \"include\": \"#general\"\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"match\": \"[={}\\\\?;@]\",\n          \"name\": \"invalid.illegal.scss\"\n        }\n      ]\n    },\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([\\\\w-]{1,})(\\\\()\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.scss\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameters\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([\\\\w-]{1,})\",\n          \"name\": \"support.function.misc.scss\"\n        }\n      ]\n    },\n    \"general\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#comment_docblock\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"begin\": \"#{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.begin.bracket.curly.scss\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.interpolation.end.bracket.curly.scss\"\n        }\n      },\n      \"name\": \"variable.interpolation.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"conditional_operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comparison_operators\"\n        },\n        {\n          \"include\": \"#logical_operators\"\n        }\n      ]\n    },\n    \"comparison_operators\": {\n      \"match\": \"==|!=|<=|>=|<|>\",\n      \"name\": \"keyword.operator.comparison.scss\"\n    },\n    \"logical_operators\": {\n      \"match\": \"\\\\b(not|or|and)\\\\b\",\n      \"name\": \"keyword.operator.logical.scss\"\n    },\n    \"map\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.map.begin.bracket.round.scss\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.map.end.bracket.round.scss\"\n        }\n      },\n      \"name\": \"meta.definition.variable.map.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment_docblock\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        },\n        {\n          \"match\": \"\\\\b([\\\\w-]+)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.map.key.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.scss\"\n        },\n        {\n          \"include\": \"#map\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"match\": \"[-+*/](?!\\\\s*[-+*/])\",\n      \"name\": \"keyword.operator.css\"\n    },\n    \"parameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_attributes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"match\": \"[^'\\\",) \\\\t]+\",\n          \"name\": \"variable.parameter.url.scss\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.delimiter.scss\"\n        }\n      ]\n    },\n    \"properties\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![-a-z])(?=[-a-z])\",\n          \"end\": \"$|(?![-a-z])\",\n          \"name\": \"meta.property-name.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css#property-names\"\n            },\n            {\n              \"include\": \"#at_rule_include\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(:)\\\\s*(?!(\\\\s*{))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          },\n          \"end\": \"\\\\s*(;|(?=}|\\\\)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.scss\"\n            }\n          },\n          \"contentName\": \"meta.property-value.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#general\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"property_list\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.begin.bracket.curly.scss\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.property-list.end.bracket.curly.scss\"\n        }\n      },\n      \"name\": \"meta.property-list.scss\",\n      \"patterns\": [\n        {\n          \"include\": \"#flow_control\"\n        },\n        {\n          \"include\": \"#rules\"\n        },\n        {\n          \"include\": \"#properties\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"property_values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string_single\"\n        },\n        {\n          \"include\": \"#string_double\"\n        },\n        {\n          \"include\": \"#constant_functions\"\n        },\n        {\n          \"include\": \"#constant_sass_functions\"\n        },\n        {\n          \"include\": \"#constant_important\"\n        },\n        {\n          \"include\": \"#constant_default\"\n        },\n        {\n          \"include\": \"#constant_optional\"\n        },\n        {\n          \"include\": \"source.css#numeric-values\"\n        },\n        {\n          \"include\": \"source.css#property-keywords\"\n        },\n        {\n          \"include\": \"source.css#color-keywords\"\n        },\n        {\n          \"include\": \"source.css#property-names\"\n        },\n        {\n          \"include\": \"#constant_mathematical_symbols\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.begin.bracket.round.scss\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.end.bracket.round.scss\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#general\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        }\n      ]\n    },\n    \"rules\": {\n      \"patterns\": [\n        {\n          \"include\": \"#general\"\n        },\n        {\n          \"include\": \"#at_rule_extend\"\n        },\n        {\n          \"include\": \"#at_rule_content\"\n        },\n        {\n          \"include\": \"#at_rule_include\"\n        },\n        {\n          \"include\": \"#at_rule_media\"\n        },\n        {\n          \"include\": \"#selectors\"\n        }\n      ]\n    },\n    \"selector_attribute\": {\n      \"match\": \"(?xi)\\n(\\\\[)\\n\\\\s*\\n(\\n  (?:\\n    [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+?\\n)\\n(?:\\n  \\\\s*([~|^$*]?=)\\\\s*\\n  (?:\\n    (\\n      (?:\\n        [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]       # Valid identifier characters\\n        | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n        | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n        | \\\\.?\\\\$                          # Possible start of interpolation variable\\n        | }                                # Possible end of interpolation\\n      )+\\n    )\\n    |\\n    ((\\\")(.*?)(\\\"))\\n    |\\n    ((')(.*?)('))\\n  )\\n)?\\n\\\\s*\\n(\\\\])\",\n      \"name\": \"meta.attribute-selector.scss\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.attribute-selector.begin.bracket.square.scss\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.attribute-name.attribute.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.scss\"\n        },\n        \"4\": {\n          \"name\": \"string.unquoted.attribute-value.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"5\": {\n          \"name\": \"string.quoted.double.attribute-value.scss\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        },\n        \"9\": {\n          \"name\": \"string.quoted.single.attribute-value.scss\"\n        },\n        \"10\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        },\n        \"11\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        \"12\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        },\n        \"13\": {\n          \"name\": \"punctuation.definition.attribute-selector.end.bracket.square.scss\"\n        }\n      }\n    },\n    \"selector_class\": {\n      \"match\": \"(?x)\\n(\\\\.)                                  # Valid class-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n  | ;                                  # - A semicolon\\n)\",\n      \"name\": \"entity.other.attribute-name.class.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_custom\": {\n      \"match\": \"\\\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\\\.|\\\\s++[^:]|\\\\s*[,\\\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\\\([0-9A-Za-z]*\\\\))?)\",\n      \"name\": \"entity.name.tag.custom.scss\"\n    },\n    \"selector_id\": {\n      \"match\": \"(?x)\\n(\\\\#)                                  # Valid id-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.?\\\\$                          # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.id.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_placeholder\": {\n      \"match\": \"(?x)\\n(%)                                    # Valid placeholder-name\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\.\\\\$                           # Possible start of interpolation module scope variable\\n    | \\\\$                              # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= ;                                  # - End of statement\\n  | $                                  # - End of the line\\n  | [\\\\s,\\\\#)\\\\[:{>+~|]                # - Another selector\\n  | \\\\.[^$]                            # - Class selector, negating module variable\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.placeholder.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"parent_selector_suffix\": {\n      \"match\": \"(?x)\\n(?<=&)\\n(\\n  (?: [-a-zA-Z_0-9]|[^\\\\x00-\\\\x7F]     # Valid identifier characters\\n    | \\\\\\\\(?:[0-9a-fA-F]{1,6}|.)       # Escape sequence\\n    | \\\\#\\\\{                           # Interpolation (escaped to avoid Coffeelint errors)\\n    | \\\\$                              # Possible start of interpolation variable\\n    | }                                # Possible end of interpolation\\n  )+\\n)                                      # Followed by either:\\n(?= $                                  # - End of the line\\n  | [\\\\s,.\\\\#)\\\\[:{>+~|]               # - Another selector\\n  | /\\\\*                               # - A block comment\\n)\",\n      \"name\": \"entity.other.attribute-name.parent-selector-suffix.css\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.entity.css\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\([0-9a-fA-F]{1,6}|.)\",\n              \"name\": \"constant.character.escape.scss\"\n            },\n            {\n              \"match\": \"\\\\$|}\",\n              \"name\": \"invalid.illegal.identifier.scss\"\n            }\n          ]\n        }\n      }\n    },\n    \"selector_pseudo_class\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((:)\\\\bnth-(?:child|last-child|of-type|last-of-type))(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.pseudo-class.begin.bracket.round.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.pseudo-class.end.bracket.round.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"match\": \"\\\\d+\",\n              \"name\": \"constant.numeric.css\"\n            },\n            {\n              \"match\": \"(?<=\\\\d)n\\\\b|\\\\b(n|even|odd)\\\\b\",\n              \"name\": \"constant.other.scss\"\n            },\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"invalid.illegal.scss\"\n            }\n          ]\n        },\n        {\n          \"include\": \"source.css#pseudo-classes\"\n        },\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"source.css#functional-pseudo-classes\"\n        }\n      ]\n    },\n    \"selectors\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.css#tag-names\"\n        },\n        {\n          \"include\": \"#selector_custom\"\n        },\n        {\n          \"include\": \"#selector_class\"\n        },\n        {\n          \"include\": \"#selector_id\"\n        },\n        {\n          \"include\": \"#selector_pseudo_class\"\n        },\n        {\n          \"include\": \"#tag_wildcard\"\n        },\n        {\n          \"include\": \"#tag_parent_reference\"\n        },\n        {\n          \"include\": \"source.css#pseudo-elements\"\n        },\n        {\n          \"include\": \"#selector_attribute\"\n        },\n        {\n          \"include\": \"#selector_placeholder\"\n        },\n        {\n          \"include\": \"#parent_selector_suffix\"\n        }\n      ]\n    },\n    \"string_double\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        }\n      },\n      \"name\": \"string.quoted.double.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n          \"name\": \"constant.character.escape.scss\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"string_single\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.scss\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.scss\"\n        }\n      },\n      \"name\": \"string.quoted.single.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(\\\\h{1,6}|.)\",\n          \"name\": \"constant.character.escape.scss\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"tag_parent_reference\": {\n      \"match\": \"&\",\n      \"name\": \"entity.name.tag.reference.scss\"\n    },\n    \"tag_wildcard\": {\n      \"match\": \"\\\\*\",\n      \"name\": \"entity.name.tag.wildcard.scss\"\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        }\n      ]\n    },\n    \"variable_setting\": {\n      \"begin\": \"(?=\\\\$[\\\\w-]+\\\\s*:)\",\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.terminator.rule.scss\"\n        }\n      },\n      \"contentName\": \"meta.definition.variable.scss\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\$[\\\\w-]+(?=\\\\s*:)\",\n          \"name\": \"variable.scss\"\n        },\n        {\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.scss\"\n            }\n          },\n          \"end\": \"(?=;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment_docblock\"\n            },\n            {\n              \"include\": \"#comment_block\"\n            },\n            {\n              \"include\": \"#comment_line\"\n            },\n            {\n              \"include\": \"#map\"\n            },\n            {\n              \"include\": \"#property_values\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.delimiter.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([\\\\w-]+)(\\\\.)(\\\\$[\\\\w-]+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.scss\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.access.module.scss\"\n            },\n            \"3\": {\n              \"name\": \"variable.scss\"\n            }\n          }\n        },\n        {\n          \"match\": \"(\\\\$|\\\\-\\\\-)[A-Za-z0-9_-]+\\\\b\",\n          \"name\": \"variable.scss\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/shaderlab.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/tgjones/shaders-tmLanguage/blob/master/grammars/shaderlab.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/tgjones/shaders-tmLanguage/commit/c72c8b39380ba5a86c58ceed053b5d965ebf38b3\",\n  \"name\": \"shaderlab\",\n  \"scopeName\": \"source.shaderlab\",\n  \"patterns\": [\n    {\n      \"name\": \"comment.line.double-slash.shaderlab\",\n      \"begin\": \"//\",\n      \"end\": \"$\"\n    },\n    {\n      \"name\": \"support.type.basic.shaderlab\",\n      \"match\": \"\\\\b(?i:Range|Float|Int|Color|Vector|2D|3D|Cube|Any)\\\\b\"\n    },\n    {\n      \"include\": \"#numbers\"\n    },\n    {\n      \"name\": \"storage.type.structure.shaderlab\",\n      \"match\": \"\\\\b(?i:Shader|Properties|SubShader|Pass|Category)\\\\b\"\n    },\n    {\n      \"name\": \"support.type.propertyname.shaderlab\",\n      \"match\": \"\\\\b(?i:Name|Tags|Fallback|CustomEditor|Cull|ZWrite|ZTest|Offset|Blend|BlendOp|ColorMask|AlphaToMask|LOD|Lighting|Stencil|Ref|ReadMask|WriteMask|Comp|CompBack|CompFront|Fail|ZFail|UsePass|GrabPass|Dependency|Material|Diffuse|Ambient|Shininess|Specular|Emission|Fog|Mode|Density|SeparateSpecular|SetTexture|Combine|ConstantColor|Matrix|AlphaTest|ColorMaterial|BindChannels|Bind)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.shaderlab\",\n      \"match\": \"\\\\b(?i:Back|Front|On|Off|[RGBA]{1,3}|AmbientAndDiffuse|Emission)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.comparisonfunction.shaderlab\",\n      \"match\": \"\\\\b(?i:Less|Greater|LEqual|GEqual|Equal|NotEqual|Always|Never)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.stenciloperation.shaderlab\",\n      \"match\": \"\\\\b(?i:Keep|Zero|Replace|IncrSat|DecrSat|Invert|IncrWrap|DecrWrap)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.texturecombiners.shaderlab\",\n      \"match\": \"\\\\b(?i:Previous|Primary|Texture|Constant|Lerp|Double|Quad|Alpha)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.fog.shaderlab\",\n      \"match\": \"\\\\b(?i:Global|Linear|Exp2|Exp)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.bindchannels.shaderlab\",\n      \"match\": \"\\\\b(?i:Vertex|Normal|Tangent|TexCoord0|TexCoord1)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.blendoperations.shaderlab\",\n      \"match\": \"\\\\b(?i:Add|Sub|RevSub|Min|Max|LogicalClear|LogicalSet|LogicalCopyInverted|LogicalCopy|LogicalNoop|LogicalInvert|LogicalAnd|LogicalNand|LogicalOr|LogicalNor|LogicalXor|LogicalEquiv|LogicalAndReverse|LogicalAndInverted|LogicalOrReverse|LogicalOrInverted)\\\\b\"\n    },\n    {\n      \"name\": \"support.constant.property-value.blendfactors.shaderlab\",\n      \"match\": \"\\\\b(?i:One|Zero|SrcColor|SrcAlpha|DstColor|DstAlpha|OneMinusSrcColor|OneMinusSrcAlpha|OneMinusDstColor|OneMinusDstAlpha)\\\\b\"\n    },\n    {\n      \"name\": \"support.variable.reference.shaderlab\",\n      \"match\": \"\\\\[([a-zA-Z_][a-zA-Z0-9_]*)\\\\](?!\\\\s*[a-zA-Z_][a-zA-Z0-9_]*\\\\s*\\\\(\\\")\"\n    },\n    {\n      \"name\": \"meta.attribute.shaderlab\",\n      \"begin\": \"(\\\\[)\",\n      \"end\": \"(\\\\])\",\n      \"patterns\": [\n        {\n          \"name\": \"support.type.attributename.shaderlab\",\n          \"match\": \"\\\\G([a-zA-Z]+)\\\\b\"\n        },\n        {\n          \"include\": \"#numbers\"\n        }\n      ]\n    },\n    {\n      \"name\": \"support.variable.declaration.shaderlab\",\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*\\\\(\"\n    },\n    {\n      \"name\": \"meta.cgblock\",\n      \"begin\": \"\\\\b(CGPROGRAM|CGINCLUDE)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other\"\n        }\n      },\n      \"end\": \"\\\\b(ENDCG)\\\\b\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#hlsl-embedded\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.hlslblock\",\n      \"begin\": \"\\\\b(HLSLPROGRAM|HLSLINCLUDE)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other\"\n        }\n      },\n      \"end\": \"\\\\b(ENDHLSL)\\\\b\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#hlsl-embedded\"\n        }\n      ]\n    },\n    {\n      \"name\": \"string.quoted.double.shaderlab\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\"\n    }\n  ],\n  \"repository\": {\n    \"numbers\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.shaderlab\",\n          \"match\": \"\\\\b([0-9]+\\\\.?[0-9]*)\\\\b\"\n        }\n      ]\n    },\n    \"hlsl-embedded\": {\n      \"patterns\": [\n        {\n          \"include\": \"source.hlsl\"\n        },\n        {\n          \"name\": \"storage.type.basic.shaderlab\",\n          \"match\": \"\\\\b(fixed([1-4](x[1-4])?)?)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.transformations.shaderlab\",\n          \"match\": \"\\\\b(UNITY_MATRIX_MVP|UNITY_MATRIX_MV|UNITY_MATRIX_M|UNITY_MATRIX_V|UNITY_MATRIX_P|UNITY_MATRIX_VP|UNITY_MATRIX_T_MV|UNITY_MATRIX_I_V|UNITY_MATRIX_IT_MV|_Object2World|_World2Object|unity_ObjectToWorld|unity_WorldToObject)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.camera.shaderlab\",\n          \"match\": \"\\\\b(_WorldSpaceCameraPos|_ProjectionParams|_ScreenParams|_ZBufferParams|unity_OrthoParams|unity_CameraProjection|unity_CameraInvProjection|unity_CameraWorldClipPlanes)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.time.shaderlab\",\n          \"match\": \"\\\\b(_Time|_SinTime|_CosTime|unity_DeltaTime)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.lighting.shaderlab\",\n          \"match\": \"\\\\b(_LightColor0|_WorldSpaceLightPos0|_LightMatrix0|unity_4LightPosX0|unity_4LightPosY0|unity_4LightPosZ0|unity_4LightAtten0|unity_LightColor|_LightColor|unity_LightPosition|unity_LightAtten|unity_SpotDirection)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.fog.shaderlab\",\n          \"match\": \"\\\\b(unity_AmbientSky|unity_AmbientEquator|unity_AmbientGround|UNITY_LIGHTMODEL_AMBIENT|unity_FogColor|unity_FogParams)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.various.shaderlab\",\n          \"match\": \"\\\\b(unity_LODFade)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.preprocessor.targetplatform.shaderlab\",\n          \"match\": \"\\\\b(SHADER_API_D3D9|SHADER_API_D3D11|SHADER_API_GLCORE|SHADER_API_OPENGL|SHADER_API_GLES|SHADER_API_GLES3|SHADER_API_METAL|SHADER_API_D3D11_9X|SHADER_API_PSSL|SHADER_API_XBOXONE|SHADER_API_PSP2|SHADER_API_WIIU|SHADER_API_MOBILE|SHADER_API_GLSL)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.preprocessor.targetmodel.shaderlab\",\n          \"match\": \"\\\\b(SHADER_TARGET)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.preprocessor.unityversion.shaderlab\",\n          \"match\": \"\\\\b(UNITY_VERSION)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.preprocessor.platformdifference.shaderlab\",\n          \"match\": \"\\\\b(UNITY_BRANCH|UNITY_FLATTEN|UNITY_NO_SCREENSPACE_SHADOWS|UNITY_NO_LINEAR_COLORSPACE|UNITY_NO_RGBM|UNITY_NO_DXT5nm|UNITY_FRAMEBUFFER_FETCH_AVAILABLE|UNITY_USE_RGBA_FOR_POINT_SHADOWS|UNITY_ATTEN_CHANNEL|UNITY_HALF_TEXEL_OFFSET|UNITY_UV_STARTS_AT_TOP|UNITY_MIGHT_NOT_HAVE_DEPTH_Texture|UNITY_NEAR_CLIP_VALUE|UNITY_VPOS_TYPE|UNITY_CAN_COMPILE_TESSELLATION|UNITY_COMPILER_HLSL|UNITY_COMPILER_HLSL2GLSL|UNITY_COMPILER_CG|UNITY_REVERSED_Z)\\\\b\"\n        },\n        {\n          \"name\": \"support.variable.preprocessor.texture2D.shaderlab\",\n          \"match\": \"\\\\b(UNITY_PASS_FORWARDBASE|UNITY_PASS_FORWARDADD|UNITY_PASS_DEFERRED|UNITY_PASS_SHADOWCASTER|UNITY_PASS_PREPASSBASE|UNITY_PASS_PREPASSFINAL)\\\\b\"\n        },\n        {\n          \"name\": \"support.class.structures.shaderlab\",\n          \"match\": \"\\\\b(appdata_base|appdata_tan|appdata_full|appdata_img)\\\\b\"\n        },\n        {\n          \"name\": \"support.class.surface.shaderlab\",\n          \"match\": \"\\\\b(SurfaceOutputStandardSpecular|SurfaceOutputStandard|SurfaceOutput|Input)\\\\b\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/shellscript.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-shellscript/blob/master/grammars/shell-unix-bash.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-shellscript/commit/4f8d7bb5cc4d1643674551683df10fe552dd5a6f\",\n  \"name\": \"shellscript\",\n  \"scopeName\": \"source.shell\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#pipeline\"\n    },\n    {\n      \"include\": \"#list\"\n    },\n    {\n      \"include\": \"#compound-command\"\n    },\n    {\n      \"include\": \"#loop\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#function-definition\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#interpolation\"\n    },\n    {\n      \"include\": \"#heredoc\"\n    },\n    {\n      \"include\": \"#herestring\"\n    },\n    {\n      \"include\": \"#redirection\"\n    },\n    {\n      \"include\": \"#pathname\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"include\": \"#support\"\n    }\n  ],\n  \"repository\": {\n    \"case-clause\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=\\\\S)\",\n          \"end\": \";;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.case-clause.shell\"\n            }\n          },\n          \"name\": \"meta.scope.case-clause.shell\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(|(?=\\\\S)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.case-pattern.shell\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.case-pattern.shell\"\n                }\n              },\n              \"name\": \"meta.scope.case-pattern.shell\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\|\",\n                  \"name\": \"punctuation.separator.pipe-sign.shell\"\n                },\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#variable\"\n                },\n                {\n                  \"include\": \"#interpolation\"\n                },\n                {\n                  \"include\": \"#pathname\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=;;)\",\n              \"name\": \"meta.scope.case-clause-body.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"comment\": {\n      \"begin\": \"(^\\\\s+)?(?<=^|\\\\W)(?<!-)(?=#)(?!#{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.shell\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#!\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.shebang.shell\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.shebang.shell\"\n        },\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.shell\"\n            }\n          },\n          \"end\": \"$\",\n          \"name\": \"comment.line.number-sign.shell\"\n        }\n      ]\n    },\n    \"compound-command\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\[{1,2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.logical-expression.shell\"\n            }\n          },\n          \"end\": \"\\\\]{1,2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.logical-expression.shell\"\n            }\n          },\n          \"name\": \"meta.scope.logical-expression.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#logical-expression\"\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\({2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\){2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.other.math.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.subshell.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.subshell.shell\"\n            }\n          },\n          \"name\": \"meta.scope.subshell.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=\\\\s|^){(?=\\\\s|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;)\\\\s*(})\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.shell\"\n            }\n          },\n          \"name\": \"meta.scope.group.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-definition\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(function)\\\\s+([^\\\\s\\\\\\\\]+)(?:\\\\s*(\\\\(\\\\)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.shell\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.shell\"\n            }\n          },\n          \"end\": \";|&|$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.function.shell\"\n            }\n          },\n          \"name\": \"meta.function.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)([^\\\\s\\\\\\\\=]+)\\\\s*(\\\\(\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.shell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.shell\"\n            }\n          },\n          \"end\": \";|&|$\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.function.shell\"\n            }\n          },\n          \"name\": \"meta.function.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"heredoc\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(RUBY)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(RUBY)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.ruby.shell\",\n          \"contentName\": \"source.ruby.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(RUBY)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(RUBY)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.ruby.shell\",\n          \"contentName\": \"source.ruby.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(PYTHON)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(PYTHON)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.python.shell\",\n          \"contentName\": \"source.python.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(PYTHON)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(PYTHON)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.python.shell\",\n          \"contentName\": \"source.python.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.python\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(APPLESCRIPT)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(APPLESCRIPT)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.applescript.shell\",\n          \"contentName\": \"source.applescript.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(APPLESCRIPT)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(APPLESCRIPT)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.applescript.shell\",\n          \"contentName\": \"source.applescript.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.applescript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(HTML)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(HTML)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.html.shell\",\n          \"contentName\": \"text.html.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(HTML)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(HTML)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.html.shell\",\n          \"contentName\": \"text.html.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.basic\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(MARKDOWN)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(MARKDOWN)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.markdown.shell\",\n          \"contentName\": \"text.html.markdown.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(MARKDOWN)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(MARKDOWN)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.markdown.shell\",\n          \"contentName\": \"text.html.markdown.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(TEXTILE)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(TEXTILE)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.textile.shell\",\n          \"contentName\": \"text.html.textile.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.textile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(TEXTILE)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(TEXTILE)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.textile.shell\",\n          \"contentName\": \"text.html.textile.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.textile\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|'|)\\\\s*(SHELL)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"contentName\": \"source.shell.embedded.shell\",\n          \"name\": \"string.unquoted.heredoc.no-indent.shell.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|'|)\\\\s*(SHELL)(?=\\\\s|;|&|<|\\\"|')\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.shell.shell\",\n          \"contentName\": \"source.shell.embedded.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"source.shell\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*(\\\"|')\\\\s*\\\\\\\\?([^;&<\\\\s]+)\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.no-indent.shell\"\n        },\n        {\n          \"begin\": \"(<<)\\\\s*(\\\"|')\\\\s*\\\\\\\\?([^;&<\\\\s]+)\\\\2\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\3)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.shell\"\n        },\n        {\n          \"begin\": \"(<<)-\\\\s*\\\\\\\\?([^;&<\\\\s]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^\\\\t*(\\\\2)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.expanded.no-indent.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(<<)\\\\s*\\\\\\\\?([^;&<\\\\s]+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.heredoc.shell\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"end\": \"^(\\\\2)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.heredoc-token.shell\"\n            }\n          },\n          \"name\": \"string.unquoted.heredoc.expanded.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"herestring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(<<<)\\\\s*(('))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.single.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"(')\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.single.shell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"meta.herestring.shell\",\n          \"contentName\": \"string.quoted.single.shell\"\n        },\n        {\n          \"begin\": \"(<<<)\\\\s*((\\\"))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.quoted.double.shell\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"(\\\")\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"string.quoted.double.shell\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"meta.herestring.shell\",\n          \"contentName\": \"string.quoted.double.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.herestring.shell\"\n            },\n            \"2\": {\n              \"name\": \"string.unquoted.herestring.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          },\n          \"match\": \"(<<<)\\\\s*(([^\\\\s)\\\\\\\\]|\\\\\\\\.)+)\",\n          \"name\": \"meta.herestring.shell\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\$\\\\({2}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\){2}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.other.math.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.backtick.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[`\\\\\\\\$]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"begin\": \"(?<=\\\\W)(?=#)(?!#{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.whitespace.comment.leading.shell\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"begin\": \"#\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.comment.shell\"\n                    }\n                  },\n                  \"end\": \"(?=`)\",\n                  \"name\": \"comment.line.number-sign.shell\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.dollar.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?=\\\\s|;|&|$)\",\n          \"name\": \"keyword.control.shell\"\n        },\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?:export|declare|typeset|local|readonly)(?=\\\\s|;|&|$)\",\n          \"name\": \"storage.modifier.shell\"\n        }\n      ]\n    },\n    \"list\": {\n      \"patterns\": [\n        {\n          \"match\": \";|&&|&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.list.shell\"\n        }\n      ]\n    },\n    \"logical-expression\": {\n      \"patterns\": [\n        {\n          \"comment\": \"do we want a special rule for ( expr )?\",\n          \"match\": \"=[=~]?|!=?|<|>|&&|\\\\|\\\\|\",\n          \"name\": \"keyword.operator.logical.shell\"\n        },\n        {\n          \"match\": \"(?<!\\\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])\",\n          \"name\": \"keyword.operator.logical.shell\"\n        }\n      ]\n    },\n    \"loop\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(for)\\\\s+(?=\\\\({2})\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.for-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(for)\\\\s+(.+?)\\\\s+(in)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.loop.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.for-in-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(while|until)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)done(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.while-loop.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)(select)\\\\s+((?:[^\\\\s\\\\\\\\]|\\\\\\\\.)+)(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.loop.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)(done)(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.select-block.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)case(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)esac(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.case-block.shell\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=^|;|&|\\\\s)in(?=\\\\s|;|&|$)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.control.shell\"\n                }\n              },\n              \"end\": \"(?<=^|;|&|\\\\s)(?=esac(\\\\s|;|&|$))\",\n              \"name\": \"meta.scope.case-body.shell\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#case-clause\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=^|;|&|\\\\s)if(?=\\\\s|;|&|$)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"end\": \"(?<=^|;|&|\\\\s)fi(?=\\\\s|;|&|$)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.shell\"\n            }\n          },\n          \"name\": \"meta.scope.if-block.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"math\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"match\": \"\\\\+{1,2}|-{1,2}|!|~|\\\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\\\|{1,2}|&{1,2}|\\\\?|\\\\:|,|=|[*/%+\\\\-&^|]=|<<=|>>=\",\n          \"name\": \"keyword.operator.arithmetic.shell\"\n        },\n        {\n          \"match\": \"0[xX][0-9A-Fa-f]+\",\n          \"name\": \"constant.numeric.hex.shell\"\n        },\n        {\n          \"match\": \"0\\\\d+\",\n          \"name\": \"constant.numeric.octal.shell\"\n        },\n        {\n          \"match\": \"\\\\d{1,2}#[0-9a-zA-Z@_]+\",\n          \"name\": \"constant.numeric.other.shell\"\n        },\n        {\n          \"match\": \"\\\\d+\",\n          \"name\": \"constant.numeric.integer.shell\"\n        }\n      ]\n    },\n    \"pathname\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=\\\\s|:|=|^)~\",\n          \"name\": \"keyword.operator.tilde.shell\"\n        },\n        {\n          \"match\": \"\\\\*|\\\\?\",\n          \"name\": \"keyword.operator.glob.shell\"\n        },\n        {\n          \"begin\": \"([?*+@!])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.extglob.shell\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.extglob.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.extglob.shell\"\n            }\n          },\n          \"name\": \"meta.structure.extglob.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"pipeline\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(time)(?=\\\\s|;|&|$)\",\n          \"name\": \"keyword.other.shell\"\n        },\n        {\n          \"match\": \"[|!]\",\n          \"name\": \"keyword.operator.pipe.shell\"\n        }\n      ]\n    },\n    \"redirection\": {\n      \"patterns\": [\n        {\n          \"begin\": \"[><]\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.interpolated.process-substitution.shell\",\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![<>])(&>|\\\\d*>&\\\\d*|\\\\d*(>>|>|<)|\\\\d*<&|\\\\d*<>)(?![<>])\",\n          \"name\": \"keyword.operator.redirect.shell\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.shell\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.single.shell\"\n        },\n        {\n          \"begin\": \"\\\\$?\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.double.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\[\\\\$`\\\"\\\\\\\\\\\\n]\",\n              \"name\": \"constant.character.escape.shell\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.shell\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.shell\"\n            }\n          },\n          \"name\": \"string.quoted.single.dollar.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\(a|b|e|f|n|r|t|v|\\\\\\\\|')\",\n              \"name\": \"constant.character.escape.ansi-c.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\[0-9]{3}\",\n              \"name\": \"constant.character.escape.octal.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\x[0-9a-fA-F]{2}\",\n              \"name\": \"constant.character.escape.hex.shell\"\n            },\n            {\n              \"match\": \"\\\\\\\\c.\",\n              \"name\": \"constant.character.escape.control-char.shell\"\n            }\n          ]\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?::|\\\\.)(?=\\\\s|;|&|$)\",\n          \"name\": \"support.function.builtin.shell\"\n        },\n        {\n          \"match\": \"(?<=^|;|&|\\\\s)(?:alias|bg|bind|break|builtin|caller|cd|command|compgen|complete|dirs|disown|echo|enable|eval|exec|exit|false|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|read|readonly|set|shift|shopt|source|suspend|test|times|trap|true|type|ulimit|umask|unalias|unset|wait)(?=\\\\s|;|&|$)\",\n          \"name\": \"support.function.builtin.shell\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[a-zA-Z_][a-zA-Z0-9_]*\",\n          \"name\": \"variable.other.normal.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[-*@#?$!0_]\",\n          \"name\": \"variable.other.special.shell\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"match\": \"(\\\\$)[1-9]\",\n          \"name\": \"variable.other.positional.shell\"\n        },\n        {\n          \"begin\": \"\\\\${\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"end\": \"}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.shell\"\n            }\n          },\n          \"name\": \"variable.other.bracket.shell\",\n          \"patterns\": [\n            {\n              \"match\": \"!|:[-=?]?|\\\\*|@|#{1,2}|%{1,2}|/\",\n              \"name\": \"keyword.operator.expansion.shell\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.array.shell\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.section.array.shell\"\n                }\n              },\n              \"match\": \"(\\\\[)([^\\\\]]+)(\\\\])\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/smalltalk.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/smalltalk.tmbundle/blob/master/Syntaxes/SmallTalk.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"name\": \"smalltalk\",\n  \"foldingStartMarker\": \"\\\\[\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\]|^\\\\s\\\\]\",\n  \"keyEquivalent\": \"^~S\",\n  \"fileTypes\": [\"st\"],\n  \"patterns\": [\n    {\n      \"match\": \"\\\\$.\",\n      \"name\": \"constant.character.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(class)\\\\b\",\n      \"name\": \"storage.type.$1.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(extend|super|self)\\\\b\",\n      \"name\": \"storage.modifier.$1.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(yourself|new|Smalltalk)\\\\b\",\n      \"name\": \"keyword.control.$1.smalltalk\"\n    },\n    {\n      \"match\": \":=\",\n      \"name\": \"keyword.operator.assignment.smalltalk\"\n    },\n    {\n      \"comment\": \"Parse the variable declaration like: |a b c|\",\n      \"match\": \"/^:\\\\w*\\\\s*\\\\|/\",\n      \"name\": \"constant.other.block.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.instance-variables.begin.smalltalk\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"support.type.variable.declaration.smalltalk\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.instance-variables.end.smalltalk\"\n        }\n      },\n      \"match\": \"(\\\\|)(\\\\s*\\\\w[\\\\w ]*)(\\\\|)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"match\": \":\\\\w+\",\n              \"name\": \"entity.name.function.block.smalltalk\"\n            }\n          ]\n        }\n      },\n      \"comment\": \"Parse the blocks like: [ :a :b | ...... ]\",\n      \"match\": \"\\\\[((\\\\s+|:\\\\w+)*)\\\\|\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"match\": \"<(?!<|=)|>(?!<|=|>)|<=|>=|=|==|~=|~~|>>|\\\\^\",\n      \"name\": \"keyword.operator.comparison.smalltalk\"\n    },\n    {\n      \"match\": \"(\\\\*|\\\\+|\\\\-|/|\\\\\\\\)\",\n      \"name\": \"keyword.operator.arithmetic.smalltalk\"\n    },\n    {\n      \"match\": \"(?<=[ \\\\t])!+|\\\\bnot\\\\b|&|\\\\band\\\\b|\\\\||\\\\bor\\\\b\",\n      \"name\": \"keyword.operator.logical.smalltalk\"\n    },\n    {\n      \"comment\": \"Fake reserved word -> main Smalltalk messages\",\n      \"match\": \"(?<!\\\\.)\\\\b(ensure|resume|retry|signal)\\\\b(?![?!])\",\n      \"name\": \"keyword.control.smalltalk\"\n    },\n    {\n      \"comment\": \"Fake conditionals. Smalltalk Methods.\",\n      \"match\": \"ifCurtailed:|ifTrue:|ifFalse:|whileFalse:|whileTrue:\",\n      \"name\": \"keyword.control.conditionals.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.inherited-class.smalltalk\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.smalltalk\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.class.smalltalk\"\n        }\n      },\n      \"match\": \"(\\\\w+)(\\\\s+(subclass:))\\\\s*(\\\\w*)\",\n      \"name\": \"meta.class.smalltalk\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.comment.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"\\\"\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.comment.end.smalltalk\"\n        }\n      ],\n      \"name\": \"comment.block.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b(nil)\\\\b\",\n      \"name\": \"constant.language.nil.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.smalltalk\"\n        }\n      },\n      \"comment\": \"messages/methods\",\n      \"match\": \"(?>[a-zA-Z_]\\\\w*(?>[?!])?)(:)(?!:)\",\n      \"name\": \"constant.other.messages.smalltalk\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.smalltalk\"\n        }\n      },\n      \"comment\": \"symbols\",\n      \"match\": \"(#)[a-zA-Z_][a-zA-Z0-9_:]*\",\n      \"name\": \"constant.other.symbol.smalltalk\"\n    },\n    {\n      \"begin\": \"#\\\\[\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"\\\\]\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.end.smalltalk\"\n        }\n      ],\n      \"name\": \"meta.array.byte.smalltalk\",\n      \"patterns\": [\n        {\n          \"match\": \"[0-9]+(r[a-zA-Z0-9]+)?\",\n          \"name\": \"constant.numeric.integer.smalltalk\"\n        },\n        {\n          \"match\": \"[^\\\\s\\\\]]+\",\n          \"name\": \"invalid.illegal.character-not-allowed-here.smalltalk\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"#\\\\(\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.begin.smalltalk\"\n        }\n      ],\n      \"comment\": \"Array Constructor\",\n      \"end\": \"\\\\)\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.constant.end.smalltalk\"\n        }\n      ],\n      \"name\": \"constant.other.array.smalltalk\"\n    },\n    {\n      \"begin\": \"'\",\n      \"beginCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.begin.smalltalk\"\n        }\n      ],\n      \"end\": \"'\",\n      \"endCaptures\": [\n        {\n          \"name\": \"punctuation.definition.string.end.smalltalk\"\n        }\n      ],\n      \"name\": \"string.quoted.single.smalltalk\"\n    },\n    {\n      \"match\": \"\\\\b[A-Z]\\\\w*\\\\b\",\n      \"name\": \"variable.other.constant.smalltalk\"\n    }\n  ],\n  \"repository\": {\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)[0-9]+\\\\.[0-9]+s[0-9]*\",\n          \"name\": \"constant.numeric.float.scaled.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)[0-9]+\\\\.[0-9]+([edq]-?[0-9]+)?\",\n          \"name\": \"constant.numeric.float.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)-?[0-9]+r[a-zA-Z0-9]+\",\n          \"name\": \"constant.numeric.integer.radix.smalltalk\"\n        },\n        {\n          \"match\": \"(?<!\\\\w)-?[0-9]+([edq]-?[0-9]+)?\",\n          \"name\": \"constant.numeric.integer.smalltalk\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.smalltalk\",\n  \"uuid\": \"1ED64A34-BCB1-44E1-A0FE-84053003E232\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/solidity.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sol\"],\n  \"name\": \"solidity\",\n  \"patterns\": [\n    {\n      \"include\": \"#natspec\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#global\"\n    },\n    {\n      \"include\": \"#control\"\n    },\n    {\n      \"include\": \"#constant\"\n    },\n    {\n      \"include\": \"#primitive\"\n    },\n    {\n      \"include\": \"#type-primitive\"\n    },\n    {\n      \"include\": \"#type-modifier-extended-scope\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"include\": \"#function-call\"\n    },\n    {\n      \"include\": \"#assembly\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    }\n  ],\n  \"repository\": {\n    \"natspec\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.documentation\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec-tags\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"///\",\n          \"end\": \"$\",\n          \"name\": \"comment.block.documentation\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec-tags\"\n            }\n          ]\n        }\n      ]\n    },\n    \"natspec-tags\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        },\n        {\n          \"include\": \"#natspec-tag-title\"\n        },\n        {\n          \"include\": \"#natspec-tag-author\"\n        },\n        {\n          \"include\": \"#natspec-tag-notice\"\n        },\n        {\n          \"include\": \"#natspec-tag-dev\"\n        },\n        {\n          \"include\": \"#natspec-tag-param\"\n        },\n        {\n          \"include\": \"#natspec-tag-return\"\n        }\n      ]\n    },\n    \"natspec-tag-title\": {\n      \"match\": \"(@title)\\\\b\",\n      \"name\": \"storage.type.title.natspec\"\n    },\n    \"natspec-tag-author\": {\n      \"match\": \"(@author)\\\\b\",\n      \"name\": \"storage.type.author.natspec\"\n    },\n    \"natspec-tag-notice\": {\n      \"match\": \"(@notice)\\\\b\",\n      \"name\": \"storage.type.dev.natspec\"\n    },\n    \"natspec-tag-dev\": {\n      \"match\": \"(@dev)\\\\b\",\n      \"name\": \"storage.type.dev.natspec\"\n    },\n    \"natspec-tag-param\": {\n      \"match\": \"(@param)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.param.natspec\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.natspec\"\n        }\n      }\n    },\n    \"natspec-tag-return\": {\n      \"match\": \"(@return)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.return.natspec\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.natspec\"\n        }\n      }\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment-line\"\n        },\n        {\n          \"include\": \"#comment-block\"\n        }\n      ]\n    },\n    \"comment-todo\": {\n      \"match\": \"(?i)\\\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|COMBAK|TEMP|SUPPRESS|LINT|\\\\w+-disable|\\\\w+-suppress)\\\\b(?-i)\",\n      \"name\": \"keyword.comment.todo\"\n    },\n    \"comment-line\": {\n      \"begin\": \"(?<!tp:)//\",\n      \"end\": \"$\",\n      \"name\": \"comment.line\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        }\n      ]\n    },\n    \"comment-block\": {\n      \"begin\": \"/\\\\*\",\n      \"end\": \"\\\\*/\",\n      \"name\": \"comment.block\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment-todo\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"include\": \"#operator-logic\"\n        },\n        {\n          \"include\": \"#operator-mapping\"\n        },\n        {\n          \"include\": \"#operator-arithmetic\"\n        },\n        {\n          \"include\": \"#operator-binary\"\n        },\n        {\n          \"include\": \"#operator-assignment\"\n        }\n      ]\n    },\n    \"operator-logic\": {\n      \"match\": \"(==|\\\\!=|<(?!<)|<=|>(?!>)|>=|\\\\&\\\\&|\\\\|\\\\||\\\\:(?!=)|\\\\?|\\\\!)\",\n      \"name\": \"keyword.operator.logic\"\n    },\n    \"operator-mapping\": {\n      \"match\": \"(=>)\",\n      \"name\": \"keyword.operator.mapping\"\n    },\n    \"operator-arithmetic\": {\n      \"match\": \"(\\\\+|\\\\-|\\\\/|\\\\*)\",\n      \"name\": \"keyword.operator.arithmetic\"\n    },\n    \"operator-binary\": {\n      \"match\": \"(\\\\^|\\\\&|\\\\||<<|>>)\",\n      \"name\": \"keyword.operator.binary\"\n    },\n    \"operator-assignment\": {\n      \"match\": \"(\\\\:?=)\",\n      \"name\": \"keyword.operator.assignment\"\n    },\n    \"control\": {\n      \"patterns\": [\n        {\n          \"include\": \"#control-flow\"\n        },\n        {\n          \"include\": \"#control-using\"\n        },\n        {\n          \"include\": \"#control-import\"\n        },\n        {\n          \"include\": \"#control-pragma\"\n        },\n        {\n          \"include\": \"#control-underscore\"\n        },\n        {\n          \"include\": \"#control-unchecked\"\n        },\n        {\n          \"include\": \"#control-other\"\n        }\n      ]\n    },\n    \"control-flow\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(if|else|for|while|do|break|continue|try|catch|finally|throw|return)\\\\b\",\n          \"name\": \"keyword.control.flow\"\n        },\n        {\n          \"begin\": \"\\\\b(returns)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.return\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"control-using\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(using)\\\\b\\\\s+\\\\b([A-Za-z\\\\d_]+)\\\\b\\\\s+\\\\b(for)\\\\b\\\\s+\\\\b([A-Za-z\\\\d_]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.using\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.library\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.for\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(using)\\\\b\",\n          \"name\": \"keyword.control.using\"\n        }\n      ]\n    },\n    \"control-import\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(import)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import\"\n            }\n          },\n          \"end\": \"(?=\\\\;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"((?=\\\\{))\",\n              \"end\": \"((?=\\\\}))\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(\\\\w+)\\\\b\",\n                  \"name\": \"entity.name.type.interface\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\b(from)\\\\b\",\n              \"name\": \"keyword.control.import.from\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(import)\\\\b\",\n          \"name\": \"keyword.control.import\"\n        }\n      ]\n    },\n    \"control-unchecked\": {\n      \"match\": \"\\\\b(unchecked)\\\\b\",\n      \"name\": \"keyword.control.unchecked\"\n    },\n    \"control-pragma\": {\n      \"match\": \"\\\\b(pragma)(?:\\\\s+([A-Za-z_]\\\\w+)\\\\s+([^\\\\s]+))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.pragma\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.pragma\"\n        },\n        \"3\": {\n          \"name\": \"constant.other.pragma\"\n        }\n      }\n    },\n    \"control-underscore\": {\n      \"match\": \"\\\\b(_)\\\\b\",\n      \"name\": \"constant.other.underscore\"\n    },\n    \"control-other\": {\n      \"match\": \"\\\\b(new|delete|emit)\\\\b\",\n      \"name\": \"keyword.control\"\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"include\": \"#constant-boolean\"\n        },\n        {\n          \"include\": \"#constant-time\"\n        },\n        {\n          \"include\": \"#constant-currency\"\n        }\n      ]\n    },\n    \"constant-boolean\": {\n      \"match\": \"\\\\b(true|false)\\\\b\",\n      \"name\": \"constant.language.boolean\"\n    },\n    \"constant-time\": {\n      \"match\": \"\\\\b(seconds|minutes|hours|days|weeks|years)\\\\b\",\n      \"name\": \"constant.language.time\"\n    },\n    \"constant-currency\": {\n      \"match\": \"\\\\b(ether|wei|gwei|finney|szabo)\\\\b\",\n      \"name\": \"constant.language.currency\"\n    },\n    \"number\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-decimal\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-scientific\"\n        }\n      ]\n    },\n    \"number-decimal\": {\n      \"match\": \"\\\\b([0-9_]+(\\\\.[0-9_]+)?)\\\\b\",\n      \"name\": \"constant.numeric.decimal\"\n    },\n    \"number-hex\": {\n      \"match\": \"\\\\b(0[xX][a-fA-F0-9]+)\\\\b\",\n      \"name\": \"constant.numeric.hexadecimal\"\n    },\n    \"number-scientific\": {\n      \"match\": \"\\\\b(?:0\\\\.(?:0[1-9]|[1-9][0-9_]?)|[1-9][0-9_]*(?:\\\\.\\\\d{1,2})?)(?:e[+-]?[0-9_]+)?\",\n      \"name\": \"constant.numeric.scientific\"\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\".*?\\\\\\\"\",\n          \"name\": \"string.quoted.double\"\n        },\n        {\n          \"match\": \"\\\\'.*?\\\\'\",\n          \"name\": \"string.quoted.single\"\n        }\n      ]\n    },\n    \"primitive\": {\n      \"patterns\": [\n        {\n          \"include\": \"#number-decimal\"\n        },\n        {\n          \"include\": \"#number-hex\"\n        },\n        {\n          \"include\": \"#number-scientific\"\n        },\n        {\n          \"include\": \"#string\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(address|string\\\\d*|bytes\\\\d*|int\\\\d*|uint\\\\d*|bool|hash\\\\d*)\\\\b(?:\\\\[\\\\])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.primitive\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#primitive\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#global\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(address|string\\\\d*|bytes\\\\d*|int\\\\d*|uint\\\\d*|bool|hash\\\\d*)\\\\b\",\n          \"name\": \"support.type.primitive\"\n        }\n      ]\n    },\n    \"global\": {\n      \"patterns\": [\n        {\n          \"include\": \"#global-variables\"\n        },\n        {\n          \"include\": \"#global-functions\"\n        }\n      ]\n    },\n    \"global-variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(this)\\\\b\",\n          \"name\": \"variable.language.this\"\n        },\n        {\n          \"match\": \"\\\\b(super)\\\\b\",\n          \"name\": \"variable.language.super\"\n        },\n        {\n          \"match\": \"\\\\b(abi)\\\\b\",\n          \"name\": \"variable.language.builtin.abi\"\n        },\n        {\n          \"match\": \"\\\\b(msg\\\\.sender|msg|block|tx|now)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        },\n        {\n          \"match\": \"\\\\b(tx\\\\.origin|tx\\\\.gasprice|msg\\\\.data|msg\\\\.sig|msg\\\\.value)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        }\n      ]\n    },\n    \"global-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(require|assert|revert)\\\\b\",\n          \"name\": \"keyword.control.exceptions\"\n        },\n        {\n          \"match\": \"\\\\b(selfdestruct|suicide)\\\\b\",\n          \"name\": \"keyword.control.contract\"\n        },\n        {\n          \"match\": \"\\\\b(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\\\b\",\n          \"name\": \"support.function.math\"\n        },\n        {\n          \"match\": \"\\\\b(unicode)\\\\b\",\n          \"name\": \"support.function.string\"\n        },\n        {\n          \"match\": \"\\\\b(blockhash|gasleft)\\\\b\",\n          \"name\": \"variable.language.transaction\"\n        },\n        {\n          \"match\": \"\\\\b(type)\\\\b\",\n          \"name\": \"variable.language.type\"\n        }\n      ]\n    },\n    \"type-modifier-access\": {\n      \"match\": \"\\\\b(internal|external|private|public)\\\\b\",\n      \"name\": \"storage.type.modifier.access\"\n    },\n    \"type-modifier-payable\": {\n      \"match\": \"\\\\b(nonpayable|payable)\\\\b\",\n      \"name\": \"storage.type.modifier.payable\"\n    },\n    \"type-modifier-constant\": {\n      \"match\": \"\\\\b(constant)\\\\b\",\n      \"name\": \"storage.type.modifier.readonly\"\n    },\n    \"type-modifier-immutable\": {\n      \"match\": \"\\\\b(immutable)\\\\b\",\n      \"name\": \"storage.type.modifier.readonly\"\n    },\n    \"type-modifier-extended-scope\": {\n      \"match\": \"\\\\b(pure|view|inherited|indexed|storage|memory|virtual|calldata|override|abstract)\\\\b\",\n      \"name\": \"storage.type.modifier.extendedscope\"\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\_\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.function\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:\\\\.)(\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.variable.property\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.parameter.other\"\n            }\n          }\n        }\n      ]\n    },\n    \"modifier-call\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\b\",\n          \"name\": \"entity.name.function.modifier\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration-contract\"\n        },\n        {\n          \"include\": \"#declaration-interface\"\n        },\n        {\n          \"include\": \"#declaration-library\"\n        },\n        {\n          \"include\": \"#declaration-function\"\n        },\n        {\n          \"include\": \"#declaration-modifier\"\n        },\n        {\n          \"include\": \"#declaration-constructor\"\n        },\n        {\n          \"include\": \"#declaration-event\"\n        },\n        {\n          \"include\": \"#declaration-storage\"\n        },\n        {\n          \"include\": \"#declaration-error\"\n        }\n      ]\n    },\n    \"declaration-storage-field\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#control\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-modifier-access\"\n        },\n        {\n          \"include\": \"#type-modifier-immutable\"\n        },\n        {\n          \"include\": \"#type-modifier-extend-scope\"\n        },\n        {\n          \"include\": \"#type-modifier-payable\"\n        },\n        {\n          \"include\": \"#type-modifier-constant\"\n        },\n        {\n          \"include\": \"#primitive\"\n        },\n        {\n          \"include\": \"#constant\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        }\n      ]\n    },\n    \"declaration-storage\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration-storage-mapping\"\n        },\n        {\n          \"include\": \"#declaration-struct\"\n        },\n        {\n          \"include\": \"#declaration-enum\"\n        },\n        {\n          \"include\": \"#declaration-storage-field\"\n        }\n      ]\n    },\n    \"declaration-contract\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(contract)\\\\b\\\\s+(\\\\w+)\\\\b\\\\s+\\\\b(is)\\\\b\\\\s+\",\n          \"end\": \"(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.contract\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.contract\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.is\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"entity.name.type.contract.extend\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(contract)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.contract\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.contract\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-interface\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(interface)\\\\b\\\\s+(\\\\w+)\\\\b\\\\s+\\\\b(is)\\\\b\\\\s+\",\n          \"end\": \"(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.is\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"entity.name.type.interface.extend\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(interface)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.interface\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-library\": {\n      \"match\": \"\\\\b(library)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.library\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.library\"\n        }\n      }\n    },\n    \"declaration-struct\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(struct)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.struct\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b(struct)\\\\b\\\\s*(\\\\w+)?\\\\b\\\\s*(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.struct\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"declaration-event\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(event)\\\\b(?:\\\\s+(\\\\w+)\\\\b)?\",\n          \"end\": \"(?=\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.event\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.event\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"match\": \"\\\\b(?:(indexed)\\\\s)?(\\\\w+)(?:,\\\\s*|)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.type.modifier.indexed\"\n                },\n                \"2\": {\n                  \"name\": \"variable.parameter.event\"\n                }\n              }\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(event)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.event\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.event\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-constructor\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(constructor)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.constructor\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*(?=\\\\()\",\n              \"end\": \"(?=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#declaration-function-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-modifier-access\"\n                },\n                {\n                  \"include\": \"#function-call\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(constructor)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.constructor\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-enum\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(enum)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.enum\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\b(\\\\w+)\\\\b\",\n              \"name\": \"variable.other.enummember\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(enum)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.enum\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.enum\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-function-parameters\": {\n      \"begin\": \"\\\\G\\\\s*(?=\\\\()\",\n      \"end\": \"(?=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-modifier-extended-scope\"\n        },\n        {\n          \"match\": \"\\\\b([A-Z]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.struct\"\n            }\n          }\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration-function\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(function)\\\\s+(\\\\w+)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function\"\n            }\n          },\n          \"end\": \"(?=\\\\{|;)\",\n          \"patterns\": [\n            {\n              \"include\": \"#natspec\"\n            },\n            {\n              \"include\": \"#global\"\n            },\n            {\n              \"include\": \"#declaration-function-parameters\"\n            },\n            {\n              \"include\": \"#type-modifier-access\"\n            },\n            {\n              \"include\": \"#type-modifier-payable\"\n            },\n            {\n              \"include\": \"#type-modifier-immutable\"\n            },\n            {\n              \"include\": \"#type-modifier-extended-scope\"\n            },\n            {\n              \"include\": \"#control-flow\"\n            },\n            {\n              \"include\": \"#function-call\"\n            },\n            {\n              \"include\": \"#modifier-call\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(function)\\\\s+([A-Za-z_]\\\\w*)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.function\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-modifier\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(modifier)\\\\b\\\\s*(\\\\w+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.modifier\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.modifier\"\n            }\n          },\n          \"end\": \"(?=\\\\{)\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-function-parameters\"\n            },\n            {\n              \"begin\": \"(?<=\\\\))\",\n              \"end\": \"(?=\\\\{)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#declaration-function-parameters\"\n                },\n                {\n                  \"include\": \"#type-modifier-access\"\n                },\n                {\n                  \"include\": \"#type-modifier-payable\"\n                },\n                {\n                  \"include\": \"#type-modifier-immutable\"\n                },\n                {\n                  \"include\": \"#type-modifier-extended-scope\"\n                },\n                {\n                  \"include\": \"#function-call\"\n                },\n                {\n                  \"include\": \"#modifier-call\"\n                },\n                {\n                  \"include\": \"#control-flow\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(modifier)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.modifier\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function\"\n            }\n          }\n        }\n      ]\n    },\n    \"declaration-storage-mapping\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(mapping)\\\\b\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.mapping\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#declaration-storage-mapping\"\n            },\n            {\n              \"include\": \"#type-primitive\"\n            },\n            {\n              \"include\": \"#punctuation\"\n            },\n            {\n              \"include\": \"#operator\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\b(mapping)\\\\b\",\n          \"name\": \"storage.type.mapping\"\n        }\n      ]\n    },\n    \"declaration-error\": {\n      \"match\": \"\\\\b(error)(\\\\s+([A-Za-z_]\\\\w*))?\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.error\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.error\"\n        }\n      }\n    },\n    \"function-call\": {\n      \"match\": \"\\\\b([A-Za-z_]\\\\w*)\\\\s*(\\\\()\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.parameters.begin\"\n        }\n      }\n    },\n    \"assembly\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(assembly)\\\\b\",\n          \"name\": \"keyword.control.assembly\"\n        },\n        {\n          \"match\": \"\\\\b(let)\\\\b\",\n          \"name\": \"storage.type.assembly\"\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \";\",\n          \"name\": \"punctuation.terminator.statement\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"punctuation.accessor\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator\"\n        },\n        {\n          \"match\": \"\\\\{\",\n          \"name\": \"punctuation.brace.curly.begin\"\n        },\n        {\n          \"match\": \"\\\\}\",\n          \"name\": \"punctuation.brace.curly.end\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"punctuation.brace.square.begin\"\n        },\n        {\n          \"match\": \"\\\\]\",\n          \"name\": \"punctuation.brace.square.end\"\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.parameters.begin\"\n        },\n        {\n          \"match\": \"\\\\)\",\n          \"name\": \"punctuation.parameters.end\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.solidity\",\n  \"uuid\": \"ad87d2cd-8575-4afe-984e-9421a3788933\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/sparql.tmLanguage.json",
    "content": "{\n  \"name\": \"sparql\",\n  \"scopeName\": \"source.sparql\",\n  \"fileTypes\": [\"rq\", \"sparql\"],\n  \"patterns\": [\n    {\n      \"include\": \"source.turtle\"\n    },\n    {\n      \"include\": \"#query-keyword-operators\"\n    },\n    {\n      \"include\": \"#functions\"\n    },\n    {\n      \"include\": \"#variables\"\n    },\n    {\n      \"include\": \"#expression-operators\"\n    }\n  ],\n  \"repository\": {\n    \"query-keyword-operators\": {\n      \"name\": \"keyword.control.sparql\",\n      \"match\": \"\\\\b(?i:define|select|distinct|reduced|from|named|construct|ask|describe|where|graph|having|bind|as|filter|optional|union|order|by|group|limit|offset|values|insert data|delete data|with|delete|insert|clear|silent|default|all|create|drop|copy|move|add|to|using|service|not exists|exists|not in|in|minus|load)\\\\b\"\n    },\n    \"functions\": {\n      \"name\": \"support.function.sparql\",\n      \"match\": \"\\\\b(?i:concat|regex|asc|desc|bound|isiri|isuri|isblank|isliteral|isnumeric|str|lang|datatype|sameterm|langmatches|avg|count|group_concat|separator|max|min|sample|sum|iri|uri|bnode|strdt|uuid|struuid|strlang|strlen|substr|ucase|lcase|strstarts|strends|contains|strbefore|strafter|encode_for_uri|replace|abs|round|ceil|floor|rand|now|year|month|day|hours|minutes|seconds|timezone|tz|md5|sha1|sha256|sha384|sha512|coalesce|if)\\\\b\"\n    },\n    \"variables\": {\n      \"name\": \"constant.variable.sparql.turtle\",\n      \"match\": \"(?<!\\\\w)[?$]\\\\w+\"\n    },\n    \"expression-operators\": {\n      \"name\": \"support.class.sparql\",\n      \"match\": \"(?:\\\\|\\\\||&&|=|!=|<|>|<=|>=|\\\\*|/|\\\\+|-|\\\\||\\\\^|\\\\?|\\\\!)\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/sql.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/vscode-mssql/blob/master/syntaxes/SQL.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/vscode-mssql/commit/b8b58864526c048002b7c3964bdac8aac3713bd9\",\n  \"name\": \"sql\",\n  \"scopeName\": \"source.sql\",\n  \"patterns\": [\n    {\n      \"match\": \"((?<!@)@)\\\\b(\\\\w+)\\\\b\",\n      \"name\": \"text.variable\"\n    },\n    {\n      \"match\": \"(\\\\[)[^\\\\]]*(\\\\])\",\n      \"name\": \"text.bracketed\"\n    },\n    {\n      \"match\": \"\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blocksize|bmk|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\s+or\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|days|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hours|http|identity|identity_value|if|ifnull|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minutes|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|schema|schemabinding|scoped|scroll|scroll_locks|sddl|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|tran|transaction|transfer|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|waitfor|webmethod|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|window|windows|with|within|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|zone)\\\\b\",\n      \"name\": \"keyword.other.sql\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.sql\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.function.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(create(?:\\\\s+or\\\\s+replace)?)\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)(['\\\"`]?)(\\\\w+)\\\\4\",\n      \"name\": \"meta.create.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(drop)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))\",\n      \"name\": \"meta.drop.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.table.sql\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.sql\"\n        },\n        \"4\": {\n          \"name\": \"keyword.other.cascade.sql\"\n        }\n      },\n      \"match\": \"(?i:\\\\s*(drop)\\\\s+(table)\\\\s+(\\\\w+)(\\\\s+cascade)?\\\\b)\",\n      \"name\": \"meta.drop.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.create.sql\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.table.sql\"\n        }\n      },\n      \"match\": \"(?i:^\\\\s*(alter)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)\",\n      \"name\": \"meta.alter.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"5\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"6\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"7\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"8\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"9\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"10\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"11\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"12\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"13\": {\n          \"name\": \"storage.type.sql\"\n        },\n        \"14\": {\n          \"name\": \"constant.numeric.sql\"\n        },\n        \"15\": {\n          \"name\": \"storage.type.sql\"\n        }\n      },\n      \"match\": \"(?xi)\\n\\n\\t\\t\\t\\t# normal stuff, capture 1\\n\\t\\t\\t\\t \\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\b\\n\\n\\t\\t\\t\\t# numeric suffix, capture 2 + 3i\\n\\t\\t\\t\\t|\\\\b(bit\\\\svarying|character\\\\s(?:varying)?|tinyint|var\\\\schar|float|interval)\\\\((\\\\d+)\\\\)\\n\\n\\t\\t\\t\\t# optional numeric suffix, capture 4 + 5i\\n\\t\\t\\t\\t|\\\\b(char|number|varchar\\\\d?)\\\\b(?:\\\\((\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# special case, capture 6 + 7i + 8i\\n\\t\\t\\t\\t|\\\\b(numeric|decimal)\\\\b(?:\\\\((\\\\d+),(\\\\d+)\\\\))?\\n\\n\\t\\t\\t\\t# special case, captures 9, 10i, 11\\n\\t\\t\\t\\t|\\\\b(times?)\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\swith(?:out)?\\\\stime\\\\szone\\\\b)?\\n\\n\\t\\t\\t\\t# special case, captures 12, 13, 14i, 15\\n\\t\\t\\t\\t|\\\\b(timestamp)(?:(s|tz))?\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\s(with|without)\\\\stime\\\\szone\\\\b)?\\n\\n\\t\\t\\t\"\n    },\n    {\n      \"match\": \"(?i:\\\\b((?:primary|foreign)\\\\s+key|references|on\\\\sdelete(\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\b)\",\n      \"name\": \"storage.modifier.sql\"\n    },\n    {\n      \"match\": \"\\\\b\\\\d+\\\\b\",\n      \"name\": \"constant.numeric.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(select(\\\\s+distinct)?|insert\\\\s+(ignore\\\\s+)?into|update|delete|from|set|where|group\\\\s+by|or|like|and|union(\\\\s+all)?|having|order\\\\s+by|limit|(inner|cross)\\\\s+join|join|straight_join|full\\\\s+outer\\\\s+join|(left|right)(\\\\s+outer)?\\\\s+join|natural(\\\\s+(left|right)(\\\\s+outer)?)?\\\\s+join)\\\\b)\",\n      \"name\": \"keyword.other.DML.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(on|off|((is\\\\s+)?not\\\\s+)?null)\\\\b)\",\n      \"name\": \"keyword.other.DDL.create.II.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\bvalues\\\\b)\",\n      \"name\": \"keyword.other.DML.II.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(begin(\\\\s+work)?|start\\\\s+transaction|commit(\\\\s+work)?|rollback(\\\\s+work)?)\\\\b)\",\n      \"name\": \"keyword.other.LUW.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(grant(\\\\swith\\\\sgrant\\\\soption)?|revoke)\\\\b)\",\n      \"name\": \"keyword.other.authorization.sql\"\n    },\n    {\n      \"match\": \"(?i:\\\\bin\\\\b)\",\n      \"name\": \"keyword.other.data-integrity.sql\"\n    },\n    {\n      \"match\": \"(?i:^\\\\s*(comment\\\\s+on\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\s+.*?\\\\s+(is)\\\\s+)\",\n      \"name\": \"keyword.other.object-comments.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\bAS\\\\b\",\n      \"name\": \"keyword.other.alias.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(DESC|ASC)\\\\b\",\n      \"name\": \"keyword.other.order.sql\"\n    },\n    {\n      \"match\": \"\\\\*\",\n      \"name\": \"keyword.operator.star.sql\"\n    },\n    {\n      \"match\": \"[!<>]?=|<>|<|>\",\n      \"name\": \"keyword.operator.comparison.sql\"\n    },\n    {\n      \"match\": \"-|\\\\+|/\",\n      \"name\": \"keyword.operator.math.sql\"\n    },\n    {\n      \"match\": \"\\\\|\\\\|\",\n      \"name\": \"keyword.operator.concatenator.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(aggregate|approx_count_distinct|avg|checksum_agg|count|count_big|grouping|grouping_id|max|min|sum|stdev|stdevp|var|varp)\\\\b\",\n      \"name\": \"support.function.aggregate.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\b\",\n      \"name\": \"support.function.analytic.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\b\",\n      \"name\": \"support.function.conversion.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(collationproperty|tertiary_weights)\\\\b\",\n      \"name\": \"support.function.collation.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\b\",\n      \"name\": \"support.function.cryptographic.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(cursor_status)\\\\b\",\n      \"name\": \"support.function.cursor.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\b\",\n      \"name\": \"support.function.datetime.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\b\",\n      \"name\": \"support.function.datatype.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(coalesce|nullif)\\\\b\",\n      \"name\": \"support.function.expression.sql\"\n    },\n    {\n      \"match\": \"(?<!@)@@(?i)\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\b\",\n      \"name\": \"support.function.globalvar.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\b\",\n      \"name\": \"support.function.json.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(choose|iif|greatest|least)\\\\b\",\n      \"name\": \"support.function.logical.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\b\",\n      \"name\": \"support.function.mathematical.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\b\",\n      \"name\": \"support.function.metadata.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(rank|dense_rank|ntile|row_number)\\\\b\",\n      \"name\": \"support.function.ranking.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\b\",\n      \"name\": \"support.function.rowset.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\b\",\n      \"name\": \"support.function.security.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\b\",\n      \"name\": \"support.function.string.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\b\",\n      \"name\": \"support.function.system.sql\"\n    },\n    {\n      \"match\": \"(?i)\\\\b(patindex|textptr|textvalid)\\\\b\",\n      \"name\": \"support.function.textimage.sql\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.database-name.sql\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.table-name.sql\"\n        }\n      },\n      \"match\": \"(\\\\w+?)\\\\.(\\\\w+)\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#regexps\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.scope.begin.sql\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.scope.end.sql\"\n        }\n      },\n      \"comment\": \"Allow for special ↩ behavior\",\n      \"match\": \"(\\\\()(\\\\))\",\n      \"name\": \"meta.block.sql\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=--)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.sql\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"--\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.sql\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-dash.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.sql\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": []\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.sql\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c\"\n        }\n      ]\n    },\n    \"regexps\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/(?=\\\\S.*/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.regexp.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            },\n            {\n              \"match\": \"\\\\\\\\/\",\n              \"name\": \"constant.character.escape.slash.sql\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"%r\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"comment\": \"We should probably handle nested bracket pairs!?! -- Allan\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.regexp.modr.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string_escape\": {\n      \"match\": \"\\\\\\\\.\",\n      \"name\": \"constant.character.escape.sql\"\n    },\n    \"string_interpolation\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.sql\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.string.end.sql\"\n        }\n      },\n      \"match\": \"(#\\\\{)([^\\\\}]*)(\\\\})\",\n      \"name\": \"string.interpolated.sql\"\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(N)?(')[^']*(')\",\n          \"name\": \"string.quoted.single.sql\"\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.single.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(`)[^`\\\\\\\\]*(`)\",\n          \"name\": \"string.quoted.other.backtick.sql\"\n        },\n        {\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.other.backtick.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_escape\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"comment\": \"this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.\",\n          \"match\": \"(\\\")[^\\\"#]*(\\\")\",\n          \"name\": \"string.quoted.double.sql\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.quoted.double.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"%\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.sql\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.sql\"\n            }\n          },\n          \"name\": \"string.other.quoted.brackets.sql\",\n          \"patterns\": [\n            {\n              \"include\": \"#string_interpolation\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/ssh-config.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"ssh_config\", \".ssh/config\", \"sshd_config\"],\n  \"name\": \"ssh-config\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\b(A(cceptEnv|dd(ressFamily|KeysToAgent)|llow(AgentForwarding|Groups|StreamLocalForwarding|TcpForwarding|Users)|uth(enticationMethods|orized((Keys(Command(User)?|File)|Principals(Command(User)?|File)))))|B(anner|atchMode|ind(Address|Interface))|C(anonical(Domains|ize(FallbackLocal|Hostname|MaxDots|PermittedCNAMEs))|ertificateFile|hallengeResponseAuthentication|heckHostIP|hrootDirectory|iphers?|learAllForwardings|ientAlive(CountMax|Interval)|ompression(Level)?|onnect(Timeout|ionAttempts)|ontrolMaster|ontrolPath|ontrolPersist)|D(eny(Groups|Users)|isableForwarding|ynamicForward)|E(nableSSHKeysign|scapeChar|xitOnForwardFailure|xposeAuthInfo)|F(ingerprintHash|orceCommand|orward(Agent|X11(Timeout|Trusted)?))|G(atewayPorts|SSAPI(Authentication|CleanupCredentials|ClientIdentity|DelegateCredentials|KeyExchange|RenewalForcesRekey|ServerIdentity|StrictAcceptorCheck|TrustDns)|atewayPorts|lobalKnownHostsFile)|H(ashKnownHosts|ost(based(AcceptedKeyTypes|Authentication|KeyTypes|UsesNameFromPacketOnly)|Certificate|Key(Agent|Algorithms|Alias)?|Name))|I(dentit(iesOnly|y(Agent|File))|gnore(Rhosts|Unknown|UserKnownHosts)|nclude|PQoS)|K(bdInteractive(Authentication|Devices)|erberos(Authentication|GetAFSToken|OrLocalPasswd|TicketCleanup)|exAlgorithms)|L(istenAddress|ocal(Command|Forward)|oginGraceTime|ogLevel)|M(ACs|atch|ax(AuthTries|Sessions|Startups))|N(oHostAuthenticationForLocalhost|umberOfPasswordPrompts)|P(KCS11Provider|asswordAuthentication|ermit(EmptyPasswords|LocalCommand|Open|RootLogin|TTY|Tunnel|User(Environment|RC))|idFile|ort|referredAuthentications|rint(LastLog|Motd)|rotocol|roxy(Command|Jump|UseFdpass)|ubkey(AcceptedKeyTypes|Authentication))|R(Domain|SAAuthentication|ekeyLimit|emote(Command|Forward)|equestTTY|evoked(HostKeys|Keys)|hostsRSAAuthentication)|S(endEnv|erverAlive(CountMax|Interval)|treamLocalBind(Mask|Unlink)|trict(HostKeyChecking|Modes)|ubsystem|yslogFacility)|T(CPKeepAlive|rustedUserCAKeys|unnel(Device)?)|U(pdateHostKeys|se(BlacklistedKeys|DNS|Keychain|PAM|PrivilegedPort|r(KnownHostsFile)?))|V(erifyHostKeyDNS|ersionAddendum|isualHostKey)|X(11(DisplayOffset|Forwarding|UseLocalhost)|AuthLocation))\\\\b\",\n      \"name\": \"keyword.other.ssh-config\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ssh-config\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ssh-config\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.ssh-config\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ssh-config\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ssh-config\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.double-slash.ssh-config\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.ssh-config\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.section.ssh-config\"\n        },\n        \"3\": {\n          \"name\": \"meta.toc-list.ssh-config\"\n        }\n      },\n      \"match\": \"(?:^| |\\\\t)(Host)\\\\s+((.*))$\"\n    },\n    {\n      \"match\": \"\\\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\b\",\n      \"name\": \"constant.numeric.ssh-config\"\n    },\n    {\n      \"match\": \"\\\\b[0-9]+\\\\b\",\n      \"name\": \"constant.numeric.ssh-config\"\n    },\n    {\n      \"match\": \"\\\\b(yes|no)\\\\b\",\n      \"name\": \"constant.language.ssh-config\"\n    },\n    {\n      \"match\": \"\\\\b[A-Z_]+\\\\b\",\n      \"name\": \"constant.language.ssh-config\"\n    }\n  ],\n  \"scopeName\": \"source.ssh-config\",\n  \"uuid\": \"B273855C-59D3-4DF3-9B7C-E68E0057D315\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/stata.tmLanguage.json",
    "content": "{\n  \"scopeName\": \"source.stata\",\n  \"name\": \"stata\",\n  \"fileTypes\": [\"do\", \"ado\", \"mata\"],\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"patterns\": [\n    {\n      \"include\": \"#ascii-regex-functions\"\n    },\n    {\n      \"include\": \"#unicode-regex-functions\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#functions\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#subscripts\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#macro-local\"\n    },\n    {\n      \"include\": \"#macro-global\"\n    },\n    {\n      \"include\": \"#string-compound\"\n    },\n    {\n      \"include\": \"#string-regular\"\n    },\n    {\n      \"include\": \"#builtin_variables\"\n    },\n    {\n      \"include\": \"#macro-commands\"\n    },\n    {\n      \"comment\": \"keywords that delimit flow conditionals\",\n      \"name\": \"keyword.control.conditional.stata\",\n      \"match\": \"\\\\b(if|else if|else)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.scalar.stata\"\n        }\n      },\n      \"match\": \"^\\\\s*(sca(lar|la|l)?(\\\\s+de(fine|fin|fi|f)?)?)\\\\s+(?!(drop|dir?|l(ist|is|i)?)\\\\s+)\"\n    },\n    {\n      \"begin\": \"\\\\b(mer(ge|g)?)\\\\s+(1|m|n)(:)(1|m|n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.stata\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"match\": \"m|n\",\n              \"name\": \"\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.key-value\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"match\": \"m|n\",\n              \"name\": \"\"\n            }\n          ]\n        }\n      },\n      \"end\": \"using\",\n      \"patterns\": [\n        {\n          \"include\": \"#builtin_variables\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(foreach)\\\\s+((?!in|of).+)\\\\s+(in|of var(list|lis|li|l)?|of new(list|lis|li|l)?|of num(list|lis|li|l)?)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.stata\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local-identifiers\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.flow.stata\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(foreach)\\\\s+((?!in|of).+)\\\\s+(of loc(al|a)?|of glo(bal|ba|b)?)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.stata\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local-identifiers\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"keyword.control.flow.stata\"\n        }\n      },\n      \"end\": \"(?=\\\\s*\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#macro-local-identifiers\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(forvalues|forvalue|forvalu|forval|forva|forv)\\\\s*\",\n      \"end\": \"\\\\s*(=)\\\\s*([^\\\\{]+)\\\\s*|(?=\\\\n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.stata\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.assignment.stata\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#macro-local-identifiers\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        }\n      ]\n    },\n    {\n      \"comment\": \"keywords that delimit loops\",\n      \"name\": \"keyword.control.flow.stata\",\n      \"match\": \"\\\\b(while|continue)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.stata\"\n        }\n      },\n      \"comment\": \"keywords that haven't fit into other groups (yet).\",\n      \"match\": \"\\\\b(as|ass|asse|asser|assert)\\\\b\"\n    },\n    {\n      \"match\": \"\\\\b(by(sort|sor|so|s)?|statsby|rolling|bootstrap|jackknife|permute|simulate|svy|mi est(imate|imat|ima|im|i)?|nestreg|stepwise|xi|fp|mfp|vers(ion|io|i)?)\\\\b\",\n      \"name\": \"storage.type.function.stata\",\n      \"comment\": \"prefixes that require a colon\"\n    },\n    {\n      \"comment\": \"prefixes that don't need a colon\",\n      \"name\": \"keyword.control.flow.stata\",\n      \"match\": \"\\\\b(qui(etly|etl|et|e)?|n(oisily|oisil|oisi|ois|oi|o)?|cap(ture|tur|tu|t)?)\\\\b:?\"\n    },\n    {\n      \"match\": \"\\\\s*(pr(ogram|ogra|ogr|og|o)?)\\\\s+((di(r)?|drop|l(ist|is|i)?)\\\\s+)([\\\\w&&[^0-9]]\\\\w{0,31})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.stata\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.function.stata\"\n        },\n        \"7\": {\n          \"name\": \"entity.name.function.stata\"\n        }\n      }\n    },\n    {\n      \"begin\": \"^\\\\s*(pr(ogram|ogra|ogr|og|o)?)\\\\s+(de(fine|fin|fi|f)?\\\\s+)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.stata\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.function.stata\"\n        }\n      },\n      \"end\": \"(?=,|\\\\n|/)\",\n      \"patterns\": [\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n          \"name\": \"entity.name.function.stata\"\n        },\n        {\n          \"match\": \"[^A-za-z_0-9,\\\\n/ ]+\",\n          \"name\": \"invalid.illegal.name.stata\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(form(at|a)?)\\\\s*([\\\\w&&[^0-9]]\\\\w{0,31})*\\\\s*(%)(-)?(0)?([0-9]+)(.)([0-9]+)(e|f|g)(c)?\",\n      \"captures\": {\n        \"1\": \"keyword.functions.data.stata.test\"\n      }\n    },\n    {\n      \"include\": \"#braces-with-error\"\n    },\n    {\n      \"begin\": \"(?=syntax)\",\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"comment\": \"color before the comma\",\n          \"begin\": \"syntax\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.functions.program.stata\"\n            }\n          },\n          \"end\": \"(?=,|\\\\n)\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.block.stata\"\n            },\n            {\n              \"match\": \"\\\\[\",\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            {\n              \"match\": \"\\\\]\",\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            },\n            {\n              \"match\": \"\\\\b(varlist|varname|newvarlist|newvarname|namelist|name|anything)\\\\b\",\n              \"name\": \"entity.name.type.class.stata\"\n            },\n            {\n              \"match\": \"\\\\b((if|in|using|fweight|aweight|pweight|iweight))\\\\b(/)?\",\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"entity.name.type.class.stata\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.operator.arithmetic.stata\"\n                }\n              }\n            },\n            {\n              \"match\": \"(/)?(exp)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.arithmetic.stata\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.class.stata\"\n                }\n              }\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#builtin_variables\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"things to color after the comma\",\n          \"begin\": \",\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            }\n          },\n          \"end\": \"(?=\\\\n)\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.block.stata\"\n            },\n            {\n              \"comment\": \"color options with parentheses\",\n              \"begin\": \"([^\\\\s\\\\[\\\\]]+)(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"#macro-local-identifiers\"\n                    },\n                    {\n                      \"include\": \"#macro-local\"\n                    },\n                    {\n                      \"include\": \"#macro-global\"\n                    }\n                  ],\n                  \"comment\": \"these are the names that become macros\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.parentheses.stata\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.parentheses.stata\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"comment\": \"the first word is often a type\",\n                  \"match\": \"\\\\b(integer|intege|integ|inte|int|real|string|strin|stri|str)\\\\b\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"support.type.stata\"\n                    }\n                  }\n                },\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"include\": \"#operators\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#builtin_variables\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#macro-local-identifiers\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#builtin_variables\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        }\n      },\n      \"comment\": \"one-word commands\",\n      \"match\": \"\\\\b(sa(v|ve)|saveold|destring|tostring|u(se|s)?|note(s)?|form(at|a)?)\\\\b\"\n    },\n    {\n      \"match\": \"\\\\b(exit|end)\\\\b\",\n      \"name\": \"keyword.functions.data.stata\",\n      \"comment\": \"programming commands\"\n    },\n    {\n      \"match\": \"\\\\b(replace)\\\\s+([^=]+)\\\\s*((==)|(=))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            }\n          ]\n        },\n        \"4\": {\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.assignment.stata\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(g(enerate|enerat|enera|ener|ene|en|e)?|egen)\\\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\\\s+)?([^=\\\\s]+)\\\\s*((==)|(=))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"3\": {\n          \"name\": \"support.type.stata\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#reserved-names\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            }\n          ]\n        },\n        \"7\": {\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        \"8\": {\n          \"name\": \"keyword.operator.assignment.stata\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(set ty(pe|p)?)\\\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)?\\\\s+)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"3\": {\n          \"name\": \"support.type.stata\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(la(bel|be|b)?)\\\\s+(var(iable|iabl|iab|ia|i)?)\\\\s+([\\\\w&&[^0-9]]\\\\w{0,31})\\\\s+(`\\\")(.+)(\\\"')\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"3\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.stata\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#macro-local-escaped\"\n            },\n            {\n              \"include\": \"#macro-global-escaped\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"[^`\\\\$]{81,}\",\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.compound.stata\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.begin.stata\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(la(bel|be|b)?)\\\\s+(var(iable|iabl|iab|ia|i)?)\\\\s+([\\\\w&&[^0-9]]\\\\w{0,31})\\\\s+(\\\")(.+)(\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"3\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.string.begin.stata\"\n        },\n        \"7\": {\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local-escaped\"\n            },\n            {\n              \"include\": \"#macro-global-escaped\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"[^`\\\\$]{81,}\",\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            {\n              \"match\": \".\",\n              \"name\": \"string.quoted.double.stata\"\n            }\n          ]\n        },\n        \"8\": {\n          \"name\": \"punctuation.definition.string.begin.stata\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(la(bel|be|b)?)\\\\s+(da(ta|t)?|var(iable|iabl|iab|ia|i)?|de(f|fi|fin|fine)?|val(ues|ue|u)?|di(r)?|l(ist|is|i)?|copy|drop|save|lang(uage|uag|ua|u)?)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"3\": {\n          \"name\": \"keyword.functions.data.stata\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\b(drop|keep)\\\\b(?!\\\\s+(if|in)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(if|in)\\\\b\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"include\": \"#operators\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\b(drop|keep)\\\\s+(if|in)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.functions.data.stata\"\n        },\n        \"2\": {\n          \"name\": \"keyword.functions.data.stata\"\n        }\n      }\n    },\n    {\n      \"begin\": \"^\\\\s*mata:?\\\\s*$\",\n      \"comment\": \"won't match single-line Mata statements\",\n      \"end\": \"^\\\\s*end\\\\s*$\\\\n?\",\n      \"name\": \"meta.embedded.block.mata\",\n      \"patterns\": [\n        {\n          \"match\": \"(?<![^$\\\\s])(version|pragma|if|else|for|while|do|break|continue|goto|return)(?=\\\\s)\",\n          \"name\": \"keyword.control.mata\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.eltype.mata\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.orgtype.mata\"\n            }\n          },\n          \"match\": \"\\\\b(transmorphic|string|numeric|real|complex|(pointer(\\\\([^)]+\\\\))?))\\\\s+(matrix|vector|rowvector|colvector|scalar)\\\\b\",\n          \"name\": \"storage.type.mata\"\n        },\n        {\n          \"comment\": \"need to end with whitespace character here or last group doesn't match\",\n          \"match\": \"\\\\b(transmorphic|string|numeric|real|complex|(pointer(\\\\([^)]+\\\\))?))\\\\s\",\n          \"name\": \"storage.type.eltype.mata\"\n        },\n        {\n          \"match\": \"\\\\b(matrix|vector|rowvector|colvector|scalar)\\\\b\",\n          \"name\": \"storage.type.orgtype.mata\"\n        },\n        {\n          \"match\": \"\\\\!|\\\\+\\\\+|\\\\-\\\\-|\\\\&|\\\\'|\\\\?|\\\\\\\\|\\\\:\\\\:|\\\\,|\\\\.\\\\.|\\\\||\\\\=|\\\\=\\\\=|\\\\>\\\\=|\\\\<\\\\=|\\\\<|\\\\>|\\\\!\\\\=|\\\\#|\\\\+|\\\\-|\\\\*|\\\\^|\\\\/\",\n          \"name\": \"keyword.operator.mata\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"\\\\b(odbc)\\\\b\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.flow.stata\"\n        }\n      },\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"begin\": \"///\",\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.block.stata\"\n        },\n        {\n          \"begin\": \"(exec?)(\\\\(\\\")\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            }\n          },\n          \"end\": \"\\\"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.sql\"\n            }\n          ]\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#commands-other\"\n    }\n  ],\n  \"repository\": {\n    \"functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b((abbrev|abs|acos|acosh|asin|asinh|atan|atan2|atanh|autocode|betaden|binomial|binomialp|binomialtail|binormalbofd|byteorder|c|cauchy|cauchyden|cauchytail|Cdhms|ceil|char|chi2|chi2den|chi2tail|Chms|cholesky|chop|clip|clock|Clock|cloglog|Cmdyhms|cofC|Cofc|cofd|Cofd|coleqnumb|collatorlocale|collatorversion|colnfreeparms|colnumb|colsof|comb|cond|corr|cos|cosh|daily|date|day|det|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|dhms|diag|diag0cnt|digamma|dofb|dofc|dofC|dofh|dofm|dofq|dofw|dofy|dow|doy|dunnettprob|e|el|epsdouble|epsfloat|exp|exponential|exponentialden|exponentialtail|F|Fden|fileexists|fileread|filereaderror|filewrite|float|floor|fmtwidth|Ftail|gammaden|gammap|gammaptail|get|hadamard|halfyear|halfyearly|hh|hhC|hms|hofd|hours|hypergeometric|hypergeometricp|I|ibeta|ibetatail|igaussian|igaussianden|igaussiantail|indexnot|inlist|inrange|int|inv|invbinomial|invbinomialtail|invcauchy|invcauchytail|invchi2|invchi2tail|invcloglog|invdunnettprob|invexponential|invexponentialtail|invF|invFtail|invgammap|invgammaptail|invibeta|invibetatail|invigaussian|invigaussiantail|invlaplace|invlaplacetail|invlogistic|invlogistictail|invlogit|invnbinomial|invnbinomialtail|invnchi2|invnchi2tail|invnF|invnFtail|invnibeta|invnormal|invnt|invnttail|invpoisson|invpoissontail|invsym|invt|invttail|invtukeyprob|invweibull|invweibullph|invweibullphtail|invweibulltail|irecode|issymmetric|itrim|J|laplace|laplaceden|laplacetail|length|ln|lncauchyden|lnfactorial|lngamma|lnigammaden|lnigaussianden|lniwishartden|lnlaplaceden|lnmvnormalden|lnnormal|lnnormalden|lnwishartden|log|log10|logistic|logisticden|logistictail|logit|lower|ltrim|matmissing|matrix|matuniform|max|maxbyte|maxdouble|maxfloat|maxint|maxlong|mdy|mdyhms|mi|min|minbyte|mindouble|minfloat|minint|minlong|minutes|missing|mm|mmC|mod|mofd|month|monthly|mreldif|msofhours|msofminutes|msofseconds|nbetaden|nbinomial|nbinomialp|nbinomialtail|nchi2|nchi2den|nchi2tail|nF|nFden|nFtail|nibeta|normal|normalden|npnchi2|npnF|npnt|nt|ntden|nttail|nullmat|plural|poisson|poissonp|poissontail|proper|qofd|quarter|quarterly|r|rbeta|rbinomial|rcauchy|rchi2|real|recode|regexs|reldif|replay|return|reverse|rexponential|rgamma|rhypergeometric|rigaussian|rlaplace|rlogistic|rnbinomial|rnormal|round|roweqnumb|rownfreeparms|rownumb|rowsof|rpoisson|rt|rtrim|runiform|runiformint|rweibull|rweibullph|s|scalar|seconds|sign|sin|sinh|smallestdouble|soundex|sqrt|ss|ssC|string|stritrim|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrpos|strrtrim|strtoname|strtrim|strupper|subinstr|subinword|substr|sum|sweep|t|tan|tanh|tc|tC|td|tden|th|tin|tm|tobytes|tq|trace|trigamma|trim|trunc|ttail|tukeyprob|tw|twithin|uchar|udstrlen|udsubstr|uisdigit|uisletter|upper|ustrcompare|ustrcompareex|ustrfix|ustrfrom|ustrinvalidcnt|ustrleft|ustrlen|ustrlower|ustrltrim|ustrnormalize|ustrpos|ustrregexs|ustrreverse|ustrright|ustrrpos|ustrrtrim|ustrsortkey|ustrsortkeyex|ustrtitle|ustrto|ustrtohex|ustrtoname|ustrtrim|ustrunescape|ustrupper|ustrword|ustrwordcount|usubinstr|usubstr|vec|vecdiag|week|weekly|weibull|weibullden|weibullph|weibullphden|weibullphtail|weibulltail|wofd|word|wordbreaklocale|wordcount|year|yearly|yh|ym|yofd|yq|yw)|([\\\\w&&[^0-9]]\\\\w{0,31}))(\\\\()\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"3\": {\n              \"name\": \"support.function.custom.stata\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n              \"name\": \"variable.parameter.function.stata\"\n            },\n            {\n              \"begin\": \"\\\\(\",\n              \"end\": \"\\\\)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.parentheses.stata\"\n                }\n              },\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.parentheses.stata\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#ascii-regex-functions\"\n                },\n                {\n                  \"include\": \"#unicode-regex-functions\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"include\": \"#subscripts\"\n                },\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#operators\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#builtin_variables\"\n                },\n                {\n                  \"include\": \"#macro-commands\"\n                },\n                {\n                  \"include\": \"#braces-without-error\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#ascii-regex-functions\"\n            },\n            {\n              \"include\": \"#unicode-regex-functions\"\n            },\n            {\n              \"include\": \"#functions\"\n            },\n            {\n              \"include\": \"#subscripts\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            },\n            {\n              \"include\": \"#builtin_variables\"\n            },\n            {\n              \"include\": \"#macro-commands\"\n            },\n            {\n              \"include\": \"#braces-without-error\"\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\\\b\",\n          \"name\": \"support.type.stata\"\n        }\n      ]\n    },\n    \"builtin_variables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(_b|_coef|_cons|_n|_N|_rc|_se)\\\\b\",\n          \"name\": \"variable.object.stata\"\n        }\n      ]\n    },\n    \"braces-without-error\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.block.begin.stata\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            }\n          }\n        }\n      ]\n    },\n    \"braces-with-error\": {\n      \"patterns\": [\n        {\n          \"comment\": \"correct with nothing else on the line but whitespace; before and after; before; after; correct\",\n          \"begin\": \"(\\\\{)\\\\s*([^\\\\n]*)(?=\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.block.begin.stata\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"match\": \"[^\\\\n]+\",\n                  \"name\": \"illegal.invalid.name.stata\"\n                }\n              ]\n            }\n          },\n          \"end\": \"^\\\\s*(\\\\})\\\\s*$|^\\\\s*([^\\\\*\\\"\\\\}]+)\\\\s+(\\\\})\\\\s*([^\\\\*\\\"\\\\}/\\\\n]+)|^\\\\s*([^\\\"\\\\*\\\\}]+)\\\\s+(\\\\})|\\\\s*(\\\\})\\\\s*([^\\\"\\\\*\\\\}/\\\\n]+)|(\\\\})$\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.name.stata\"\n            },\n            \"9\": {\n              \"name\": \"keyword.control.block.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        }\n      ]\n    },\n    \"commands-other\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Add on commands\",\n          \"match\": \"\\\\b(reghdfe|ivreghdfe|ivreg2|outreg|gcollapse|gcontract|gegen|gisid|glevelsof|gquantiles)\\\\b\",\n          \"name\": \"keyword.control.flow.stata\"\n        },\n        {\n          \"comment\": \"Built in commands\",\n          \"match\": \"\\\\b(about|ac|acprplot|ado|adopath|adoupdate|alpha|ameans|an|ano|anov|anova|anova_terms|anovadef|aorder|ap|app|appe|appen|append|arch|arch_dr|arch_estat|arch_p|archlm|areg|areg_p|args|arima|arima_dr|arima_estat|arima_p|asmprobit|asmprobit_estat|asmprobit_lf|asmprobit_mfx__dlg|asmprobit_p|avplot|avplots|bcskew0|bgodfrey|binreg|bip0_lf|biplot|bipp_lf|bipr_lf|bipr_p|biprobit|bitest|bitesti|bitowt|blogit|bmemsize|boot|bootsamp|boxco_l|boxco_p|boxcox|boxcox_p|bprobit|br|break|brier|bro|brow|brows|browse|brr|brrstat|bs|bsampl_w|bsample|bsqreg|bstat|bstrap|ca|ca_estat|ca_p|cabiplot|camat|canon|canon_estat|canon_p|caprojection|cat|cc|cchart|cci|cd|censobs_table|centile|cf|char|chdir|checkdlgfiles|checkestimationsample|checkhlpfiles|checksum|chelp|ci|cii|cl|class|classutil|clear|cli|clis|clist|clog|clog_lf|clog_p|clogi|clogi_sw|clogit|clogit_lf|clogit_p|clogitp|clogl_sw|cloglog|clonevar|clslistarray|cluster|cluster_measures|cluster_stop|cluster_tree|cluster_tree_8|clustermat|cmdlog|cnr|cnre|cnreg|cnreg_p|cnreg_sw|cnsreg|codebook|collaps4|collapse|colormult_nb|colormult_nw|compare|compress|conf|confi|confir|confirm|conren|cons|const|constr|constra|constrai|constrain|constraint|contract|copy|copyright|copysource|cor|corc|corr|corr2data|corr_anti|corr_kmo|corr_smc|corre|correl|correla|correlat|correlate|corrgram|cou|coun|count|cprplot|crc|cret|cretu|cretur|creturn|cross|cs|cscript|cscript_log|csi|ct|ct_is|ctset|ctst_st|cttost|cumsp|cumul|cusum|cutil|d|datasig|datasign|datasigna|datasignat|datasignatu|datasignatur|datasignature|datetof|db|dbeta|de|dec|deco|decod|decode|deff|des|desc|descr|descri|describ|describe|dfbeta|dfgls|dfuller|di|di_g|dir|dirstats|dis|discard|disp|disp_res|disp_s|displ|displa|display|do|doe|doed|doedi|doedit|dotplot|dprobit|drawnorm|ds|ds_util|dstdize|duplicates|durbina|dwstat|dydx|ed|edi|edit|eivreg|emdef|en|enc|enco|encod|encode|eq|erase|ereg|ereg_lf|ereg_p|ereg_sw|ereghet|ereghet_glf|ereghet_glf_sh|ereghet_gp|ereghet_ilf|ereghet_ilf_sh|ereghet_ip|eret|eretu|eretur|ereturn|err|erro|error|est|est_cfexist|est_cfname|est_clickable|est_expand|est_hold|est_table|est_unhold|est_unholdok|estat|estat_default|estat_summ|estat_vce_only|esti|estimates|etodow|etof|etomdy|expand|expandcl|fac|fact|facto|factor|factor_estat|factor_p|factor_pca_rotated|factor_rotate|factormat|fcast|fcast_compute|fcast_graph|fdades|fdadesc|fdadescr|fdadescri|fdadescrib|fdadescribe|fdasav|fdasave|fdause|fh_st|file|filefilter|fillin|find_hlp_file|findfile|findit|fit|fl|fli|flis|flist|fpredict|frac_adj|frac_chk|frac_cox|frac_ddp|frac_dis|frac_dv|frac_in|frac_mun|frac_pp|frac_pq|frac_pv|frac_wgt|frac_xo|fracgen|fracplot|fracpoly|fracpred|fron_ex|fron_hn|fron_p|fron_tn|fron_tn2|frontier|ftodate|ftoe|ftomdy|ftowdate|gamhet_glf|gamhet_gp|gamhet_ilf|gamhet_ip|gamma|gamma_d2|gamma_p|gamma_sw|gammahet|gdi_hexagon|gdi_spokes|genrank|genstd|genvmean|gettoken|gladder|glim_l01|glim_l02|glim_l03|glim_l04|glim_l05|glim_l06|glim_l07|glim_l08|glim_l09|glim_l10|glim_l11|glim_l12|glim_lf|glim_mu|glim_nw1|glim_nw2|glim_nw3|glim_p|glim_v1|glim_v2|glim_v3|glim_v4|glim_v5|glim_v6|glim_v7|glm|glm_p|glm_sw|glmpred|glogit|glogit_p|gmeans|gnbre_lf|gnbreg|gnbreg_p|gomp_lf|gompe_sw|gomper_p|gompertz|gompertzhet|gomphet_glf|gomphet_glf_sh|gomphet_gp|gomphet_ilf|gomphet_ilf_sh|gomphet_ip|gphdot|gphpen|gphprint|gprefs|gprobi_p|gprobit|gr|gr7|gr_copy|gr_current|gr_db|gr_describe|gr_dir|gr_draw|gr_draw_replay|gr_drop|gr_edit|gr_editviewopts|gr_example|gr_example2|gr_export|gr_print|gr_qscheme|gr_query|gr_read|gr_rename|gr_replay|gr_save|gr_set|gr_setscheme|gr_table|gr_undo|gr_use|graph|grebar|greigen|grmeanby|gs_fileinfo|gs_filetype|gs_graphinfo|gs_stat|gsort|gwood|h|hareg|hausman|haver|he|heck_d2|heckma_p|heckman|heckp_lf|heckpr_p|heckprob|hel|help|hereg|hetpr_lf|hetpr_p|hetprob|hettest|hexdump|hilite|hist|histogram|hlogit|hlu|hmeans|hotel|hotelling|hprobit|hreg|hsearch|icd9|icd9_ff|icd9p|iis|impute|imtest|inbase|include|inf|infi|infil|infile|infix|inp|inpu|input|ins|insheet|insp|inspe|inspec|inspect|integ|inten|intreg|intreg_p|intrg2_ll|intrg_ll|intrg_ll2|ipolate|iqreg|ir|irf|irf_create|irfm|iri|is_svy|is_svysum|isid|istdize|ivprobit|ivprobit_p|ivreg|ivreg_footnote|ivtob_lf|ivtobit|ivtobit_p|jacknife|jknife|jkstat|joinby|kalarma1|kap|kapmeier|kappa|kapwgt|kdensity|ksm|ksmirnov|ktau|kwallis|labelbook|ladder|levelsof|leverage|lfit|lfit_p|li|lincom|line|linktest|lis|list|lloghet_glf|lloghet_glf_sh|lloghet_gp|lloghet_ilf|lloghet_ilf_sh|lloghet_ip|llogi_sw|llogis_p|llogist|llogistic|llogistichet|lnorm_lf|lnorm_sw|lnorma_p|lnormal|lnormalhet|lnormhet_glf|lnormhet_glf_sh|lnormhet_gp|lnormhet_ilf|lnormhet_ilf_sh|lnormhet_ip|lnskew0|loadingplot|(?<!\\\\.)log|logi|logis_lf|logistic|logistic_p|logit|logit_estat|logit_p|loglogs|logrank|loneway|lookfor|lookup|lowess|lpredict|lrecomp|lroc|lrtest|ls|lsens|lsens_x|lstat|ltable|ltriang|lv|lvr2plot|m|ma|mac|macr|macro|makecns|man|manova|manovatest|mantel|mark|markin|markout|marksample|mat|mat_capp|mat_order|mat_put_rr|mat_rapp|mata|mata_clear|mata_describe|mata_drop|mata_matdescribe|mata_matsave|mata_matuse|mata_memory|mata_mlib|mata_mosave|mata_rename|mata_which|matalabel|matcproc|matlist|matname|matr|matri|matrix|matrix_input__dlg|matstrik|mcc|mcci|md0_|md1_|md1debug_|md2_|md2debug_|mds|mds_estat|mds_p|mdsconfig|mdslong|mdsmat|mdsshepard|mdytoe|mdytof|me_derd|mean|means|median|memory|memsize|mfp|mfx|mhelp|mhodds|minbound|mixed_ll|mixed_ll_reparm|mkassert|mkdir|mkmat|mkspline|ml|ml_adjs|ml_bhhhs|ml_c_d|ml_check|ml_clear|ml_cnt|ml_debug|ml_defd|ml_e0|ml_e0_bfgs|ml_e0_cycle|ml_e0_dfp|ml_e0i|ml_e1|ml_e1_bfgs|ml_e1_bhhh|ml_e1_cycle|ml_e1_dfp|ml_e2|ml_e2_cycle|ml_ebfg0|ml_ebfr0|ml_ebfr1|ml_ebh0q|ml_ebhh0|ml_ebhr0|ml_ebr0i|ml_ecr0i|ml_edfp0|ml_edfr0|ml_edfr1|ml_edr0i|ml_eds|ml_eer0i|ml_egr0i|ml_elf|ml_elf_bfgs|ml_elf_bhhh|ml_elf_cycle|ml_elf_dfp|ml_elfi|ml_elfs|ml_enr0i|ml_enrr0|ml_erdu0|ml_erdu0_bfgs|ml_erdu0_bhhh|ml_erdu0_bhhhq|ml_erdu0_cycle|ml_erdu0_dfp|ml_erdu0_nrbfgs|ml_exde|ml_footnote|ml_geqnr|ml_grad0|ml_graph|ml_hbhhh|ml_hd0|ml_hold|ml_init|ml_inv|ml_log|ml_max|ml_mlout|ml_mlout_8|ml_model|ml_nb0|ml_opt|ml_p|ml_plot|ml_query|ml_rdgrd|ml_repor|ml_s_e|ml_score|ml_searc|ml_technique|ml_unhold|mleval|mlf_|mlmatbysum|mlmatsum|mlog|mlogi|mlogit|mlogit_footnote|mlogit_p|mlopts|mlsum|mlvecsum|mnl0_|mor|more|mov|move|mprobit|mprobit_lf|mprobit_p|mrdu0_|mrdu1_|mvdecode|mvencode|mvreg|mvreg_estat|nbreg|nbreg_al|nbreg_lf|nbreg_p|nbreg_sw|nestreg|net|newey|newey_p|news|nl|nlcom|nlcom_p|nlexp2|nlexp2a|nlexp3|nlgom3|nlgom4|nlinit|nllog3|nllog4|nlog_rd|nlogit|nlogit_p|nlogitgen|nlogittree|nlpred|nobreak|notes_dlg|nptrend|numlabel|numlist|old_ver|olo|olog|ologi|ologi_sw|ologit|ologit_p|ologitp|on|one|onew|onewa|oneway|op_colnm|op_comp|op_diff|op_inv|op_str|opr|opro|oprob|oprob_sw|oprobi|oprobi_p|oprobit|oprobitp|opts_exclusive|order|orthog|orthpoly|ou|out|outf|outfi|outfil|outfile|outs|outsh|outshe|outshee|outsheet|ovtest|pac|palette|parse_dissim|pause|pca|pca_display|pca_estat|pca_p|pca_rotate|pcamat|pchart|pchi|pcorr|pctile|pentium|pergram|personal|peto_st|pkcollapse|pkcross|pkequiv|pkexamine|pkshape|pksumm|plugin|pnorm|poisgof|poiss_lf|poiss_sw|poisso_p|poisson|poisson_estat|post|postclose|postfile|postutil|pperron|prais|prais_e|prais_e2|prais_p|predict|predictnl|preserve|print|prob|probi|probit|probit_estat|probit_p|proc_time|procoverlay|procrustes|procrustes_estat|procrustes_p|profiler|prop|proportion|prtest|prtesti|pwcorr|pwd|qs|qby|qbys|qchi|qladder|qnorm|qqplot|qreg|qreg_c|qreg_p|qreg_sw|qu|quadchk|quantile|que|quer|query|range|ranksum|ratio|rchart|rcof|recast|recode|reg|reg3|reg3_p|regdw|regr|regre|regre_p2|regres|regres_p|regress|regress_estat|regriv_p|remap|ren|rena|renam|rename|renpfix|repeat|reshape|restore|ret|retu|retur|return|rmdir|robvar|roccomp|rocf_lf|rocfit|rocgold|rocplot|roctab|rologit|rologit_p|rot|rota|rotat|rotate|rotatemat|rreg|rreg_p|ru|run|runtest|rvfplot|rvpplot|safesum|sample|sampsi|savedresults|sc|scatter|scm_mine|sco|scob_lf|scob_p|scobi_sw|scobit|scor|score|scoreplot|scoreplot_help|scree|screeplot|screeplot_help|sdtest|sdtesti|se|search|separate|seperate|serrbar|serset|set|set_defaults|sfrancia|sh|she|shel|shell|shewhart|signestimationsample|signrank|signtest|simul|sktest|sleep|slogit|slogit_d2|slogit_p|smooth|snapspan|so|sor|sort|spearman|spikeplot|spikeplt|spline_x|split|sqreg|sqreg_p|sret|sretu|sretur|sreturn|ssc|st|st_ct|st_hc|st_hcd|st_hcd_sh|st_is|st_issys|st_note|st_promo|st_set|st_show|st_smpl|st_subid|stack|stbase|stci|stcox|stcox_estat|stcox_fr|stcox_fr_ll|stcox_p|stcox_sw|stcoxkm|stcstat|stcurv|stcurve|stdes|stem|stepwise|stfill|stgen|stir|stjoin|stmc|stmh|stphplot|stphtest|stptime|strate|streg|streg_sw|streset|sts|stset|stsplit|stsum|sttocc|sttoct|stvary|su|suest|sum|summ|summa|summar|summari|summariz|summarize|sunflower|sureg|survcurv|survsum|svar|svar_p|svmat|svy_disp|svy_dreg|svy_est|svy_est_7|svy_estat|svy_get|svy_gnbreg_p|svy_head|svy_header|svy_heckman_p|svy_heckprob_p|svy_intreg_p|svy_ivreg_p|svy_logistic_p|svy_logit_p|svy_mlogit_p|svy_nbreg_p|svy_ologit_p|svy_oprobit_p|svy_poisson_p|svy_probit_p|svy_regress_p|svy_sub|svy_sub_7|svy_x|svy_x_7|svy_x_p|svydes|svygen|svygnbreg|svyheckman|svyheckprob|svyintreg|svyintrg|svyivreg|svylc|svylog_p|svylogit|svymarkout|svymean|svymlog|svymlogit|svynbreg|svyolog|svyologit|svyoprob|svyoprobit|svyopts|svypois|svypoisson|svyprobit|svyprobt|svyprop|svyratio|svyreg|svyreg_p|svyregress|svyset|svytab|svytest|svytotal|sw|swilk|symmetry|symmi|symplot|sysdescribe|sysdir|sysuse|szroeter|ta|tab|tab1|tab2|tab_or|tabd|tabdi|tabdis|tabdisp|tabi|table|tabodds|tabstat|tabu|tabul|tabula|tabulat|tabulate|te|tes|test|testnl|testparm|teststd|tetrachoric|time_it|timer|tis|tob|tobi|tobit|tobit_p|tobit_sw|token|tokeni|tokeniz|tokenize|total|translate|translator|transmap|treat_ll|treatr_p|treatreg|trim|trnb_cons|trnb_mean|trpoiss_d2|trunc_ll|truncr_p|truncreg|tsappend|tset|tsfill|tsline|tsline_ex|tsreport|tsrevar|tsrline|tsset|tssmooth|tsunab|ttest|ttesti|tut_chk|tut_wait|tutorial|tw|tware_st|two|twoway|twoway__fpfit_serset|twoway__function_gen|twoway__histogram_gen|twoway__ipoint_serset|twoway__ipoints_serset|twoway__kdensity_gen|twoway__lfit_serset|twoway__normgen_gen|twoway__pci_serset|twoway__qfit_serset|twoway__scatteri_serset|twoway__sunflower_gen|twoway_ksm_serset|ty|typ|type|typeof|unab|unabbrev|unabcmd|update|uselabel|var|var_mkcompanion|var_p|varbasic|varfcast|vargranger|varirf|varirf_add|varirf_cgraph|varirf_create|varirf_ctable|varirf_describe|varirf_dir|varirf_drop|varirf_erase|varirf_graph|varirf_ograph|varirf_rename|varirf_set|varirf_table|varlmar|varnorm|varsoc|varstable|varstable_w|varstable_w2|varwle|vec|vec_fevd|vec_mkphi|vec_p|vec_p_w|vecirf_create|veclmar|veclmar_w|vecnorm|vecnorm_w|vecrank|vecstable|verinst|vers|versi|versio|version|view|viewsource|vif|vwls|wdatetof|webdescribe|webseek|webuse|wh|whelp|whi|which|wilc_st|wilcoxon|win|wind|windo|window|winexec|wntestb|wntestq|xchart|xcorr|xi|xmlsav|xmlsave|xmluse|xpose|xsh|xshe|xshel|xshell|xt_iis|xt_tis|xtab_p|xtabond|xtbin_p|xtclog|xtcloglog|xtcloglog_d2|xtcloglog_pa_p|xtcloglog_re_p|xtcnt_p|xtcorr|xtdata|xtdes|xtfront_p|xtfrontier|xtgee|xtgee_elink|xtgee_estat|xtgee_makeivar|xtgee_p|xtgee_plink|xtgls|xtgls_p|xthaus|xthausman|xtht_p|xthtaylor|xtile|xtint_p|xtintreg|xtintreg_d2|xtintreg_p|xtivreg|xtline|xtline_ex|xtlogit|xtlogit_d2|xtlogit_fe_p|xtlogit_pa_p|xtlogit_re_p|xtmixed|xtmixed_estat|xtmixed_p|xtnb_fe|xtnb_lf|xtnbreg|xtnbreg_pa_p|xtnbreg_refe_p|xtpcse|xtpcse_p|xtpois|xtpoisson|xtpoisson_d2|xtpoisson_pa_p|xtpoisson_refe_p|xtpred|xtprobit|xtprobit_d2|xtprobit_re_p|xtps_fe|xtps_lf|xtps_ren|xtps_ren_8|xtrar_p|xtrc|xtrc_p|xtrchh|xtrefe_p|yx|yxview__barlike_draw|yxview_area_draw|yxview_bar_draw|yxview_dot_draw|yxview_dropline_draw|yxview_function_draw|yxview_iarrow_draw|yxview_ilabels_draw|yxview_normal_draw|yxview_pcarrow_draw|yxview_pcbarrow_draw|yxview_pccapsym_draw|yxview_pcscatter_draw|yxview_pcspike_draw|yxview_rarea_draw|yxview_rbar_draw|yxview_rbarm_draw|yxview_rcap_draw|yxview_rcapsym_draw|yxview_rconnected_draw|yxview_rline_draw|yxview_rscatter_draw|yxview_rspike_draw|yxview_spike_draw|yxview_sunflower_draw|zap_s|zinb|zinb_llf|zinb_plf|zip|zip_llf|zip_p|zip_plf|zt_ct_5|zt_hc_5|zt_hcd_5|zt_is_5|zt_iss_5|zt_sho_5|zt_smp_5|ztnb|ztnb_p|ztp|ztp_p|prtab|prchange|eststo|estout|esttab|estadd|estpost|ivregress|xtreg|xtreg_be|xtreg_fe|xtreg_ml|xtreg_pa_p|xtreg_re|xtregar|xtrere_p|xtset|xtsf_ll|xtsf_llti|xtsum|xttab|xttest0|xttobit|xttobit_p|xttrans)\\\\b\",\n          \"name\": \"keyword.control.flow.stata\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments-double-slash\"\n        },\n        {\n          \"include\": \"#comments-star\"\n        },\n        {\n          \"include\": \"#comments-block\"\n        },\n        {\n          \"include\": \"#comments-triple-slash\"\n        }\n      ]\n    },\n    \"comments-block\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\\*/\\\\s+\\\\*[^\\\\n]*)|(\\\\*/(?!\\\\*))\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.stata\"\n            }\n          },\n          \"name\": \"comment.block.stata\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\*/\\\\*\",\n              \"comment\": \"this ends and restarts a comment block. but need to catch this so that it doesn't start _another_ level of comment blocks\"\n            },\n            {\n              \"include\": \"#docblockr-comment\"\n            },\n            {\n              \"include\": \"#comments-block\"\n            },\n            {\n              \"include\": \"#docstring\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-star\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.stata\"\n            }\n          },\n          \"begin\": \"^\\\\s*(\\\\*)\",\n          \"name\": \"comment.line.star.stata\",\n          \"end\": \"(?=\\\\n)\",\n          \"comment\": \"TODO! need to except out the occasion that a * comes after a /// on the previous line. May be easiest to join with the comment.line.triple-slash.stata below\",\n          \"patterns\": [\n            {\n              \"include\": \"#docblockr-comment\"\n            },\n            {\n              \"begin\": \"///\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line-continuation.stata\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-triple-slash\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.stata\"\n            }\n          },\n          \"begin\": \"(^///|(?<=\\\\s)///)\",\n          \"end\": \"(?=\\\\n)\",\n          \"name\": \"comment.line.triple-slash.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#docblockr-comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"comments-double-slash\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.stata\"\n            }\n          },\n          \"begin\": \"(^//|(?<=\\\\s)//)(?!/)\",\n          \"end\": \"(?=\\\\n)\",\n          \"name\": \"comment.line.double-slash.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#docblockr-comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblockr-comment\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\w)(@(error|ERROR|Error))\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.name.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<!\\\\w)(@\\\\w+)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.docblockr.stata\"\n            }\n          }\n        }\n      ]\n    },\n    \"docstring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"'''\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"'''\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"name\": \"string.quoted.docstring.stata\"\n        },\n        {\n          \"begin\": \"\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"\\\"\\\"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"name\": \"string.quoted.docstring.stata\"\n        }\n      ]\n    },\n    \"macro-commands\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(loc(al|a)?)\\\\s+([\\\\w'`\\\\$\\\\(\\\\)\\\\{\\\\}]+)\\\\s*(?=:|=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#macro-local-identifiers\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                }\n              ]\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"=\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.arithmetic.stata\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            {\n              \"begin\": \":\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.arithmetic.stata\"\n                }\n              },\n              \"end\": \"(?=\\\\n)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#macro-extended-functions\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(gl(obal|oba|ob|o)?)\\\\s+(?=[\\\\w`\\\\$])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.stata\"\n            }\n          },\n          \"end\": \"(\\\\})|(?=\\\\\\\"|\\\\s|\\\\n|/|,|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#reserved-names\"\n            },\n            {\n              \"match\": \"[\\\\w&&[^0-9_]]\\\\w{0,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(loc(al|a)?)\\\\s+(\\\\+\\\\+|\\\\-\\\\-)?(?=[\\\\w`\\\\$])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.stata\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.stata\"\n            }\n          },\n          \"end\": \"(?=\\\\\\\"|\\\\s|\\\\n|/|,|=)\",\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local-identifiers\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(tempvar|tempname|tempfile)\\\\s*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.stata\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.block.stata\"\n            },\n            {\n              \"include\": \"#macro-local-identifiers\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\b(ma(cro|cr|c)?)\\\\s+(drop|l(ist|is|i)?)\\\\s*(?=\\\\s)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.macro.stata\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.block.stata\"\n            },\n            {\n              \"match\": \"\\\\*\",\n              \"name\": \"keyword.operator.arithmetic.stata\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"match\": \"\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"macro-extended-functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(properties)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(t(ype|yp|y)?|f(ormat|orma|orm|or|o)?|val(ue|u)?\\\\s+l(able|abl|ab|a)?|var(iable|iabl|iab|ia|i)?\\\\s+l(abel|abe|ab|a)?|data\\\\s+l(able|abl|ab|a)?|sort(edby|edb|ed|e)?|lab(el|e)?|maxlength|constraint|char)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(permname)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(adosubdir|dir|files?|dirs?|other|sysdir)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(env(ironment|ironmen|ironme|ironm|iron|iro|ir|i)?)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(all\\\\s+(globals|scalars|matrices)|((numeric|string)\\\\s+scalars))\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(list)\\\\s+(uniq|dups|sort|clean|retok(enize|eniz|eni|en|e)?|sizeof)\\\\s+(\\\\w{1,32})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(list)\\\\s+(\\\\w{1,32})\\\\s+(\\\\||&|\\\\-|===|==|in)\\\\s+(\\\\w{1,32})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.class.stata\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.list.stata\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(list\\\\s+posof)\\\\s+(\\\")(\\\\w+)(\\\")\\\\s+(in)\\\\s+(\\\\w{1,32})\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"3\": {\n              \"name\": \"string.quoted.double.stata\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"5\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(rown(ames|ame|am|a)?|coln(ames|ame|am|a)?|rowf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|colf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|roweq?|coleq?|rownumb|colnumb|roweqnumb|coleqnumb|rownfreeparms|colnfreeparms|rownlfs|colnlfs|rowsof|colsof|rowvarlist|colvarlist|rowlfnames|collfnames)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b(tsnorm)\\\\b\",\n          \"name\": \"keyword.macro.extendedfcn.stata\"\n        },\n        {\n          \"match\": \"\\\\b((copy|(ud|u)?strlen)\\\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\\\s+([^']+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(word\\\\s+count)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"(word|piece)\\\\s+([\\\\s`'\\\\w]+)\\\\s+(of)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#constants\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            }\n          }\n        },\n        {\n          \"begin\": \"\\\\b(subinstr\\\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\\\s+(\\\\w{1,32})\",\n          \"end\": \"(?=//|\\\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.macro.extendedfcn.stata\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            },\n            {\n              \"match\": \"(count|coun|cou|co|c)(\\\\()(local|loca|loc|global|globa|glob|glo|gl)\\\\s+(\\\\w{1,32})(\\\\))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.function.builtin.stata\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.stata\"\n                },\n                \"3\": {\n                  \"name\": \"keyword.macro.extendedfcn.stata\"\n                },\n                \"4\": {\n                  \"name\": \"entity.name.type.class.stata\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.parameters.end.stata\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"macro-local-escaped\": {\n      \"patterns\": [\n        {\n          \"comment\": \"appropriately color macros that have embedded escaped `,', and $ characters for lazy evaluation\",\n          \"begin\": \"\\\\\\\\`(?!\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"\\\\\\\\'|'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"macro-local\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(`)(=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.comparison.stata\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"$self\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(`)(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.comparison.stata\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"contentName\": \"meta.macro-extended-function.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-extended-functions\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(`)(macval)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"2\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\\))(')\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"contentName\": \"meta.macro-extended-function.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"`(?!\\\")\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\+\\\\+|\\\\-\\\\-\",\n              \"name\": \"keyword.operator.arithmetic.stata\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#comments-block\"\n            },\n            {\n              \"begin\": \"[^\\\\w]\",\n              \"end\": \"\\\\n|(?=')\",\n              \"name\": \"comment.line.stata\"\n            },\n            {\n              \"match\": \"\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"macro-global-escaped\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\\\\\\\\\$)(\\\\\\\\\\\\{)?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\\\\\\\\\\})|(?=\\\\\\\"|\\\\s|\\\\n|/|,)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"[\\\\w&&[^0-9_]]\\\\w{0,31}|_\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"macro-global\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\$)(\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#comments-block\"\n            },\n            {\n              \"begin\": \"[^\\\\w]\",\n              \"end\": \"\\\\n|(?=})\",\n              \"name\": \"comment.line.stata\"\n            },\n            {\n              \"match\": \"\\\\w{1,32}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\$\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"(?!\\\\w)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"match\": \"[\\\\w&&[^0-9_]]\\\\w{0,31}|_\\\\w{1,31}\",\n              \"name\": \"entity.name.type.class.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"include\": \"#factorvariables\"\n        },\n        {\n          \"match\": \"\\\\b(?i:(\\\\d+\\\\.\\\\d*(e[\\\\-\\\\+]?\\\\d+)?))(?=[^a-zA-Z_])\",\n          \"name\": \"constant.numeric.float.stata\"\n        },\n        {\n          \"match\": \"(?<=[^0-9a-zA-Z_])(?i:(\\\\.\\\\d+(e[\\\\-\\\\+]?\\\\d+)?))\",\n          \"name\": \"constant.numeric.float.stata\"\n        },\n        {\n          \"match\": \"\\\\b(?i:(\\\\d+e[\\\\-\\\\+]?\\\\d+))\",\n          \"name\": \"constant.numeric.float.stata\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d+)\\\\b\",\n          \"name\": \"constant.numeric.integer.decimal.stata\"\n        },\n        {\n          \"match\": \"(?<![\\\\w])(\\\\.(?![\\\\./]))(?![\\\\w])\",\n          \"name\": \"constant.language.missing.stata\"\n        },\n        {\n          \"match\": \"\\\\b_all\\\\b\",\n          \"name\": \"constant.language.allvars.stata\"\n        }\n      ]\n    },\n    \"factorvariables\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(i|c|o)\\\\.(?=[\\\\w&&[^0-9]]|\\\\([\\\\w&&[^0-9]])\",\n          \"name\": \"constant.language.factorvars.stata\"\n        },\n        {\n          \"match\": \"\\\\b(i?b)((\\\\d+)|n)\\\\.(?=[\\\\w&&[^0-9]]|\\\\([\\\\w&&[^0-9]])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.factorvars.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#constants\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(i?b)(\\\\()(#\\\\d+|first|last|freq)(\\\\))\\\\.(?=[\\\\w&&[^0-9]]|\\\\([\\\\w&&[^0-9]])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.factorvars.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.parentheses.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"include\": \"#operators\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.parentheses.stata\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(i?o?)(\\\\d+)\\\\.(?=[\\\\w&&[^0-9]]|\\\\([\\\\w&&[^0-9]])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.language.factorvars.stata\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#constants\"\n                }\n              ]\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(i?o?)(\\\\()(.*?)(\\\\))(\\\\.)(?=[\\\\w&&[^0-9]]|\\\\([\\\\w&&[^0-9]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.factorvars.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.parentheses.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.parentheses.stata\"\n            },\n            \"5\": {\n              \"name\": \"constant.language.factorvars.stata\"\n            }\n          }\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\+\\\\+|\\\\-\\\\-|\\\\+|\\\\-|\\\\*|\\\\^\",\n          \"name\": \"keyword.operator.arithmetic.stata\",\n          \"comment\": \"++ and -- must come first to support ligatures\"\n        },\n        {\n          \"comment\": \"match division operator but not path separator\",\n          \"match\": \"(?<![\\\\w.&&[^0-9]])/(?![\\\\w.&&[^0-9]]|$)\",\n          \"name\": \"keyword.operator.arithmetic.stata\"\n        },\n        {\n          \"comment\": \"match division operator but not path separator\",\n          \"match\": \"(?<![\\\\w.&&[^0-9]])\\\\\\\\(?![\\\\w.&&[^0-9]]|$)\",\n          \"name\": \"keyword.operator.matrix.addrow.stata\"\n        },\n        {\n          \"match\": \"\\\\|\\\\|\",\n          \"name\": \"keyword.operator.graphcombine.stata\"\n        },\n        {\n          \"match\": \"\\\\&|\\\\|\",\n          \"name\": \"keyword.operator.logical.stata\"\n        },\n        {\n          \"match\": \"(?:<=|>=|:=|==|!=|~=|<|>|=|!!|!)\",\n          \"name\": \"keyword.operator.comparison.stata\"\n        },\n        {\n          \"match\": \"\\\\(|\\\\)\",\n          \"name\": \"keyword.operator.parentheses.stata\"\n        },\n        {\n          \"match\": \"(##|#)\",\n          \"name\": \"keyword.operator.factor-variables.stata\"\n        },\n        {\n          \"match\": \"%\",\n          \"name\": \"keyword.operator.format.stata\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value\"\n        },\n        {\n          \"match\": \"\\\\[\",\n          \"name\": \"punctuation.definition.parameters.begin.stata\"\n        },\n        {\n          \"match\": \"\\\\]\",\n          \"name\": \"punctuation.definition.parameters.end.stata\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.definition.variable.begin.stata\"\n        },\n        {\n          \"match\": \";\",\n          \"name\": \"keyword.operator.delimiter.stata\"\n        }\n      ]\n    },\n    \"string-compound\": {\n      \"patterns\": [\n        {\n          \"begin\": \"`\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"\\\"'|(?=\\n)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            }\n          },\n          \"name\": \"string.quoted.double.compound.stata\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"\",\n              \"name\": \"string.quoted.double.compound.stata\",\n              \"comment\": \"This must come before #string-regular and #string-compound to accurately color `\\\"\\\"\\\"' in strings\"\n            },\n            {\n              \"match\": \"```(?=[^']*\\\")\",\n              \"name\": \"meta.markdown.code.block.stata\",\n              \"comment\": \"see https://github.com/kylebarron/language-stata/issues/53\"\n            },\n            {\n              \"include\": \"#string-regular\"\n            },\n            {\n              \"include\": \"#string-compound\"\n            },\n            {\n              \"include\": \"#macro-local-escaped\"\n            },\n            {\n              \"include\": \"#macro-global-escaped\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-regular\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!`)\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\")(')?|(?=\\n)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.punctuation.stata\"\n            }\n          },\n          \"name\": \"string.quoted.double.stata\",\n          \"patterns\": [\n            {\n              \"match\": \"```(?=[^']*\\\")\",\n              \"name\": \"meta.markdown.code.block.stata\",\n              \"comment\": \"see https://github.com/kylebarron/language-stata/issues/53\"\n            },\n            {\n              \"include\": \"#macro-local-escaped\"\n            },\n            {\n              \"include\": \"#macro-global-escaped\"\n            },\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            }\n          ]\n        }\n      ]\n    },\n    \"subscripts\": {\n      \"patterns\": [\n        {\n          \"comment\": \"highlight expressions, like [_n], when using subscripts on a variable\",\n          \"begin\": \"(?<=[\\\\w'])(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          },\n          \"name\": \"meta.subscripts.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#macro-local\"\n            },\n            {\n              \"include\": \"#macro-global\"\n            },\n            {\n              \"include\": \"#builtin_variables\"\n            },\n            {\n              \"include\": \"#operators\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#functions\"\n            }\n          ]\n        }\n      ]\n    },\n    \"reserved-names\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(_all|_b|byte|_coef|_cons|double|float|if|in|int|long|_n|_N|_pi|_pred|_rc|_skip|str[0-9]+|strL|using|with)\\\\b\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"match\": \"[^\\\\w'`\\\\$\\\\(\\\\)\\\\s]\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"match\": \"[0-9][\\\\w]{31,}\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"match\": \"\\\\w{33,}\",\n          \"name\": \"invalid.illegal.name.stata\"\n        }\n      ]\n    },\n    \"macro-local-identifiers\": {\n      \"patterns\": [\n        {\n          \"match\": \"[^\\\\w'`\\\\$\\\\(\\\\)\\\\s]\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"match\": \"\\\\w{32,}\",\n          \"name\": \"invalid.illegal.name.stata\"\n        },\n        {\n          \"match\": \"\\\\w{1,31}\",\n          \"name\": \"entity.name.type.class.stata\"\n        }\n      ]\n    },\n    \"ascii-regex-functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"color regexm with regular quotes i.e. \\\" \",\n          \"match\": \"\\\\b(regexm)(\\\\()([^,]+)(,)\\\\s*(\\\")([^\\\"]+)(\\\"(')?)\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#ascii-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.punctuation.stata\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexm with compound quotes\",\n          \"match\": \"\\\\b(regexm)(\\\\()([^,]+)(,)\\\\s*(`\\\")([^\\\"]+)(\\\"')\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#ascii-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexr with regular quotes i.e. \\\" \",\n          \"match\": \"\\\\b(regexr)(\\\\()([^,]+)(,)\\\\s*(\\\")([^\\\"]+)(\\\"(')?)\\\\s*([^\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#ascii-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.punctuation.stata\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexr with compound quotes i.e. `\\\"text\\\"' \",\n          \"match\": \"\\\\b(regexr)(\\\\()([^,]+)(,)\\\\s*(`\\\")([^\\\"]+)(\\\"')\\\\s*([^\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#ascii-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        }\n      ]\n    },\n    \"ascii-regex-internals\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\^\",\n          \"name\": \"keyword.control.anchor.stata\"\n        },\n        {\n          \"match\": \"\\\\$(?![a-zA-Z_\\\\{])\",\n          \"name\": \"keyword.control.anchor.stata\",\n          \"comment\": \"matched when not a global, but must be ascii\"\n        },\n        {\n          \"match\": \"[\\\\?\\\\+\\\\*]\",\n          \"name\": \"keyword.control.quantifier.stata\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.control.or.stata\"\n        },\n        {\n          \"begin\": \"(\\\\()(?=\\\\?|\\\\*|\\\\+)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group.stata\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.group.stata\"\n            }\n          },\n          \"contentName\": \"invalid.illegal.regexm.stata\"\n        },\n        {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group.stata\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group.stata\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#ascii-regex-internals\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#ascii-regex-character-class\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"comment\": \"NOTE: Error if I have .+ No idea why but it works fine it seems with just .\",\n          \"match\": \".\",\n          \"name\": \"string.quoted.stata\"\n        }\n      ]\n    },\n    \"ascii-regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[\\\\*\\\\+\\\\?\\\\-\\\\.\\\\^\\\\$\\\\|\\\\[\\\\]\\\\(\\\\)\\\\\\\\]\",\n          \"name\": \"constant.character.escape.backslash.stata\"\n        },\n        {\n          \"match\": \"\\\\.\",\n          \"name\": \"constant.character.character-class.stata\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"illegal.invalid.character-class.stata\"\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.stata\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.stata\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#ascii-regex-character-class\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.character.escape.backslash.stata\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.escape.backslash.stata\"\n                }\n              },\n              \"match\": \"((\\\\\\\\.)|.)\\\\-((\\\\\\\\.)|[^\\\\]])\",\n              \"name\": \"constant.other.character-class.range.stata\"\n            }\n          ]\n        }\n      ]\n    },\n    \"unicode-regex-functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"color regexm with regular quotes i.e. \\\" \",\n          \"match\": \"\\\\b(ustrregexm)(\\\\()([^,]+)(,)\\\\s*(\\\")([^\\\"]+)(\\\"(')?)([,0-9\\\\s]*)?\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#unicode-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.punctuation.stata\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                }\n              ]\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexm with compound quotes\",\n          \"match\": \"\\\\b(ustrregexm)(\\\\()([^,]+)(,)\\\\s*(`\\\")([^\\\"]+)(\\\"')([,0-9\\\\s]*)?\\\\s*(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#unicode-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#constants\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                }\n              ]\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexr with regular quotes i.e. \\\" \",\n          \"match\": \"\\\\b(ustrregexrf|ustrregexra)(\\\\()([^,]+)(,)\\\\s*(\\\")([^\\\"]+)(\\\"(')?)\\\\s*([^\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#unicode-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.punctuation.stata\"\n            },\n            \"9\": {\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                },\n                {\n                  \"include\": \"#constants\"\n                }\n              ]\n            },\n            \"10\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        },\n        {\n          \"comment\": \"color regexr with compound quotes i.e. `\\\"text\\\"' \",\n          \"match\": \"\\\\b(ustrregexrf|ustrregexra)(\\\\()([^,]+)(,)\\\\s*(`\\\")([^\\\"]+)(\\\"')\\\\s*([^\\\\)]*)(\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.builtin.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.parameters.begin.stata\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.begin.stata\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.string.begin.stata\"\n            },\n            \"6\": {\n              \"patterns\": [\n                {\n                  \"include\": \"#unicode-regex-internals\"\n                }\n              ]\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.stata\"\n            },\n            \"8\": {\n              \"patterns\": [\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.definition.variable.begin.stata\"\n                },\n                {\n                  \"include\": \"#string-compound\"\n                },\n                {\n                  \"include\": \"#string-regular\"\n                },\n                {\n                  \"include\": \"#macro-local\"\n                },\n                {\n                  \"include\": \"#macro-global\"\n                },\n                {\n                  \"include\": \"#functions\"\n                },\n                {\n                  \"match\": \"[\\\\w&&[^0-9]]\\\\w{0,31}\",\n                  \"name\": \"variable.parameter.function.stata\"\n                },\n                {\n                  \"include\": \"#comments-triple-slash\"\n                },\n                {\n                  \"include\": \"#constants\"\n                }\n              ]\n            },\n            \"9\": {\n              \"name\": \"punctuation.definition.parameters.end.stata\"\n            }\n          }\n        }\n      ]\n    },\n    \"unicode-regex-internals\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[bBAZzG]|\\\\^\",\n          \"name\": \"keyword.control.anchor.stata\"\n        },\n        {\n          \"match\": \"\\\\$(?![[\\\\w&&[^0-9_]][\\\\w]{0,31}|_[\\\\w]{1,31}\\\\{])\",\n          \"name\": \"keyword.control.anchor.stata\",\n          \"comment\": \"matched when not a global\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9][0-9]?\",\n          \"name\": \"keyword.other.back-reference.stata\"\n        },\n        {\n          \"match\": \"[?+*][?+]?|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\",\n          \"name\": \"keyword.operator.quantifier.stata\"\n        },\n        {\n          \"match\": \"\\\\|\",\n          \"name\": \"keyword.operator.or.stata\"\n        },\n        {\n          \"begin\": \"\\\\((?!\\\\?\\\\#|\\\\?=|\\\\?!|\\\\?<=|\\\\?<!)\",\n          \"end\": \"\\\\)\",\n          \"name\": \"keyword.operator.group.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#unicode-regex-internals\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\(\\\\?\\\\#\",\n          \"end\": \"\\\\)\",\n          \"name\": \"comment.block.stata\"\n        },\n        {\n          \"comment\": \"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.\",\n          \"match\": \"(?<=^|\\\\s)#\\\\s[[a-zA-Z0-9,. \\\\t?!-:][^\\\\x{00}-\\\\x{7F}]]*$\",\n          \"name\": \"comment.line.number-sign.stata\"\n        },\n        {\n          \"match\": \"\\\\(\\\\?[iLmsux]+\\\\)\",\n          \"name\": \"keyword.other.option-toggle.stata\"\n        },\n        {\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.stata\"\n            },\n            \"3\": {\n              \"name\": \"keyword.assertion.look-ahead.stata\"\n            },\n            \"4\": {\n              \"name\": \"keyword.assertion.negative-look-ahead.stata\"\n            },\n            \"5\": {\n              \"name\": \"keyword.assertion.look-behind.stata\"\n            },\n            \"6\": {\n              \"name\": \"keyword.assertion.negative-look-behind.stata\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.group.stata\"\n            }\n          },\n          \"name\": \"meta.group.assertion.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#unicode-regex-internals\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(\\\\()(\\\\?\\\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.stata\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.conditional.stata\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.section.back-reference.stata\"\n            }\n          },\n          \"comment\": \"we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.\",\n          \"end\": \"(\\\\))\",\n          \"name\": \"meta.group.assertion.conditional.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#unicode-regex-internals\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#unicode-regex-character-class\"\n        },\n        {\n          \"include\": \"#macro-local\"\n        },\n        {\n          \"include\": \"#macro-global\"\n        },\n        {\n          \"comment\": \"NOTE: Error if I have .+ No idea why but it works fine it seems with just .\",\n          \"match\": \".\",\n          \"name\": \"string.quoted.stata\"\n        }\n      ]\n    },\n    \"unicode-regex-character-class\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[wWsSdD]|\\\\.\",\n          \"name\": \"constant.character.character-class.stata\"\n        },\n        {\n          \"match\": \"\\\\\\\\.\",\n          \"name\": \"constant.character.escape.backslash.stata\"\n        },\n        {\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.stata\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.stata\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.stata\"\n            }\n          },\n          \"name\": \"constant.other.character-class.set.stata\",\n          \"patterns\": [\n            {\n              \"include\": \"#unicode-regex-character-class\"\n            },\n            {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"constant.character.escape.backslash.stata\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.escape.backslash.stata\"\n                }\n              },\n              \"match\": \"((\\\\\\\\.)|.)\\\\-((\\\\\\\\.)|[^\\\\]])\",\n              \"name\": \"constant.other.character-class.range.stata\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/stylus.tmLanguage.json",
    "content": "{\n  \"name\": \"stylus\",\n  \"scopeName\": \"source.stylus\",\n  \"fileTypes\": [\"styl\", \"stylus\", \"css.styl\", \"css.stylus\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#at_rule\"\n    },\n    {\n      \"include\": \"#language_keywords\"\n    },\n    {\n      \"include\": \"#language_constants\"\n    },\n    {\n      \"include\": \"#variable_declaration\"\n    },\n    {\n      \"include\": \"#function\"\n    },\n    {\n      \"include\": \"#selector\"\n    },\n    {\n      \"include\": \"#declaration\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.property-list.begin.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.section.property-list.end.css\"\n        }\n      },\n      \"match\": \"(\\\\{)(\\\\})\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"match\": \"\\\\{|\\\\}\",\n      \"name\": \"meta.brace.curly.css\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"include\": \"#string\"\n    },\n    {\n      \"include\": \"#operator\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment_block\"\n        },\n        {\n          \"include\": \"#comment_line\"\n        }\n      ]\n    },\n    \"comment_block\": {\n      \"begin\": \"/\\\\*\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.css\"\n        }\n      },\n      \"end\": \"\\\\*/\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.css\"\n        }\n      },\n      \"name\": \"comment.block.css\"\n    },\n    \"comment_line\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.stylus\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"//\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.stylus\"\n            }\n          },\n          \"end\": \"(?=\\\\n)\",\n          \"name\": \"comment.line.double-slash.stylus\"\n        }\n      ]\n    },\n    \"selector\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rt|rtc|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"entity.name.tag.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"entity.name.tag.svg.css\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\,)\\\\s*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\&)([a-zA-Z0-9_-]+)\\\\s*\",\n          \"captures\": {\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.parent-selector-suffix.stylus\"\n            }\n          },\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"match\": \"\\\\s*(\\\\&)\\\\s*\",\n          \"name\": \"meta.selector.stylus\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(\\\\.)[a-zA-Z0-9_-]+\",\n          \"name\": \"entity.other.attribute-name.class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(#)[a-zA-Z][a-zA-Z0-9_-]*\",\n          \"name\": \"entity.other.attribute-name.id.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-element.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.ui-state.css\"\n        },\n        {\n          \"begin\": \"((:)not)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#selector\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.css\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"match\": \"((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\\\()(\\\\-?(?:\\\\d+n?|n)(?:\\\\+\\\\d+)?|even|odd)(\\\\))\"\n        },\n        {\n          \"match\": \"((:)dir)\\\\s*(?:(\\\\()(ltr|rtl)?(\\\\)))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"puncutation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.language.css\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          }\n        },\n        {\n          \"match\": \"((:)lang)\\\\s*(?:(\\\\()(\\\\w+(-\\\\w+)?)?(\\\\)))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n            },\n            \"2\": {\n              \"name\": \"puncutation.definition.entity.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"4\": {\n              \"name\": \"constant.language.css\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          }\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(:)(active|hover|link|visited|focus)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(::)(shadow)\\\\b\",\n          \"name\": \"entity.other.attribute-name.pseudo-class.css\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.attribute.css\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.operator.css\"\n            },\n            \"4\": {\n              \"name\": \"string.unquoted.attribute-value.css\"\n            },\n            \"5\": {\n              \"name\": \"string.quoted.double.attribute-value.css\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            },\n            \"8\": {\n              \"name\": \"punctuation.definition.entity.css\"\n            }\n          },\n          \"match\": \"(?i)(\\\\[)\\\\s*(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)(?:\\\\s*([~|^$*]?=)\\\\s*(?:(-?[_a-z\\\\\\\\[[:^ascii:]]][_a-z0-9\\\\-\\\\\\\\[[:^ascii:]]]*)|((?>(['\\\"])(?:[^\\\\\\\\]|\\\\\\\\.)*?(\\\\6)))))?\\\\s*(\\\\])\",\n          \"name\": \"meta.attribute-selector.css\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    \"variable_declaration\": {\n      \"begin\": \"^[^\\\\S\\\\n]*(\\\\$?[a-zA-Z_-][a-zA-Z0-9_-]*)[^\\\\S\\\\n]*(\\\\=|\\\\?\\\\=|\\\\:\\\\=)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"variable.stylus\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.stylus\"\n        }\n      },\n      \"end\": \"(\\\\n)|(;)|(?=\\\\})\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#property_values\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"begin\": \"((?<=^)[^\\\\S\\\\n]+)|((?<=;)[^\\\\S\\\\n]*)|((?<=\\\\{)[^\\\\S\\\\n]*)\",\n      \"end\": \"(?=\\\\n)|(;)|(?=\\\\})|(\\\\n)\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.property-list.css\",\n      \"patterns\": [\n        {\n          \"match\": \"(?x) (?<![\\\\w-])\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\",\n          \"name\": \"variable.css\"\n        },\n        {\n          \"include\": \"#language_keywords\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"match\": \"(?:(?<=^)[^\\\\S\\\\n]+(\\\\n))\"\n        },\n        {\n          \"match\": \"\\\\G\\\\s*(counter-reset|counter-increment)(?:(:)|[^\\\\S\\\\n])[^\\\\S\\\\n]*([a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.property-name.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            },\n            \"3\": {\n              \"name\": \"variable.section.css\"\n            }\n          },\n          \"name\": \"meta.property.counter.css\"\n        },\n        {\n          \"begin\": \"\\\\G\\\\s*(filter)(?:(:)|[^\\\\S\\\\n])[^\\\\S\\\\n]*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.type.property-name.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.css\"\n            }\n          },\n          \"end\": \"(?=\\\\n|;|\\\\}|$)\",\n          \"name\": \"meta.property.filter.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#function\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#property\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"property\": {\n      \"begin\": \"(?x:\\\\G\\\\s*(?:\\n  (-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)|\\n  (writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)|\\n  ([a-zA-Z_-][a-zA-Z0-9_-]*)\\n)(?!([^\\\\S\\\\n]*&)|([^\\\\S\\\\n]*\\\\{))(?=:|([^\\\\S\\\\n]+[^\\\\s])))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.type.property-name.css\"\n        },\n        \"2\": {\n          \"name\": \"support.type.property-name.svg.css\"\n        },\n        \"3\": {\n          \"name\": \"support.function.mixin.stylus\"\n        }\n      },\n      \"end\": \"(;)|(?=\\\\n|\\\\}|$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#property_value\"\n        }\n      ]\n    },\n    \"property_value\": {\n      \"begin\": \"\\\\G(?:(:)|(\\\\s))(\\\\s*)(?!&)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.css\"\n        }\n      },\n      \"end\": \"(?=\\\\n|;|\\\\})\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.terminator.rule.css\"\n        }\n      },\n      \"name\": \"meta.property-value.css\",\n      \"patterns\": [\n        {\n          \"include\": \"#property_values\"\n        },\n        {\n          \"match\": \"[^\\\\n]+?\"\n        }\n      ]\n    },\n    \"property_values\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#language_keywords\"\n        },\n        {\n          \"include\": \"#language_constants\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.svg.css\"\n        },\n        {\n          \"include\": \"#font_name\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#color\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\!\\\\s*important\",\n          \"name\": \"keyword.other.important.css\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#stylus_keywords\"\n        },\n        {\n          \"include\": \"#property_variable\"\n        }\n      ]\n    },\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.unit.css\"\n            }\n          },\n          \"match\": \"(?x) (?<!\\\\w|-)(?:(?:-|\\\\+)?(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+)) ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\\\b|%)?\",\n          \"name\": \"constant.numeric.css\"\n        }\n      ]\n    },\n    \"color\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(rgb|rgba|hsl|hsla)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.color.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"name\": \"meta.function.color.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.css\"\n            }\n          },\n          \"match\": \"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\\\b\",\n          \"name\": \"constant.other.color.rgb-value.css\"\n        },\n        {\n          \"comment\": \"http://www.w3.org/TR/CSS21/syndata.html#value-def-color\",\n          \"match\": \"\\\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\\\b\",\n          \"name\": \"support.constant.color.w3c-standard-color-name.css\"\n        },\n        {\n          \"comment\": \"http://www.w3.org/TR/css3-color/#svg-color\",\n          \"match\": \"\\\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\\\b\",\n          \"name\": \"support.constant.color.w3c-extended-color-name.css\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.double.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([a-fA-F0-9]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.css\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.css\"\n            }\n          },\n          \"name\": \"string.quoted.single.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([a-fA-F0-9]{1,6}|.)\",\n              \"name\": \"constant.character.escape.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"at_rule\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\s*((@)(import|require))\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.import.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.import.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*((@)(extend[s]?)\\\\b)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.extend.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.rule.css\"\n            }\n          },\n          \"name\": \"meta.at-rule.extend.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#selector\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*((@)font-face)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.fontface.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.fontface.stylus\"\n        },\n        {\n          \"match\": \"^\\\\s*((@)css)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.css.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.css.stylus\"\n        },\n        {\n          \"begin\": \"\\\\s*((@)charset)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.charset.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=;|$|\\\\n))\",\n          \"name\": \"meta.at-rule.charset.stylus\",\n          \"patterns\": [\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\s*((@)keyframes)\\\\b\\\\s+([a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.keyframes.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.keyframe.stylus\"\n            }\n          },\n          \"end\": \"\\\\s*((?=\\\\{|$|\\\\n))\",\n          \"name\": \"meta.at-rule.keyframes.stylus\"\n        },\n        {\n          \"begin\": \"(?=(\\\\b(\\\\d+%|from\\\\b|to\\\\b)))\",\n          \"end\": \"(?=(\\\\{|\\\\n))\",\n          \"name\": \"meta.at-rule.keyframes.stylus\",\n          \"patterns\": [\n            {\n              \"match\": \"(\\\\b(\\\\d+%|from\\\\b|to\\\\b))\",\n              \"name\": \"entity.other.attribute-name.stylus\"\n            }\n          ]\n        },\n        {\n          \"match\": \"^\\\\s*((@)media)\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.at-rule.media.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.stylus\"\n            }\n          },\n          \"name\": \"meta.at-rule.media.stylus\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.type.property-name.media-feature.media.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.media-type.media.css\"\n        },\n        {\n          \"match\": \"(?:(?=\\\\w)(?<![\\\\w-]))(portrait|landscape)(?:(?<=\\\\w)(?![\\\\w-]))\",\n          \"name\": \"support.constant.property-value.media-property.media.css\"\n        }\n      ]\n    },\n    \"operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"((?:\\\\?|:|!|~|\\\\+|(\\\\s-\\\\s)|(?:\\\\*)?\\\\*|\\\\/|%|(\\\\.)?\\\\.\\\\.|<|>|(?:=|:|\\\\?|\\\\+|-|\\\\*|\\\\/|%|<|>)?=|!=)|\\\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\\\b)\",\n          \"name\": \"keyword.operator.stylus\"\n        },\n        {\n          \"include\": \"#char_escape\"\n        }\n      ]\n    },\n    \"font_name\": {\n      \"match\": \"(\\\\b(?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif)\\\\b)\",\n      \"name\": \"support.constant.font-name.css\"\n    },\n    \"variable\": {\n      \"match\": \"(\\\\$[a-zA-Z_-][a-zA-Z0-9_-]*)\",\n      \"name\": \"variable.stylus\"\n    },\n    \"property_variable\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"match\": \"(?<!^)(\\\\@[a-zA-Z_-][a-zA-Z0-9_-]*)\",\n          \"name\": \"variable.property.stylus\"\n        }\n      ]\n    },\n    \"function\": {\n      \"begin\": \"(?=[a-zA-Z_-][a-zA-Z0-9_-]*\\\\()\",\n      \"end\": \"(\\\\))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.section.function.css\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(format|url|local)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.css\",\n          \"patterns\": [\n            {\n              \"match\": \"(?<=\\\\()[^\\\\)\\\\s]*(?=\\\\))\",\n              \"name\": \"string.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#operator\"\n            },\n            {\n              \"match\": \"\\\\s*\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(counter)(\\\\()([a-zA-Z_-][a-zA-Z0-9_-]*)(?=\\\\))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.counter.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            },\n            \"3\": {\n              \"name\": \"variable.section.css\"\n            }\n          },\n          \"name\": \"meta.function.misc.counter.css\"\n        },\n        {\n          \"begin\": \"(counters)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.counters.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.counters.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G[a-zA-Z_-][a-zA-Z0-9_-]*\",\n              \"name\": \"variable.section.css\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(attr)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.attr.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.attr.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G[a-zA-Z_-][a-zA-Z0-9_-]*\",\n              \"name\": \"entity.other.attribute-name.attribute.css\"\n            },\n            {\n              \"match\": \"(?<=[a-zA-Z0-9_-])\\\\s*\\\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\\\b\",\n              \"name\": \"support.type.attr.css\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#string\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(calc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.misc.calc.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.misc.calc.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(cubic-bezier)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing.cubic-bezier.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.timing.cubic-bezier.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(steps)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.timing.steps.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.timing.steps.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"match\": \"\\\\b(start|end)\\\\b\",\n              \"name\": \"support.constant.timing.steps.direction.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.gradient.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.gradient.css\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#color\"\n            },\n            {\n              \"match\": \"\\\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\\\b\",\n              \"name\": \"support.constant.gradient.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.filter.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.filter.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(drop-shadow)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.filter.drop-shadow.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.filter.drop-shadow.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#color\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.transform.css\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.transform.css\",\n          \"patterns\": [\n            {\n              \"include\": \"#numeric\"\n            },\n            {\n              \"include\": \"#property_variable\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(url|local|format|counter|counters|attr|calc)(?=\\\\()\",\n          \"name\": \"support.function.misc.css\"\n        },\n        {\n          \"match\": \"(cubic-bezier|steps)(?=\\\\()\",\n          \"name\": \"support.function.timing.css\"\n        },\n        {\n          \"match\": \"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(?=\\\\()\",\n          \"name\": \"support.function.gradient.css\"\n        },\n        {\n          \"match\": \"(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\\\()\",\n          \"name\": \"support.function.filter.css\"\n        },\n        {\n          \"match\": \"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(?=\\\\()\",\n          \"name\": \"support.function.transform.css\"\n        },\n        {\n          \"begin\": \"([a-zA-Z_-][a-zA-Z0-9_-]*)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.stylus\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.function.css\"\n            }\n          },\n          \"end\": \"(?=\\\\))\",\n          \"name\": \"meta.function.stylus\",\n          \"patterns\": [\n            {\n              \"name\": \"variable.argument.stylus\",\n              \"match\": \"(?x)\\n--\\n(?:[-a-zA-Z_]    | [^\\\\x00-\\\\x7F])     # First letter\\n(?:[-a-zA-Z0-9_] | [^\\\\x00-\\\\x7F]      # Remainder of identifier\\n  |\\\\\\\\(?:[0-9a-fA-F]{1,6}|.)\\n)*\"\n            },\n            {\n              \"match\": \"\\\\s*(,)\\\\s*\",\n              \"name\": \"punctuation.separator.parameter.css\"\n            },\n            {\n              \"include\": \"#interpolation\"\n            },\n            {\n              \"include\": \"#property_values\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\(\",\n          \"name\": \"punctuation.section.function.css\"\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"name\": \"meta.interpolation.stylus\",\n      \"begin\": \"(?:(\\\\{)[^\\\\S\\\\n]*)(?=[^;=]*[^\\\\S\\\\n]*\\\\})\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.curly\"\n        }\n      },\n      \"end\": \"(?:[^\\\\S\\\\n]*(\\\\}))|\\\\n|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.curly\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#operator\"\n        }\n      ]\n    },\n    \"char_escape\": {\n      \"name\": \"constant.character.escape.stylus\",\n      \"match\": \"\\\\\\\\(.)\"\n    },\n    \"language_constants\": {\n      \"match\": \"\\\\b(true|false|null)\\\\b\",\n      \"name\": \"constant.language.stylus\"\n    },\n    \"language_keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\b|\\\\s)(return|else|for|unless|if|else)\\\\b\",\n          \"name\": \"keyword.control.stylus\"\n        },\n        {\n          \"match\": \"(\\\\b|\\\\s)(!important|in|is defined|is a)\\\\b\",\n          \"name\": \"keyword.other.stylus\"\n        },\n        {\n          \"match\": \"\\\\barguments\\\\b\",\n          \"name\": \"variable.language.stylus\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/svelte.tmLanguage.json",
    "content": "{\n  \"name\": \"svelte\",\n  \"scopeName\": \"source.svelte\",\n  \"fileTypes\": [\"svelte\"],\n  \"uuid\": \"7582b62f-51d9-4a84-8c8d-fc189530faf6\",\n  \"injections\": {\n    \"L:(meta.script.svelte | meta.style.svelte) (meta.lang.js | meta.lang.javascript) - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.coffee\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.script.svelte - meta.lang - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.js\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.stylus - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.stylus\",\n          \"patterns\": [\n            {\n              \"include\": \"source.stylus\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.sass - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.sass\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sass\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.css - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.scss - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.css.scss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.less - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.css.less\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte meta.lang.postcss - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.css.postcss\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.postcss\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.style.svelte - meta.lang - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"source.css\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.template.svelte meta.lang.pug - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)(?!</)\",\n          \"end\": \"(?=</)\",\n          \"name\": \"meta.embedded.block.svelte\",\n          \"contentName\": \"text.pug\",\n          \"patterns\": [\n            {\n              \"include\": \"text.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:meta.template.svelte - meta.lang - (meta source)\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=>)\\\\s\",\n          \"end\": \"(?=</template)\",\n          \"patterns\": [\n            {\n              \"include\": \"#scope\"\n            }\n          ]\n        }\n      ]\n    },\n    \"L:(source.ts, source.js, source.coffee)\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])\\\\$(?=[_[:alpha:]][_$[:alnum:]]*)\",\n          \"name\": \"punctuation.definition.variable.svelte\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(\\\\$\\\\$)(?=props|restProps|slots)\",\n          \"name\": \"punctuation.definition.variable.svelte\"\n        }\n      ]\n    }\n  },\n  \"patterns\": [\n    {\n      \"include\": \"#scope\"\n    }\n  ],\n  \"repository\": {\n    \"scope\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#special-tags\"\n        },\n        {\n          \"include\": \"#tags\"\n        },\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"begin\": \"(?<=>|})\",\n          \"end\": \"(?=<|{)\",\n          \"name\": \"text.svelte\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"begin\": \"<!--\",\n      \"end\": \"-->\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.svelte\"\n        }\n      },\n      \"name\": \"comment.block.svelte\",\n      \"patterns\": [\n        {\n          \"begin\": \"(@)(component)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.keyword.svelte\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.component.svelte keyword.declaration.class.component.svelte\"\n            }\n          },\n          \"end\": \"(?=-->)\",\n          \"contentName\": \"comment.block.documentation.svelte\",\n          \"patterns\": [\n            {\n              \"match\": \".*?(?=-->)\",\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"include\": \"text.html.markdown\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\G-?>|<!--(?!>)|<!-(?=-->)|--!>\",\n          \"name\": \"invalid.illegal.characters-not-allowed-here.svelte\"\n        }\n      ]\n    },\n    \"destructuring\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?={)\",\n          \"end\": \"(?<=})\",\n          \"name\": \"meta.embedded.expression.svelte source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts#object-binding-pattern\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?<=\\\\])\",\n          \"name\": \"meta.embedded.expression.svelte source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts#array-binding-pattern\"\n            }\n          ]\n        }\n      ]\n    },\n    \"interpolation\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\{\",\n          \"end\": \"\\\\}\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.begin.svelte\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.end.svelte\"\n            }\n          },\n          \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*(?={)\",\n              \"end\": \"(?<=})\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts#object-literal\"\n                }\n              ]\n            },\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    \"special-tags\": {\n      \"patterns\": [\n        {\n          \"include\": \"#special-tags-void\"\n        },\n        {\n          \"include\": \"#special-tags-block-begin\"\n        },\n        {\n          \"include\": \"#special-tags-block-end\"\n        }\n      ]\n    },\n    \"special-tags-keywords\": {\n      \"match\": \"([#@/:])(else\\\\s+if|[a-z]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.svelte\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"match\": \"if|else\\\\s+if|else\",\n              \"name\": \"keyword.control.conditional.svelte\"\n            },\n            {\n              \"match\": \"each|key\",\n              \"name\": \"keyword.control.svelte\"\n            },\n            {\n              \"match\": \"await|then|catch\",\n              \"name\": \"keyword.control.flow.svelte\"\n            },\n            {\n              \"match\": \"html\",\n              \"name\": \"keyword.other.svelte\"\n            },\n            {\n              \"match\": \"debug\",\n              \"name\": \"keyword.other.debugger.svelte\"\n            },\n            {\n              \"match\": \"const\",\n              \"name\": \"storage.type.svelte\"\n            }\n          ]\n        }\n      }\n    },\n    \"special-tags-modes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=(if|key|then|catch|html).*?)\\\\G\",\n          \"end\": \"(?=})\",\n          \"name\": \"meta.embedded.expression.svelte source.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=const.*?)\\\\G\",\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*([_$[:alpha:]][_$[:alnum:]]+)\\\\s*\",\n              \"end\": \"(?=\\\\=)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"variable.other.constant.svelte\"\n                }\n              }\n            },\n            {\n              \"begin\": \"(?=\\\\=)\",\n              \"end\": \"(?=})\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts#variable-initializer\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=each.*?)\\\\G\",\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*?(?=\\\\S)\",\n              \"end\": \"(?=(?:^\\\\s*|\\\\s+)(as))\",\n              \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(as)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.as.svelte\"\n                }\n              },\n              \"end\": \"(?=})\",\n              \"patterns\": [\n                {\n                  \"include\": \"#destructuring\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"end\": \"\\\\)|(?=})\",\n                  \"captures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.svelte\"\n                    }\n                  },\n                  \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.ts\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"(\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*)\",\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"meta.embedded.expression.svelte source.ts\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"source.ts\"\n                        }\n                      ]\n                    }\n                  }\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.svelte\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=await.*?)\\\\G\",\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G\\\\s*?(?=\\\\S)\",\n              \"end\": \"\\\\s+(then)|(?=})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.flow.svelte\"\n                }\n              },\n              \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=then\\\\b)\",\n              \"end\": \"(?=})\",\n              \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.ts\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=debug.*?)\\\\G\",\n          \"end\": \"(?=})\",\n          \"patterns\": [\n            {\n              \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"meta.embedded.expression.svelte source.ts\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"source.ts\"\n                    }\n                  ]\n                }\n              }\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.svelte\"\n            }\n          ]\n        }\n      ]\n    },\n    \"special-tags-void\": {\n      \"begin\": \"({)\\\\s*((?:[@:])(else\\\\s+if|[a-z]*))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.begin.svelte\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#special-tags-keywords\"\n            }\n          ]\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.end.svelte\"\n        }\n      },\n      \"name\": \"meta.special.$3.svelte\",\n      \"patterns\": [\n        {\n          \"include\": \"#special-tags-modes\"\n        }\n      ]\n    },\n    \"special-tags-block-begin\": {\n      \"begin\": \"({)\\\\s*(#([a-z]*))\",\n      \"end\": \"(})\",\n      \"name\": \"meta.special.$3.svelte meta.special.start.svelte\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.begin.svelte\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#special-tags-keywords\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.end.svelte\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#special-tags-modes\"\n        }\n      ]\n    },\n    \"special-tags-block-end\": {\n      \"begin\": \"({)\\\\s*(/([a-z]*))\",\n      \"end\": \"(})\",\n      \"name\": \"meta.special.$3.svelte meta.special.end.svelte\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.begin.svelte\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#special-tags-keywords\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.end.svelte\"\n        }\n      }\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"include\": \"#attributes-directives\"\n        },\n        {\n          \"include\": \"#attributes-keyvalue\"\n        },\n        {\n          \"include\": \"#attributes-interpolated\"\n        }\n      ]\n    },\n    \"attributes-interpolated\": {\n      \"begin\": \"(?<!:|=)\\\\s*({)\",\n      \"end\": \"(\\\\})\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.svelte\"\n        }\n      },\n      \"contentName\": \"meta.embedded.expression.svelte source.ts\",\n      \"patterns\": [\n        {\n          \"include\": \"source.ts\"\n        }\n      ]\n    },\n    \"attributes-keyvalue\": {\n      \"begin\": \"((?:--)?[_$[:alpha:]][_\\\\-$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"match\": \"--.*\",\n              \"name\": \"support.type.property-name.svelte\"\n            },\n            {\n              \"match\": \".*\",\n              \"name\": \"entity.other.attribute-name.svelte\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n      \"name\": \"meta.attribute.$1.svelte\",\n      \"patterns\": [\n        {\n          \"begin\": \"=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.svelte\"\n            }\n          },\n          \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#attributes-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes-value\": {\n      \"patterns\": [\n        {\n          \"include\": \"#interpolation\"\n        },\n        {\n          \"match\": \"(?:(['\\\"])([0-9._]+[\\\\w%]{,4})(\\\\1))|(?:([0-9._]+[\\\\w%]{,4})(?=\\\\s|/?>))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.svelte\"\n            },\n            \"2\": {\n              \"name\": \"constant.numeric.decimal.svelte\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.string.end.svelte\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.decimal.svelte\"\n            }\n          }\n        },\n        {\n          \"match\": \"([^\\\\s\\\"'=<>`/]|/(?!>))+\",\n          \"name\": \"string.unquoted.svelte\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(['\\\"])\",\n          \"end\": \"\\\\1\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.svelte\"\n            }\n          },\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.svelte\"\n            }\n          },\n          \"name\": \"string.quoted.svelte\",\n          \"patterns\": [\n            {\n              \"include\": \"#interpolation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attributes-directives-keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"on|use|bind\",\n          \"name\": \"keyword.control.svelte\"\n        },\n        {\n          \"match\": \"transition|in|out|animate\",\n          \"name\": \"keyword.other.animation.svelte\"\n        },\n        {\n          \"match\": \"let\",\n          \"name\": \"storage.type.svelte\"\n        },\n        {\n          \"match\": \"class|style\",\n          \"name\": \"entity.other.attribute-name.svelte\"\n        }\n      ]\n    },\n    \"attributes-directives-types\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=(on):).*$\",\n          \"name\": \"entity.name.type.svelte\"\n        },\n        {\n          \"match\": \"(?<=(bind):).*$\",\n          \"name\": \"variable.parameter.svelte\"\n        },\n        {\n          \"match\": \"(?<=(use|transition|in|out|animate):).*$\",\n          \"name\": \"variable.function.svelte\"\n        },\n        {\n          \"match\": \"(?<=(let|class|style):).*$\",\n          \"name\": \"variable.parameter.svelte\"\n        }\n      ]\n    },\n    \"attributes-directives-types-assigned\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<=(bind):)this$\",\n          \"name\": \"variable.language.svelte\"\n        },\n        {\n          \"match\": \"(?<=(bind):).*$\",\n          \"name\": \"entity.name.type.svelte\"\n        },\n        {\n          \"match\": \"(?<=(class):).*$\",\n          \"name\": \"entity.other.attribute-name.class.svelte\"\n        },\n        {\n          \"match\": \"(?<=(style):).*$\",\n          \"name\": \"support.type.property-name.svelte\"\n        },\n        {\n          \"include\": \"#attributes-directives-types\"\n        }\n      ]\n    },\n    \"attributes-directives\": {\n      \"begin\": \"(?<!<)(on|use|bind|transition|in|out|animate|let|class|style)(:)(?:((?:--)?[_$[:alpha:]][_\\\\-$[:alnum:]]*(?=\\\\s*=))|((?:--)?[_$[:alpha:]][_\\\\-$[:alnum:]]*))((\\\\|\\\\w+)*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes-directives-keywords\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.svelte\"\n        },\n        \"3\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes-directives-types-assigned\"\n            }\n          ]\n        },\n        \"4\": {\n          \"patterns\": [\n            {\n              \"include\": \"#attributes-directives-types\"\n            }\n          ]\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"match\": \"\\\\w+\",\n              \"name\": \"support.function.svelte\"\n            },\n            {\n              \"match\": \"\\\\|\",\n              \"name\": \"punctuation.separator.svelte\"\n            }\n          ]\n        }\n      },\n      \"end\": \"(?=\\\\s*+[^=\\\\s])\",\n      \"name\": \"meta.directive.$1.svelte\",\n      \"patterns\": [\n        {\n          \"begin\": \"=\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.svelte\"\n            }\n          },\n          \"end\": \"(?<=[^\\\\s=])(?!\\\\s*=)|(?=/?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#attributes-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tags\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tags-lang\"\n        },\n        {\n          \"include\": \"#tags-void\"\n        },\n        {\n          \"include\": \"#tags-general-end\"\n        },\n        {\n          \"include\": \"#tags-general-start\"\n        }\n      ]\n    },\n    \"tags-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(svelte)(:)([a-z][\\\\w0-9:-]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.svelte\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.keyword.svelte\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.svelte\"\n            }\n          }\n        },\n        {\n          \"match\": \"slot\",\n          \"name\": \"keyword.control.svelte\"\n        },\n        {\n          \"match\": \"[A-Z][a-zA-Z0-9_]*\",\n          \"name\": \"support.class.component.svelte\"\n        },\n        {\n          \"match\": \"[a-z][\\\\w0-9:]*-[\\\\w0-9:-]*\",\n          \"name\": \"meta.tag.custom.svelte entity.name.tag.svelte\"\n        },\n        {\n          \"match\": \"[a-z][\\\\w0-9:-]*\",\n          \"name\": \"entity.name.tag.svelte\"\n        }\n      ]\n    },\n    \"tags-start-attributes\": {\n      \"begin\": \"\\\\G\",\n      \"end\": \"(?=/?>)\",\n      \"name\": \"meta.tag.start.svelte\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes\"\n        }\n      ]\n    },\n    \"tags-lang-start-attributes\": {\n      \"begin\": \"\\\\G\",\n      \"end\": \"(?=/>)|>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.end.svelte\"\n        }\n      },\n      \"name\": \"meta.tag.start.svelte\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes\"\n        }\n      ]\n    },\n    \"tags-start-node\": {\n      \"match\": \"(<)([^/\\\\s>/]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.svelte\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tags-name\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.tag.start.svelte\"\n    },\n    \"tags-end-node\": {\n      \"match\": \"(</)(.*?)\\\\s*(>)|(/>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.tag.end.svelte punctuation.definition.tag.begin.svelte\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.end.svelte\",\n          \"patterns\": [\n            {\n              \"include\": \"#tags-name\"\n            }\n          ]\n        },\n        \"3\": {\n          \"name\": \"meta.tag.end.svelte punctuation.definition.tag.end.svelte\"\n        },\n        \"4\": {\n          \"name\": \"meta.tag.start.svelte punctuation.definition.tag.end.svelte\"\n        }\n      }\n    },\n    \"tags-lang\": {\n      \"begin\": \"<(script|style|template)\",\n      \"end\": \"</\\\\1\\\\s*>|/>\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tags-start-node\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tags-end-node\"\n            }\n          ]\n        }\n      },\n      \"name\": \"meta.$1.svelte\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?=\\\\s*[^>]*?(type|lang)\\\\s*=\\\\s*(['\\\"]|)(?:text/)?(\\\\w+)\\\\2)\",\n          \"end\": \"(?=</|/>)\",\n          \"name\": \"meta.lang.$3.svelte\",\n          \"patterns\": [\n            {\n              \"include\": \"#tags-lang-start-attributes\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#tags-lang-start-attributes\"\n        }\n      ]\n    },\n    \"tags-void\": {\n      \"begin\": \"(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\\\s|/?>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.svelte\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.svelte\"\n        }\n      },\n      \"end\": \"/?>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.begin.svelte\"\n        }\n      },\n      \"name\": \"meta.tag.void.svelte\",\n      \"patterns\": [\n        {\n          \"include\": \"#attributes\"\n        }\n      ]\n    },\n    \"tags-general-start\": {\n      \"begin\": \"(<)([^/\\\\s>/]*)\",\n      \"end\": \"(/?>)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"patterns\": [\n            {\n              \"include\": \"#tags-start-node\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.tag.start.svelte punctuation.definition.tag.end.svelte\"\n        }\n      },\n      \"name\": \"meta.scope.tag.$2.svelte\",\n      \"patterns\": [\n        {\n          \"include\": \"#tags-start-attributes\"\n        }\n      ]\n    },\n    \"tags-general-end\": {\n      \"begin\": \"(</)([^/\\\\s>]*)\",\n      \"end\": \"(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.tag.end.svelte punctuation.definition.tag.begin.svelte\"\n        },\n        \"2\": {\n          \"name\": \"meta.tag.end.svelte\",\n          \"patterns\": [\n            {\n              \"include\": \"#tags-name\"\n            }\n          ]\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.tag.end.svelte punctuation.definition.tag.end.svelte\"\n        }\n      },\n      \"name\": \"meta.scope.tag.$2.svelte\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/swift.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/swift.tmbundle/blob/master/Syntaxes/Swift.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/swift.tmbundle/commit/7a35637eb70aef3114b091c4ff6fbf6a2faa881b\",\n  \"name\": \"swift\",\n  \"scopeName\": \"source.swift\",\n  \"comment\": \"See swift.tmbundle/grammar-test.swift for test cases.\",\n  \"patterns\": [\n    {\n      \"include\": \"#root\"\n    }\n  ],\n  \"repository\": {\n    \"async-throws\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.await-must-precede-throws.swift\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.exception.swift\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.async.swift\"\n        }\n      },\n      \"match\": \"\\\\b(?:(throws\\\\s+async|rethrows\\\\s+async)|(throws|rethrows)|(async))\\\\b\"\n    },\n    \"attributes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((@)available)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.attribute.available.swift\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.os.swift\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.swift\"\n                }\n              },\n              \"match\": \"\\\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\\\b(?:\\\\s+([0-9]+(?:\\\\.[0-9]+)*\\\\b))?\"\n            },\n            {\n              \"begin\": \"\\\\b(introduced|deprecated|obsoleted)\\\\s*(:)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.key-value.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b[0-9]+(?:\\\\.[0-9]+)*\\\\b\",\n                  \"name\": \"constant.numeric.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(message|renamed)\\\\s*(:)\\\\s*(?=\\\")\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.key-value.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#literals\"\n                }\n              ]\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.all.swift\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.swift\"\n                },\n                \"3\": {\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              },\n              \"match\": \"(?:(\\\\*)|\\\\b(deprecated|unavailable|noasync)\\\\b)\\\\s*(.*?)(?=[,)])\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)objc)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.attribute.objc.swift\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"invalid.illegal.missing-colon-after-selector-piece.swift\"\n                }\n              },\n              \"match\": \"\\\\w*(?::(?:\\\\w*:)*(\\\\w*))?\",\n              \"name\": \"entity.name.function.swift\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(@)(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.modifier.attribute.swift\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.attribute.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"comment\": \"any other attribute\",\n          \"end\": \"(?!\\\\G\\\\()\",\n          \"name\": \"meta.attribute.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.arguments.attribute.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    \"builtin-functions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses\",\n          \"match\": \"(?<=\\\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\\\s*[({])\\\\b\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Member functions in the standard library in Swift 3\",\n          \"match\": \"(?<=\\\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Member functions in the standard library in Swift 2 only\",\n          \"match\": \"(?<=\\\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        }\n      ]\n    },\n    \"builtin-global-functions\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(type)(\\\\()\\\\s*(of)(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.dynamic-type.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.parameter.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.argument-label.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Global functions available in Swift 3 which may be used with trailing closures and no parentheses\",\n          \"match\": \"\\\\b(?:anyGenerator|autoreleasepool)(?=\\\\s*[({])\\\\b\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Global functions available in Swift 3\",\n          \"match\": \"\\\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        },\n        {\n          \"comment\": \"Global functions available in Swift 2 only\",\n          \"match\": \"\\\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\\\s*\\\\()\",\n          \"name\": \"support.function.swift\"\n        }\n      ]\n    },\n    \"builtin-properties\": {\n      \"patterns\": [\n        {\n          \"comment\": \"The simpler (?<=\\\\bProcess\\\\.|\\\\bCommandLine\\\\.) breaks VS Code / Atom, see https://github.com/textmate/swift.tmbundle/issues/29\",\n          \"match\": \"(?<=^Process\\\\.|\\\\WProcess\\\\.|^CommandLine\\\\.|\\\\WCommandLine\\\\.)(arguments|argc|unsafeArgv)\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Properties in the standard library in Swift 3\",\n          \"match\": \"(?<=\\\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Properties in the standard library in Swift 2 only\",\n          \"match\": \"(?<=\\\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"comment\": \"Enum cases in the standard library - note that there is some overlap between these and the properties\",\n          \"match\": \"(?<=\\\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\\\b\",\n          \"name\": \"support.variable.swift\"\n        }\n      ]\n    },\n    \"builtin-types\": {\n      \"comment\": \"Types provided in the standard library\",\n      \"patterns\": [\n        {\n          \"include\": \"#builtin-class-type\"\n        },\n        {\n          \"include\": \"#builtin-enum-type\"\n        },\n        {\n          \"include\": \"#builtin-protocol-type\"\n        },\n        {\n          \"include\": \"#builtin-struct-type\"\n        },\n        {\n          \"include\": \"#builtin-typealias\"\n        },\n        {\n          \"match\": \"\\\\bAny\\\\b\",\n          \"name\": \"support.type.any.swift\"\n        }\n      ],\n      \"repository\": {\n        \"builtin-class-type\": {\n          \"comment\": \"Builtin class types\",\n          \"match\": \"\\\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\\\b\",\n          \"name\": \"support.class.swift\"\n        },\n        \"builtin-enum-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"CommandLine is an enum, but it acts like a constant\",\n              \"match\": \"\\\\b(?:CommandLine|Process(?=\\\\.))\\\\b\",\n              \"name\": \"support.constant.swift\"\n            },\n            {\n              \"comment\": \"The return type of a function that never returns\",\n              \"match\": \"\\\\bNever\\\\b\",\n              \"name\": \"support.constant.never.swift\"\n            },\n            {\n              \"comment\": \"Enum types in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Enum types in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:MirrorDisposition|QuickLookObject)\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-protocol-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Protocols in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Protocols in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-struct-type\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Structs in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Structs in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        },\n        \"builtin-typealias\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Typealiases in the standard library in Swift 3\",\n              \"match\": \"\\\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\\\b\",\n              \"name\": \"support.type.swift\"\n            },\n            {\n              \"comment\": \"Typealiases in the standard library in Swift 2 only\",\n              \"match\": \"\\\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        }\n      }\n    },\n    \"code-block\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.begin.swift\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.scope.end.swift\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.swift\"\n            }\n          },\n          \"match\": \"\\\\A^(#!).*$\\\\n?\",\n          \"name\": \"comment.line.number-sign.swift\"\n        },\n        {\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.documentation.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*:\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.documentation.playground.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.end.swift\"\n            }\n          },\n          \"name\": \"comment.block.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\*/\",\n          \"name\": \"invalid.illegal.unexpected-end-of-block-comment.swift\"\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"///\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.triple-slash.documentation.swift\"\n            },\n            {\n              \"begin\": \"//:\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.documentation.swift\"\n            },\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.swift\"\n                }\n              },\n              \"end\": \"^\",\n              \"name\": \"comment.line.double-slash.swift\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"nested\": {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"patterns\": [\n            {\n              \"include\": \"#nested\"\n            }\n          ]\n        }\n      }\n    },\n    \"compiler-control\": {\n      \"patterns\": [\n        {\n          \"begin\": \"^\\\\s*(#)(if|elseif)\\\\s+(false)\\\\b.*?(?=$|//|/\\\\*)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.preprocessor.conditional.swift\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.boolean.swift\"\n            }\n          },\n          \"contentName\": \"comment.block.preprocessor.swift\",\n          \"end\": \"(?=^\\\\s*(#(elseif|else|endif)\\\\b))\"\n        },\n        {\n          \"begin\": \"^\\\\s*(#)(if|elseif)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            }\n          },\n          \"end\": \"(?=\\\\s*(?://|/\\\\*))|$\",\n          \"name\": \"meta.preprocessor.conditional.swift\",\n          \"patterns\": [\n            {\n              \"match\": \"(&&|\\\\|\\\\|)\",\n              \"name\": \"keyword.operator.logical.swift\"\n            },\n            {\n              \"match\": \"\\\\b(true|false)\\\\b\",\n              \"name\": \"constant.language.boolean.swift\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"support.constant.platform.architecture.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(arch)\\\\s*(\\\\()\\\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\\\w+)\\\\s*(\\\\))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"support.constant.platform.os.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(os)\\\\s*(\\\\()\\\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\\\w+)\\\\s*(\\\\))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                },\n                \"3\": {\n                  \"name\": \"entity.name.type.module.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"match\": \"\\\\b(canImport)\\\\s*(\\\\()([\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*)(\\\\))\"\n            },\n            {\n              \"begin\": \"\\\\b(targetEnvironment)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\))|$\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\b(simulator|UIKitForMac)\\\\b\",\n                  \"name\": \"support.constant.platform.environment.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\b(swift|compiler)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.condition.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\))|$\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"match\": \">=|<\",\n                  \"name\": \"keyword.operator.comparison.swift\"\n                },\n                {\n                  \"match\": \"\\\\b[0-9]+(?:\\\\.[0-9]+)*\\\\b\",\n                  \"name\": \"constant.numeric.swift\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.conditional.swift\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^\\\\s*(#)(else|endif)(.*?)(?=$|//|/\\\\*)\",\n          \"name\": \"meta.preprocessor.conditional.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.preprocessor.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.preprocessor.sourcelocation.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            },\n            \"5\": {\n              \"patterns\": [\n                {\n                  \"begin\": \"(file)\\\\s*(:)\\\\s*(?=\\\")\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"support.variable.parameter.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    }\n                  },\n                  \"end\": \"(?!\\\\G)\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#literals\"\n                    }\n                  ]\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"support.variable.parameter.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    },\n                    \"3\": {\n                      \"name\": \"constant.numeric.integer.swift\"\n                    }\n                  },\n                  \"match\": \"(line)\\\\s*(:)\\\\s*([0-9]+)\"\n                },\n                {\n                  \"match\": \",\",\n                  \"name\": \"punctuation.separator.parameters.swift\"\n                },\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            },\n            \"7\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\S+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"match\": \"^\\\\s*(#)(sourceLocation)((\\\\()([^)]*)(\\\\)))(.*?)(?=$|//|/\\\\*)\",\n          \"name\": \"meta.preprocessor.sourcelocation.swift\"\n        }\n      ]\n    },\n    \"declarations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#function\"\n        },\n        {\n          \"include\": \"#function-initializer\"\n        },\n        {\n          \"include\": \"#typed-variable-declaration\"\n        },\n        {\n          \"include\": \"#import\"\n        },\n        {\n          \"include\": \"#operator\"\n        },\n        {\n          \"include\": \"#precedencegroup\"\n        },\n        {\n          \"include\": \"#protocol\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#extension\"\n        },\n        {\n          \"include\": \"#typealias\"\n        }\n      ],\n      \"repository\": {\n        \"available-types\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#builtin-types\"\n            },\n            {\n              \"include\": \"#attributes\"\n            },\n            {\n              \"match\": \"\\\\basync\\\\b\",\n              \"name\": \"keyword.control.async.swift\"\n            },\n            {\n              \"match\": \"\\\\b(?:throws|rethrows)\\\\b\",\n              \"name\": \"keyword.control.exception.swift\"\n            },\n            {\n              \"match\": \"\\\\bsome\\\\b\",\n              \"name\": \"keyword.operator.type.opaque.swift\"\n            },\n            {\n              \"match\": \"\\\\bany\\\\b\",\n              \"name\": \"keyword.operator.type.existential.swift\"\n            },\n            {\n              \"match\": \"\\\\b(?:inout|isolated)\\\\b\",\n              \"name\": \"storage.modifier.swift\"\n            },\n            {\n              \"match\": \"\\\\bSelf\\\\b\",\n              \"name\": \"variable.language.swift\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.type.function.swift\"\n                }\n              },\n              \"match\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(->)(?![/=\\\\-+!*%<>&|\\\\^~.])\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.type.composition.swift\"\n                }\n              },\n              \"comment\": \"Swift 3: A & B\",\n              \"match\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(&)(?![/=\\\\-+!*%<>&|\\\\^~.])\"\n            },\n            {\n              \"match\": \"[?!]\",\n              \"name\": \"keyword.operator.type.optional.swift\"\n            },\n            {\n              \"match\": \"\\\\.\\\\.\\\\.\",\n              \"name\": \"keyword.operator.function.variadic-parameter.swift\"\n            },\n            {\n              \"comment\": \"Swift 2: protocol<A, B>\",\n              \"match\": \"\\\\bprotocol\\\\b\",\n              \"name\": \"keyword.operator.type.composition.swift\"\n            },\n            {\n              \"match\": \"(?<=\\\\.)(?:Protocol|Type)\\\\b\",\n              \"name\": \"keyword.operator.type.metatype.swift\"\n            },\n            {\n              \"include\": \"#tuple-type\"\n            },\n            {\n              \"include\": \"#collection-type\"\n            },\n            {\n              \"include\": \"#generic-argument-clause\"\n            }\n          ],\n          \"repository\": {\n            \"collection-type\": {\n              \"begin\": \"\\\\[\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.collection-type.begin.swift\"\n                }\n              },\n              \"comment\": \"array and dictionary types [Value] and [Key: Value]\",\n              \"end\": \"\\\\]|(?=[>){}])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.collection-type.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"begin\": \":\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.separator.key-value.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\]|[>){}])\",\n                  \"patterns\": [\n                    {\n                      \"match\": \":\",\n                      \"name\": \"invalid.illegal.extra-colon-in-dictionary-type.swift\"\n                    },\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"tuple-type\": {\n              \"begin\": \"\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.tuple-type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)|(?=[>\\\\]{}])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.section.tuple-type.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                }\n              ]\n            }\n          }\n        },\n        \"extension\": {\n          \"begin\": \"\\\\b(extension)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.$1.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"comment\": \"SE-0143: Conditional Conformances\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t(?:(nonisolated)\\\\s+)?\\n\\t\\t\\t\\t\\t\\t(func)\\n\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t\\t\\t\\t\\t  | (?:\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t(?=\\\\(|<)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.swift\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})|$(?# functions in protocol declarations or generated interfaces have no body)\",\n          \"name\": \"meta.definition.function.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"include\": \"#parameter-clause\"\n            },\n            {\n              \"include\": \"#function-result\"\n            },\n            {\n              \"include\": \"#async-throws\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.function.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-initializer\": {\n          \"begin\": \"(?<!\\\\.)\\\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\\\s*(?=\\\\(|<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"(?<=[?!])[?!]+\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(?<=\\\\})|$\",\n          \"name\": \"meta.definition.function.initializer.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"include\": \"#parameter-clause\"\n            },\n            {\n              \"include\": \"#async-throws\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.section.function.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.function.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-result\": {\n          \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(->)(?![/=\\\\-+!*%<>&|\\\\^~.])\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.function-result.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)(?=\\\\{|\\\\bwhere\\\\b|;)|$\",\n          \"name\": \"meta.function-result.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"generic-argument-clause\": {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-argument-clause.begin.swift\"\n            }\n          },\n          \"end\": \">|(?=[)\\\\]{}])\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-argument-clause.end.swift\"\n            }\n          },\n          \"name\": \"meta.generic-argument-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"generic-parameter-clause\": {\n          \"begin\": \"<\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-parameter-clause.begin.swift\"\n            }\n          },\n          \"end\": \">|(?=[^\\\\w\\\\d:<>\\\\s,=&`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.generic-parameter-clause.end.swift\"\n            }\n          },\n          \"name\": \"meta.generic-parameter-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"comment\": \"Swift 2: constraints inside the generic param list\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.language.generic-parameter.swift\"\n                }\n              },\n              \"match\": \"\\\\b((?!\\\\d)\\\\w[\\\\w\\\\d]*)\\\\b\"\n            },\n            {\n              \"match\": \",\",\n              \"name\": \"punctuation.separator.generic-parameters.swift\"\n            },\n            {\n              \"begin\": \"(:)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.generic-parameter-constraint.swift\"\n                }\n              },\n              \"end\": \"(?=[,>]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"name\": \"meta.generic-parameter-constraint.swift\",\n              \"patterns\": [\n                {\n                  \"begin\": \"\\\\G\",\n                  \"end\": \"(?=[,>]|(?!\\\\G)\\\\bwhere\\\\b)\",\n                  \"name\": \"entity.other.inherited-class.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#type-identifier\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"generic-where-clause\": {\n          \"begin\": \"\\\\b(where)\\\\b\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.generic-constraint-introducer.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=[>{};\\\\n]|//|/\\\\*)\",\n          \"name\": \"meta.generic-where-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#requirement-list\"\n            }\n          ],\n          \"repository\": {\n            \"requirement-list\": {\n              \"begin\": \"\\\\G|,\\\\s*\",\n              \"end\": \"(?=[,>{};\\\\n]|//|/\\\\*)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#constraint\"\n                },\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(==)(?![/=\\\\-+!*%<>&|\\\\^~.])\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.operator.generic-constraint.same-type.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                  \"name\": \"meta.generic-where-clause.same-type-requirement.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?<![/=\\\\-+!*%<>&|\\\\^~.])(:)(?![/=\\\\-+!*%<>&|\\\\^~.])\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"keyword.operator.generic-constraint.conforms-to.swift\"\n                    }\n                  },\n                  \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                  \"name\": \"meta.generic-where-clause.conformance-requirement.swift\",\n                  \"patterns\": [\n                    {\n                      \"begin\": \"\\\\G\\\\s*\",\n                      \"contentName\": \"entity.other.inherited-class.swift\",\n                      \"end\": \"(?=\\\\s*[,>{};\\\\n]|//|/\\\\*)\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#available-types\"\n                        }\n                      ]\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        \"import\": {\n          \"begin\": \"(?<!\\\\.)\\\\b(import)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.swift\"\n            }\n          },\n          \"end\": \"(;)|$\\\\n?|(?=//|/\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.swift\"\n            }\n          },\n          \"name\": \"meta.import.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!;|$|//|/\\\\*)(?:(typealias|struct|class|actor|enum|protocol|var|func)\\\\s+)?\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.swift\"\n                }\n              },\n              \"end\": \"(?=;|$|//|/\\\\*)\",\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    }\n                  },\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\$[0-9]+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\.\",\n                          \"name\": \"invalid.illegal.dot-not-allowed-here.swift\"\n                        }\n                      ]\n                    }\n                  },\n                  \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<=\\\\G|\\\\.)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?=\\\\.|;|$|//|/\\\\*|\\\\s)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\",\n                  \"name\": \"entity.name.type.swift\"\n                },\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.import.swift\"\n                },\n                {\n                  \"begin\": \"(?!\\\\s*(;|$|//|/\\\\*))\",\n                  \"end\": \"(?=\\\\s*(;|$|//|/\\\\*))\",\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              ]\n            }\n          ]\n        },\n        \"inheritance-clause\": {\n          \"begin\": \"(:)(?=\\\\s*\\\\{)|(:)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.empty-inheritance-clause.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.inheritance-clause.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n          \"name\": \"meta.inheritance-clause.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\bclass\\\\b\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"storage.type.class.swift\"\n                }\n              },\n              \"end\": \"(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\\G\",\n              \"end\": \"(?!\\\\G)$|(?=[={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#inherited-type\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"inherited-type\": {\n              \"begin\": \"(?=[`\\\\p{L}_])\",\n              \"end\": \"(?!\\\\G)\",\n              \"name\": \"entity.other.inherited-class.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-identifier\"\n                }\n              ]\n            },\n            \"more-types\": {\n              \"begin\": \",\\\\s*\",\n              \"end\": \"(?!\\\\G)(?!//|/\\\\*)|(?=[,={}]|(?!\\\\G)\\\\bwhere\\\\b)\",\n              \"name\": \"meta.inheritance-list.more-types\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#inherited-type\"\n                },\n                {\n                  \"include\": \"#more-types\"\n                }\n              ]\n            }\n          }\n        },\n        \"operator\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\\\b(prefix|infix|postfix)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t(operator)\\n\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t\\t\\t\\t\\t\\t\\t  | \\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t# Invalid dot\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)*+\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )++ )\\t\\t\\t# Dot operators\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.function.operator.swift\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.operator.swift\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"invalid.illegal.dot-not-allowed-here.swift\"\n                }\n              ]\n            }\n          },\n          \"end\": \"(;)|$\\\\n?|(?=//|/\\\\*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.terminator.statement.swift\"\n            }\n          },\n          \"name\": \"meta.definition.operator.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#swift2\"\n            },\n            {\n              \"include\": \"#swift3\"\n            },\n            {\n              \"match\": \"((?!$|;|//|/\\\\*)\\\\S)+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n            }\n          ],\n          \"repository\": {\n            \"swift2\": {\n              \"begin\": \"\\\\G(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.operator.begin.swift\"\n                }\n              },\n              \"end\": \"(\\\\})\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.operator.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.other.operator.associativity.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(associativity)\\\\s+(left|right)\\\\b\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.numeric.integer.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(precedence)\\\\s+([0-9]+)\\\\b\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(assignment)\\\\b\"\n                }\n              ]\n            },\n            \"swift3\": {\n              \"captures\": {\n                \"2\": {\n                  \"name\": \"entity.other.inherited-class.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#types-precedencegroup\"\n                    }\n                  ]\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"match\": \"\\\\G(:)\\\\s*((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n            }\n          }\n        },\n        \"parameter-clause\": {\n          \"begin\": \"(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.begin.swift\"\n            }\n          },\n          \"end\": \"(\\\\))(?:\\\\s*(async)\\\\b)?\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.parameters.end.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.async.swift\"\n            }\n          },\n          \"name\": \"meta.parameter-clause.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-list\"\n            }\n          ]\n        },\n        \"parameter-list\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"variable.parameter.function.swift\"\n                },\n                \"5\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"6\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"comment\": \"External parameter labels are considered part of the function name\",\n              \"match\": \"((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q1>))\\\\s+((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q2>))(?=\\\\s*:)\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.parameter.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"comment\": \"If no external label is given, the name is both the external label and the internal variable name\",\n              \"match\": \"(((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)))(?=\\\\s*:)\"\n            },\n            {\n              \"begin\": \":\\\\s*(?!\\\\s)\",\n              \"end\": \"(?=[,)])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#available-types\"\n                },\n                {\n                  \"match\": \":\",\n                  \"name\": \"invalid.illegal.extra-colon-in-parameter-list.swift\"\n                },\n                {\n                  \"begin\": \"=\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"keyword.operator.assignment.swift\"\n                    }\n                  },\n                  \"comment\": \"a parameter's default value\",\n                  \"end\": \"(?=[,)])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expressions\"\n                    }\n                  ]\n                }\n              ]\n            }\n          ]\n        },\n        \"precedencegroup\": {\n          \"begin\": \"\\\\b(precedencegroup)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(?=\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.precedencegroup.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.precedencegroup.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"name\": \"meta.definition.precedencegroup.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.precedencegroup.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.precedencegroup.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"entity.other.inherited-class.swift\",\n                      \"patterns\": [\n                        {\n                          \"include\": \"#types-precedencegroup\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.definition.identifier.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(higherThan|lowerThan)\\\\s*:\\\\s*((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"keyword.other.operator.associativity.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(associativity)\\\\b(?:\\\\s*:\\\\s*(right|left|none)\\\\b)?\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"storage.modifier.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"constant.language.boolean.swift\"\n                    }\n                  },\n                  \"match\": \"\\\\b(assignment)\\\\b(?:\\\\s*:\\\\s*(true|false)\\\\b)?\"\n                }\n              ]\n            }\n          ]\n        },\n        \"protocol\": {\n          \"begin\": \"\\\\b(protocol)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.$1.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.protocol.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"comment\": \"SE-0142: Permit where clauses to constrain associated types\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#protocol-method\"\n                },\n                {\n                  \"include\": \"#protocol-initializer\"\n                },\n                {\n                  \"include\": \"#associated-type\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"associated-type\": {\n              \"begin\": \"\\\\b(associatedtype)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.declaration-specifier.swift\"\n                },\n                \"2\": {\n                  \"name\": \"variable.language.associatedtype.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)$|(?=[;}]|$)\",\n              \"name\": \"meta.definition.associatedtype.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#inheritance-clause\"\n                },\n                {\n                  \"comment\": \"SE-0142: Permit where clauses to constrain associated types\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"include\": \"#typealias-assignment\"\n                }\n              ]\n            },\n            \"protocol-initializer\": {\n              \"begin\": \"(?<!\\\\.)\\\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\\\s*(?=\\\\(|<)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.swift\",\n                  \"patterns\": [\n                    {\n                      \"match\": \"(?<=[?!])[?!]+\",\n                      \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                    }\n                  ]\n                }\n              },\n              \"end\": \"$|(?=;|//|/\\\\*|\\\\})\",\n              \"name\": \"meta.definition.function.initializer.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"include\": \"#parameter-clause\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.swift\"\n                    }\n                  },\n                  \"name\": \"invalid.illegal.function-body-not-allowed-in-protocol.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"protocol-method\": {\n              \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\b\\n\\t\\t\\t\\t\\t\\t\\t\\t(func)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\n\\t\\t  \\t\\t\\t\\t\\t\\t  | (?:\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t  | (?<opc>\\t\\t\\t\\t\\t\\t\\t\\t# operator-character\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[\\\\x{0300}-\\\\x{036F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t\\t)*\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t  | ( \\\\. ( \\\\g<oph> | \\\\g<opc> | \\\\. )+ )\\t\\t\\t# Dot operators\\n\\t\\t  \\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t  \\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=\\\\(|<)\\n\\t\\t\\t\\t\\t\\t\\t\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.function.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.function.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"$|(?=;|//|/\\\\*|\\\\})\",\n              \"name\": \"meta.definition.function.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"include\": \"#parameter-clause\"\n                },\n                {\n                  \"include\": \"#function-result\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the parameters and return type\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.function.end.swift\"\n                    }\n                  },\n                  \"name\": \"invalid.illegal.function-body-not-allowed-in-protocol.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            }\n          }\n        },\n        \"type\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(class(?!\\\\s+(?:func|var|let)\\\\b)|struct|actor)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.$1.swift\"\n                },\n                \"2\": {\n                  \"name\": \"entity.name.type.$1.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"end\": \"(?<=\\\\})\",\n              \"name\": \"meta.definition.type.$1.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                },\n                {\n                  \"comment\": \"Swift 3: generic constraints after the generic param list\",\n                  \"include\": \"#generic-where-clause\"\n                },\n                {\n                  \"include\": \"#inheritance-clause\"\n                },\n                {\n                  \"begin\": \"\\\\{\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.type.begin.swift\"\n                    }\n                  },\n                  \"end\": \"\\\\}\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.definition.type.end.swift\"\n                    }\n                  },\n                  \"name\": \"meta.definition.type.body.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-enum\"\n            }\n          ]\n        },\n        \"type-enum\": {\n          \"begin\": \"\\\\b(enum)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.$1.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.$1.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"name\": \"meta.definition.type.$1.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic-parameter-clause\"\n            },\n            {\n              \"comment\": \"Swift 3: generic constraints after the generic param list\",\n              \"include\": \"#generic-where-clause\"\n            },\n            {\n              \"include\": \"#inheritance-clause\"\n            },\n            {\n              \"begin\": \"\\\\{\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.type.end.swift\"\n                }\n              },\n              \"name\": \"meta.definition.type.body.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#enum-case-clause\"\n                },\n                {\n                  \"include\": \"$self\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"associated-values\": {\n              \"begin\": \"\\\\G\\\\(\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.begin.swift\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.parameters.end.swift\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(?:(_)|((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q1>))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t(((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q2>))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"invalid.illegal.distinct-labels-not-allowed.swift\"\n                    },\n                    \"5\": {\n                      \"name\": \"variable.parameter.function.swift\"\n                    },\n                    \"7\": {\n                      \"name\": \"punctuation.separator.argument-label.swift\"\n                    }\n                  },\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*\\\\k<q>))\\\\s*(:)\",\n                  \"beginCaptures\": {\n                    \"1\": {\n                      \"name\": \"entity.name.function.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"variable.parameter.function.swift\"\n                    },\n                    \"4\": {\n                      \"name\": \"punctuation.separator.argument-label.swift\"\n                    }\n                  },\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    }\n                  ]\n                },\n                {\n                  \"begin\": \"(?![,)\\\\]])(?=\\\\S)\",\n                  \"comment\": \"an element without a label (i.e. anything else)\",\n                  \"end\": \"(?=[,)\\\\]])\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"#available-types\"\n                    },\n                    {\n                      \"match\": \":\",\n                      \"name\": \"invalid.illegal.extra-colon-in-parameter-list.swift\"\n                    }\n                  ]\n                }\n              ]\n            },\n            \"enum-case\": {\n              \"begin\": \"(?x)((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"constant.other.swift\"\n                }\n              },\n              \"end\": \"(?<=\\\\))|(?![=(])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#associated-values\"\n                },\n                {\n                  \"include\": \"#raw-value-assignment\"\n                }\n              ]\n            },\n            \"enum-case-clause\": {\n              \"begin\": \"\\\\b(case)\\\\b\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.type.enum.case.swift\"\n                }\n              },\n              \"end\": \"(?=[;}])|(?!\\\\G)(?!//|/\\\\*)(?=[^\\\\s,])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#enum-case\"\n                },\n                {\n                  \"include\": \"#more-cases\"\n                }\n              ]\n            },\n            \"more-cases\": {\n              \"begin\": \",\\\\s*\",\n              \"end\": \"(?!\\\\G)(?!//|/\\\\*)(?=[;}]|[^\\\\s,])\",\n              \"name\": \"meta.enum-case.more-cases\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#enum-case\"\n                },\n                {\n                  \"include\": \"#more-cases\"\n                }\n              ]\n            },\n            \"raw-value-assignment\": {\n              \"begin\": \"(=)\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.operator.assignment.swift\"\n                }\n              },\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#literals\"\n                }\n              ]\n            }\n          }\n        },\n        \"type-identifier\": {\n          \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type-name.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#builtin-types\"\n                }\n              ]\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!<)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=<)\",\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#generic-argument-clause\"\n                }\n              ]\n            }\n          ]\n        },\n        \"typealias\": {\n          \"begin\": \"\\\\b(typealias)\\\\s+((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.typealias.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.identifier.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=;|//|/\\\\*|$)\",\n          \"name\": \"meta.definition.typealias.swift\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?=<)\",\n              \"end\": \"(?!\\\\G)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#generic-parameter-clause\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#typealias-assignment\"\n            }\n          ]\n        },\n        \"typealias-assignment\": {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.swift\"\n            }\n          },\n          \"end\": \"(?!\\\\G)$|(?=;|//|/\\\\*|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"typed-variable-declaration\": {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b(?:(async)\\\\s+)?(let|var)\\\\b\\\\s+\\n\\t\\t\\t\\t\\t\\t(?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>)\\\\s*\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.async.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            }\n          },\n          \"end\": \"(?=$|[={])\",\n          \"patterns\": [\n            {\n              \"include\": \"#available-types\"\n            }\n          ]\n        },\n        \"types-precedencegroup\": {\n          \"patterns\": [\n            {\n              \"comment\": \"Precedence groups in the standard library\",\n              \"match\": \"\\\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\\\b\",\n              \"name\": \"support.type.swift\"\n            }\n          ]\n        }\n      }\n    },\n    \"expressions\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#code-block\"\n        },\n        {\n          \"include\": \"#attributes\"\n        },\n        {\n          \"include\": \"#closure-parameter\"\n        },\n        {\n          \"include\": \"#literals\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#builtin-types\"\n        },\n        {\n          \"include\": \"#builtin-functions\"\n        },\n        {\n          \"include\": \"#builtin-global-functions\"\n        },\n        {\n          \"include\": \"#builtin-properties\"\n        },\n        {\n          \"include\": \"#compound-name\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#function-call-expression\"\n        },\n        {\n          \"include\": \"#subscript-expression\"\n        },\n        {\n          \"include\": \"#parenthesized-expression\"\n        },\n        {\n          \"include\": \"#member-reference\"\n        },\n        {\n          \"include\": \"#availability-condition\"\n        },\n        {\n          \"match\": \"\\\\b_\\\\b\",\n          \"name\": \"support.variable.discard-value.swift\"\n        }\n      ],\n      \"repository\": {\n        \"availability-condition\": {\n          \"begin\": \"\\\\B(#(?:un)?available)(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.availability-condition.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.os.swift\"\n                },\n                \"2\": {\n                  \"name\": \"constant.numeric.swift\"\n                }\n              },\n              \"match\": \"\\\\s*\\\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\\\b(?:\\\\s+([0-9]+(?:\\\\.[0-9]+)*\\\\b))\"\n            },\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"keyword.other.platform.all.swift\"\n                },\n                \"2\": {\n                  \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n                }\n              },\n              \"match\": \"(\\\\*)\\\\s*(.*?)(?=[,)])\"\n            },\n            {\n              \"match\": \"[^\\\\s,)]+\",\n              \"name\": \"invalid.illegal.character-not-allowed-here.swift\"\n            }\n          ]\n        },\n        \"closure-parameter\": {\n          \"match\": \"\\\\$[0-9]+\",\n          \"name\": \"variable.language.closure-parameter.swift\"\n        },\n        \"compound-name\": {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.compound-name.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.entity.swift\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.swift\"\n            },\n            \"4\": {\n              \"patterns\": [\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.entity.swift\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.entity.swift\"\n                    }\n                  },\n                  \"match\": \"(?<q>`?)(?!_:)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>):\",\n                  \"name\": \"entity.name.function.compound-name.swift\"\n                }\n              ]\n            }\n          },\n          \"comment\": \"a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.\",\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t((?<q1>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q1>))       \\t\\t# function name\\n\\t\\t\\t\\t\\t\\t\\\\(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t((?<q2>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q2>)) \\t# argument label\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# colon\\n\\t\\t\\t\\t\\t\\t\\t\\t)+\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\)\\n\\t\\t\\t\\t\\t\"\n        },\n        \"expression-element-list\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(:)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.separator.argument-label.swift\"\n                }\n              },\n              \"comment\": \"an element with a label\",\n              \"end\": \"(?=[,)\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?![,)\\\\]])(?=\\\\S)\",\n              \"comment\": \"an element without a label (i.e. anything else)\",\n              \"end\": \"(?=[,)\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expressions\"\n                }\n              ]\n            }\n          ]\n        },\n        \"function-call-expression\": {\n          \"patterns\": [\n            {\n              \"begin\": \"((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"support.function.any-method.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"comment\": \"foo(args) -- a call whose callee is a highlightable name\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.function-call.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-element-list\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=[`\\\\])}>\\\\p{L}_\\\\p{N}\\\\p{M}])\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.arguments.begin.swift\"\n                }\n              },\n              \"comment\": \"[Int](args) -- a call whose callee is a more complicated expression\",\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.arguments.end.swift\"\n                }\n              },\n              \"name\": \"meta.function-call.swift\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-element-list\"\n                }\n              ]\n            }\n          ]\n        },\n        \"member-reference\": {\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.swift\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.definition.identifier.swift\"\n                }\n              },\n              \"match\": \"(?<=\\\\.)((?<q>`?)[\\\\p{L}_][\\\\p{L}_\\\\p{N}\\\\p{M}]*(\\\\k<q>))\"\n            }\n          ]\n        },\n        \"parenthesized-expression\": {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.tuple.begin.swift\"\n            }\n          },\n          \"comment\": \"correctly matching closure expressions is too hard (depends on trailing \\\"in\\\") so we just tack on some basics to the end of parenthesized-expression\",\n          \"end\": \"(\\\\))\\\\s*((?:\\\\b(?:async|throws|rethrows)\\\\s)*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.tuple.end.swift\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\brethrows\\\\b\",\n                  \"name\": \"invalid.illegal.rethrows-only-allowed-on-function-declarations.swift\"\n                },\n                {\n                  \"include\": \"#async-throws\"\n                }\n              ]\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-element-list\"\n            }\n          ]\n        },\n        \"subscript-expression\": {\n          \"begin\": \"(?<=[`\\\\p{L}_\\\\p{N}\\\\p{M}])\\\\s*(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"name\": \"meta.subscript-expression.swift\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression-element-list\"\n            }\n          ]\n        }\n      }\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\\\b\",\n          \"name\": \"keyword.control.branch.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:continue|break|fallthrough|return)\\\\b\",\n          \"name\": \"keyword.control.transfer.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:while|for|in)\\\\b\",\n          \"name\": \"keyword.control.loop.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.whitespace.trailing.repeat.swift\"\n            }\n          },\n          \"comment\": \"extra scopes for repeat-while snippet\",\n          \"match\": \"(?<!\\\\.)\\\\b(repeat)\\\\b(\\\\s*)\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\bdefer\\\\b\",\n          \"name\": \"keyword.control.defer.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.try-must-precede-await.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.await.swift\"\n            }\n          },\n          \"match\": \"(?<!\\\\.)\\\\b(?:(await\\\\s+try)|(await)\\\\b)\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:catch|throws?|rethrows|try)\\\\b|\\\\btry[?!]\\\\B\",\n          \"name\": \"keyword.control.exception.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.exception.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.whitespace.trailing.do.swift\"\n            }\n          },\n          \"comment\": \"extra scopes for do-catch snippet\",\n          \"match\": \"(?<!\\\\.)\\\\b(do)\\\\b(\\\\s*)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.async.swift\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.swift\"\n            },\n            \"3\": {\n              \"name\": \"keyword.other.declaration-specifier.swift\"\n            }\n          },\n          \"match\": \"(?<!\\\\.)\\\\b(?:(?:(async)|(nonisolated))\\\\s+)?(let|var)\\\\b\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:associatedtype|operator|typealias)\\\\b\",\n          \"name\": \"keyword.other.declaration-specifier.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(class|enum|extension|precedencegroup|protocol|struct|actor)\\\\b\",\n          \"name\": \"storage.type.$1.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\\\b\",\n          \"name\": \"storage.modifier.swift\"\n        },\n        {\n          \"match\": \"\\\\binit[?!]|\\\\binit\\\\b|(?<!\\\\.)\\\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\\\b\",\n          \"name\": \"storage.type.function.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:fileprivate|private|internal|public|open)\\\\b\",\n          \"name\": \"keyword.other.declaration-specifier.accessibility.swift\"\n        },\n        {\n          \"comment\": \"matches weak, unowned, unowned(safe), unowned(unsafe)\",\n          \"match\": \"(?<!\\\\.)\\\\bunowned\\\\((?:safe|unsafe)\\\\)|(?<!\\\\.)\\\\b(?:weak|unowned)\\\\b\",\n          \"name\": \"keyword.other.capture-specifier.swift\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.swift\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.type.metatype.swift\"\n            }\n          },\n          \"match\": \"(?<=\\\\.)(?:(dynamicType|self)|(Protocol|Type))\\\\b\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\b(?:super|self|Self)\\\\b\",\n          \"name\": \"variable.language.swift\"\n        },\n        {\n          \"match\": \"\\\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\\\b|\\\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\\\b\",\n          \"name\": \"support.variable.swift\"\n        },\n        {\n          \"match\": \"(?<!\\\\.)\\\\bimport\\\\b\",\n          \"name\": \"keyword.control.import.swift\"\n        }\n      ]\n    },\n    \"literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#boolean\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"match\": \"\\\\bnil\\\\b\",\n          \"name\": \"constant.language.nil.swift\"\n        },\n        {\n          \"comment\": \"object \\\"literals\\\" used in playgrounds\",\n          \"match\": \"\\\\B#(colorLiteral|imageLiteral|fileLiteral)\\\\b\",\n          \"name\": \"support.function.object-literal.swift\"\n        },\n        {\n          \"match\": \"\\\\B#keyPath\\\\b\",\n          \"name\": \"support.function.key-path.swift\"\n        },\n        {\n          \"begin\": \"\\\\B(#selector)(\\\\()(?:\\\\s*(getter|setter)\\\\s*(:))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.selector-reference.swift\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.arguments.begin.swift\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.parameter.swift\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.separator.argument-label.swift\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.swift\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expressions\"\n            }\n          ]\n        }\n      ],\n      \"repository\": {\n        \"boolean\": {\n          \"match\": \"\\\\b(true|false)\\\\b\",\n          \"name\": \"constant.language.boolean.swift\"\n        },\n        \"numeric\": {\n          \"patterns\": [\n            {\n              \"comment\": \"0.1, -4_2.5, 6.022e23, 10E-5\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9][0-9_]*(?=\\\\.[0-9]|[eE])(?:\\\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.float.decimal.swift\"\n            },\n            {\n              \"comment\": \"-0x1.ap2_3, 0x31p-4\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.float.hexadecimal.swift\"\n            },\n            {\n              \"comment\": \"0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\\\w*)\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"invalid.illegal.numeric.float.invalid-exponent.swift\"\n            },\n            {\n              \"comment\": \"0x1.5w (note that 0x1.f may be a valid expression)\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\\\.[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.float.missing-exponent.swift\"\n            },\n            {\n              \"comment\": \"-.5, .2f (note that 1.-.5 may be a valid expression)\",\n              \"match\": \"(?<=\\\\s|^)\\\\-?\\\\.[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.float.missing-leading-zero.swift\"\n            },\n            {\n              \"comment\": \"0b_0_1, 0x_1p+3q\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\\\w+)?[\\\\w.]+\",\n              \"name\": \"invalid.illegal.numeric.leading-underscore.swift\"\n            },\n            {\n              \"comment\": \"tuple positional member: not really a numeric literal, but not invalid\",\n              \"match\": \"(?<=[\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9]+\\\\b\"\n            },\n            {\n              \"comment\": \"0b010, 0b1_0\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0b[01][01_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.binary.swift\"\n            },\n            {\n              \"comment\": \"0o1, 0o7_3\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0o[0-7][0-7_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.octal.swift\"\n            },\n            {\n              \"comment\": \"02, 3_456\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)[0-9][0-9_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.decimal.swift\"\n            },\n            {\n              \"comment\": \"0x4, 0xF_7\",\n              \"match\": \"(\\\\B\\\\-|\\\\b)(?<![\\\\[\\\\](){}\\\\p{L}_\\\\p{N}\\\\p{M}]\\\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\\\b(?!\\\\.[0-9])\",\n              \"name\": \"constant.numeric.integer.hexadecimal.swift\"\n            },\n            {\n              \"match\": \"(\\\\B\\\\-|\\\\b)[0-9][\\\\w.]*\",\n              \"name\": \"invalid.illegal.numeric.other.swift\"\n            }\n          ]\n        },\n        \"string\": {\n          \"patterns\": [\n            {\n              \"begin\": \"\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: Multi-Line String Literals\",\n              \"end\": \"\\\"\\\"\\\"(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\\\\\s*\\\\n\",\n                  \"name\": \"constant.character.escape.newline.swift\"\n                },\n                {\n                  \"include\": \"#string-guts\"\n                },\n                {\n                  \"comment\": \"Allow \\\\(\\\"\\\"\\\"...\\\"\\\"\\\") to appear inside a block string\",\n                  \"match\": \"\\\\S((?!\\\\\\\\\\\\().)*(?=\\\"\\\"\\\")\",\n                  \"name\": \"invalid.illegal.content-before-closing-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"#\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"\\\"\\\"#(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\#\\\\s*\\\\n\",\n                  \"name\": \"constant.character.escape.newline.swift\"\n                },\n                {\n                  \"include\": \"#raw-string-guts\"\n                },\n                {\n                  \"comment\": \"Allow \\\\(\\\"\\\"\\\"...\\\"\\\"\\\") to appear inside a block string\",\n                  \"match\": \"\\\\S((?!\\\\\\\\#\\\\().)*(?=\\\"\\\"\\\")\",\n                  \"name\": \"invalid.illegal.content-before-closing-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(##+)\\\"\\\"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"\\\"\\\"\\\\1(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.block.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\G.+(?=\\\"\\\"\\\")|\\\\G.+\",\n                  \"name\": \"invalid.illegal.content-after-opening-delimiter.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.swift\"\n                }\n              },\n              \"end\": \"\\\"(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                },\n                {\n                  \"include\": \"#string-guts\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(##+)\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.raw.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: raw string literals (more than one #, grammar limitations prevent us from supporting escapes)\",\n              \"end\": \"\\\"\\\\1(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.raw.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"#\\\"\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.raw.swift\"\n                }\n              },\n              \"comment\": \"SE-0168: raw string literals (one #, escapes supported)\",\n              \"end\": \"\\\"#(#*)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.end.raw.swift\"\n                },\n                \"1\": {\n                  \"name\": \"invalid.illegal.extra-closing-delimiter.swift\"\n                }\n              },\n              \"name\": \"string.quoted.double.single-line.raw.swift\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\r|\\\\n\",\n                  \"name\": \"invalid.illegal.returns-not-allowed.swift\"\n                },\n                {\n                  \"include\": \"#raw-string-guts\"\n                }\n              ]\n            }\n          ],\n          \"repository\": {\n            \"raw-string-guts\": {\n              \"comment\": \"the same as #string-guts but with # in escapes\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\#[0\\\\\\\\tnr\\\"']\",\n                  \"name\": \"constant.character.escape.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\#u\\\\{[0-9a-fA-F]{1,8}\\\\}\",\n                  \"name\": \"constant.character.escape.unicode.swift\"\n                },\n                {\n                  \"begin\": \"\\\\\\\\#\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.swift\"\n                    }\n                  },\n                  \"contentName\": \"source.swift\",\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.swift\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.swift\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.line.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"comment\": \"Nested parens\",\n                      \"end\": \"\\\\)\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\\\\\#.\",\n                  \"name\": \"invalid.illegal.escape-not-recognized\"\n                }\n              ]\n            },\n            \"string-guts\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\[0\\\\\\\\tnr\\\"']\",\n                  \"name\": \"constant.character.escape.swift\"\n                },\n                {\n                  \"match\": \"\\\\\\\\u\\\\{[0-9a-fA-F]{1,8}\\\\}\",\n                  \"name\": \"constant.character.escape.unicode.swift\"\n                },\n                {\n                  \"begin\": \"\\\\\\\\\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.begin.swift\"\n                    }\n                  },\n                  \"contentName\": \"source.swift\",\n                  \"end\": \"(\\\\))\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"punctuation.section.embedded.end.swift\"\n                    },\n                    \"1\": {\n                      \"name\": \"source.swift\"\n                    }\n                  },\n                  \"name\": \"meta.embedded.line.swift\",\n                  \"patterns\": [\n                    {\n                      \"include\": \"$self\"\n                    },\n                    {\n                      \"begin\": \"\\\\(\",\n                      \"comment\": \"Nested parens\",\n                      \"end\": \"\\\\)\"\n                    }\n                  ]\n                },\n                {\n                  \"match\": \"\\\\\\\\.\",\n                  \"name\": \"invalid.illegal.escape-not-recognized\"\n                }\n              ]\n            }\n          }\n        }\n      }\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Type casting\",\n          \"match\": \"\\\\b(is\\\\b|as([!?]\\\\B|\\\\b))\",\n          \"name\": \"keyword.operator.type-casting.swift\"\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(?=\\n\\t\\t\\t\\t\\t\\t\\t(?<oph>\\t\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t  | \\\\.\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\g<oph>\\t\\t\\t\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t  | \\\\.\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"comment\": \"This rule helps us speed up the matching.\",\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G(\\\\+\\\\+|\\\\-\\\\-)$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-)$\",\n                      \"name\": \"keyword.operator.arithmetic.unary.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G!$\",\n                      \"name\": \"keyword.operator.logical.not.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G~$\",\n                      \"name\": \"keyword.operator.bitwise.not.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.prefix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Prefix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<=^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?![\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G(\\\\+\\\\+|\\\\-\\\\-)$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G!$\",\n                      \"name\": \"keyword.operator.increment-or-decrement.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.postfix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Postfix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<!^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G=$\",\n                      \"name\": \"keyword.operator.assignment.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-|\\\\*|/|%|<<|>>|&|\\\\^|\\\\||&&|\\\\|\\\\|)=$\",\n                      \"name\": \"keyword.operator.assignment.compound.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(\\\\+|\\\\-|\\\\*|/)$\",\n                      \"name\": \"keyword.operator.arithmetic.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G&(\\\\+|\\\\-|\\\\*)$\",\n                      \"name\": \"keyword.operator.arithmetic.overflow.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G%$\",\n                      \"name\": \"keyword.operator.arithmetic.remainder.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(==|!=|>|<|>=|<=|~=)$\",\n                      \"name\": \"keyword.operator.comparison.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G\\\\?\\\\?$\",\n                      \"name\": \"keyword.operator.coalescing.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(&&|\\\\|\\\\|)$\",\n                      \"name\": \"keyword.operator.logical.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(&|\\\\||\\\\^|<<|>>)$\",\n                      \"name\": \"keyword.operator.bitwise.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G(===|!==)$\",\n                      \"name\": \"keyword.operator.bitwise.swift\"\n                    },\n                    {\n                      \"match\": \"\\\\G\\\\?$\",\n                      \"name\": \"keyword.operator.ternary.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.infix.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Infix operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.prefix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot prefix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<=^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?![\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.postfix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot postfix unary operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t(?<!^|[\\\\s(\\\\[{,;:])\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\\t(?=[\\\\s)\\\\]},;:]|\\\\z)\\n\\t\\t\\t\\t\\t\\t\\t\"\n            },\n            {\n              \"captures\": {\n                \"0\": {\n                  \"patterns\": [\n                    {\n                      \"match\": \"\\\\G\\\\.\\\\.[.<]$\",\n                      \"name\": \"keyword.operator.range.swift\"\n                    },\n                    {\n                      \"match\": \".+\",\n                      \"name\": \"keyword.operator.custom.infix.dot.swift\"\n                    }\n                  ]\n                }\n              },\n              \"comment\": \"Dot infix operator\",\n              \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\G\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# Matching from the beginning ensures\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# that we start with operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(?!(//|/\\\\*|\\\\*/))\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\.\\t\\t\\t\\t\\t\\t\\t\\t# dot\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [/=\\\\-+!*%<>&|^~?]\\t\\t\\t\\t# operator-head\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A1}-\\\\x{00A7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00A9}\\\\x{00AB}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00AC}\\\\x{00AE}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{00B0}-\\\\x{00B1}\\\\x{00B6}\\\\x{00BB}\\\\x{00BF}\\\\x{00D7}\\\\x{00F7}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2016}-\\\\x{2017}\\\\x{2020}-\\\\x{2027}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2030}-\\\\x{203E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2041}-\\\\x{2053}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2055}-\\\\x{205E}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2190}-\\\\x{23FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2500}-\\\\x{2775}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2794}-\\\\x{2BFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{2E00}-\\\\x{2E7F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3001}-\\\\x{3003}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{3008}-\\\\x{3030}]\\n\\t\\t\\t\\t\\t\\t\\t\\t  \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{0300}-\\\\x{036F}]\\t\\t\\t\\t# operator-character\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{1DC0}-\\\\x{1DFF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{20D0}-\\\\x{20FF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE00}-\\\\x{FE0F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{FE20}-\\\\x{FE2F}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t  | [\\\\x{E0100}-\\\\x{E01EF}]\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t)++\\n\\t\\t\\t\\t\\t\\t\\t\"\n            }\n          ]\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"keyword.operator.ternary.swift\"\n        }\n      ]\n    },\n    \"root\": {\n      \"patterns\": [\n        {\n          \"include\": \"#compiler-control\"\n        },\n        {\n          \"include\": \"#declarations\"\n        },\n        {\n          \"include\": \"#expressions\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/system-verilog.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"sv\", \"SV\", \"v\", \"V\", \"svh\", \"SVH\", \"vh\", \"VH\"],\n  \"hidden\": true,\n  \"name\": \"system-verilog\",\n  \"patterns\": [\n    {\n      \"begin\": \"\\\\s*\\\\b(function|task)\\\\b(\\\\s+automatic)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      },\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*\\\\s+)?([a-zA-Z_][a-zA-Z0-9_:]*)\\\\s*(?=\\\\(|;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.function.systemverilog\"\n            }\n          }\n        },\n        {\n          \"include\": \"#port-dir\"\n        },\n        {\n          \"include\": \"#base-grammar\"\n        }\n      ],\n      \"name\": \"meta.function.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(task)\\\\s+(automatic)?\\\\s*(\\\\w+)\\\\s*;\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.function.systemverilog\"\n        }\n      },\n      \"name\": \"meta.task.simple.systemverilog\"\n    },\n    {\n      \"begin\": \"\\\\s*\\\\b(typedef\\\\s+(struct|enum|union)\\\\b)\\\\s*(packed)?\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)?\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.systemverilog\"\n        }\n      },\n      \"end\": \"(})\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*;\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.systemverilog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#struct-anonymous\"\n        },\n        {\n          \"include\": \"#base-grammar\"\n        }\n      ],\n      \"name\": \"meta.typedef.struct.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(typedef\\\\s+class)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*;\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.declaration.systemverilog\"\n        }\n      },\n      \"name\": \"meta.typedef.class.systemverilog\"\n    },\n    {\n      \"begin\": \"\\\\s*\\\\b(typedef)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      },\n      \"end\": \"([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=(\\\\[[a-zA-Z0-9_:\\\\$\\\\-\\\\+]*\\\\])?;)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.systemverilog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)\\\\s*(#)\\\\(\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.userdefined.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.param.systemverilog\"\n            }\n          },\n          \"name\": \"meta.typedef.class.systemverilog\"\n        },\n        {\n          \"include\": \"#base-grammar\"\n        },\n        {\n          \"include\": \"#module-binding\"\n        }\n      ],\n      \"name\": \"meta.typedef.simple.systemverilog\"\n    },\n    {\n      \"begin\": \"\\\\s*(module)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.module.systemverilog\"\n        }\n      },\n      \"end\": \";\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.systemverilog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#port-dir\"\n        },\n        {\n          \"match\": \"\\\\s*(parameter)\",\n          \"name\": \"keyword.other.systemverilog\"\n        },\n        {\n          \"include\": \"#base-grammar\"\n        },\n        {\n          \"include\": \"#ifmodport\"\n        },\n        {\n          \"match\": \"\\\\$\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"support.function.systemverilog\"\n        }\n      ],\n      \"name\": \"meta.module.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.systemverilog\"\n        }\n      },\n      \"match\": \"\\\\b(sequence)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.sequence.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\b(bind)\\\\s+([a-zA-Z_][a-zA-Z0-9_\\\\.]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      }\n    },\n    {\n      \"captures\": {\n        \"0\": {\n          \"name\": \"meta.section.begin.systemverilog\"\n        },\n        \"1\": {\n          \"name\": \"keyword.other.block.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.section.systemverilog\"\n        }\n      },\n      \"match\": \"\\\\s*(begin|fork)\\\\s*((:)\\\\s*([a-zA-Z_][a-zA-Z0-9_]*))\\\\b\",\n      \"name\": \"meta.definition.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\b(property)\\\\s+(\\\\w+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.sva.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.sva.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\b(\\\\w+)\\\\s*(:)\\\\s*(assert)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.sva.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.sva.systemverilog\"\n        }\n      }\n    },\n    {\n      \"begin\": \"\\\\s*(//)\\\\s*(psl)\\\\s+((\\\\w+)\\\\s*(:))?\\\\s*(default|assert|assume)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.psl.systemverilog\"\n        },\n        \"1\": {\n          \"name\": \"comment.line.double-slash.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.psl.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"entity.psl.name.systemverilog\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.systemverilog\"\n        },\n        \"6\": {\n          \"name\": \"keyword.psl.systemverilog\"\n        }\n      },\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge)\\\\b\",\n          \"name\": \"keyword.psl.systemverilog\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ],\n      \"name\": \"meta.psl.systemverilog\"\n    },\n    {\n      \"begin\": \"\\\\s*(/\\\\*)\\\\s*(psl)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.psl.systemverilog\"\n        },\n        \"1\": {\n          \"name\": \"comment.block.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.psl.systemverilog\"\n        }\n      },\n      \"end\": \"(\\\\*/)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"comment.block.systemverilog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"^\\\\s*((\\\\w+)\\\\s*(:))?\\\\s*(default|assert|assume)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.psl.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"entity.psl.name.systemverilog\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.systemverilog\"\n            },\n            \"4\": {\n              \"name\": \"keyword.psl.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(property)\\\\s+(\\\\w+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.psl.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"entity.psl.name.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge|negedge)\\\\b\",\n          \"name\": \"keyword.psl.systemverilog\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ],\n      \"name\": \"meta.psl.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(automatic|cell|config|deassign|defparam|design|disable|edge|endconfig|endgenerate|endspecify|endtable|event|generate|genvar|ifnone|incdir|instance|liblist|library|macromodule|negedge|noshowcancelled|posedge|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|table|use|vectored)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(initial|always|wait|force|release|assign|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|inside|dist|clocking|cover|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|static|assert|assume|before|expect|cross|ref|first_match|srandom|struct|packed|final|chandle|alias|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|uwire|wait_order|triggered|randsequence|import|export|context|pure|intersect|wildcard|within|new|typedef|enum|this|super|begin|fork|forkjoin|unique|unique0|priority)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(end|endtask|endmodule|endfunction|endprimitive|endclass|endpackage|endsequence|endprogram|endclocking|endproperty|endgroup|endinterface|join|join_any|join_none)\\\\b(\\\\s*(:)\\\\s*(\\\\w+))?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"entity.label.systemverilog\"\n        }\n      },\n      \"name\": \"meta.object.end.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\b(std)\\\\b::\",\n      \"name\": \"support.class.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.define.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.define.systemverilog\"\n        }\n      },\n      \"match\": \"^\\\\s*(`define)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.define.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"constant.other.undef.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.undef.systemverilog\"\n        }\n      },\n      \"match\": \"^\\\\s*(`undef)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.undef.systemverilog\"\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.systemverilog\"\n        }\n      },\n      \"match\": \"\\\\s*(primitive|package|constraint|interface|covergroup|program)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"2\": {\n          \"name\": \"entity.name.type.class.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      },\n      \"match\": \"(([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(:))?\\\\s*(coverpoint|cross)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\",\n      \"name\": \"meta.definition.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.type.class.systemverilog\"\n        }\n      },\n      \"match\": \"\\\\b(virtual\\\\s+)?(class)\\\\s+\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.class.systemverilog\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.other.inherited-class.systemverilog\"\n        }\n      },\n      \"match\": \"\\\\b(extends)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"meta.definition.systemverilog\"\n    },\n    {\n      \"include\": \"#all-types\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#port-dir\"\n    },\n    {\n      \"match\": \"\\\\b(and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\\\\b\",\n      \"name\": \"support.type.systemverilog\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"match\": \"\\\\$\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"name\": \"support.function.systemverilog\"\n    },\n    {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(')(?=\\\\()\",\n      \"name\": \"meta.cast.systemverilog\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.cast.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(localparam|parameter)\\\\s+([A-Z_][A-Z0-9_]*)\\\\b\\\\s*(?=(=))\",\n      \"name\": \"meta.param.systemverilog\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"constant.other.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(localparam|parameter)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=(=))\",\n      \"name\": \"meta.param.systemverilog\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"^\\\\s*(local\\\\s+|protected\\\\s+|localparam\\\\s+|parameter\\\\s+)?(const\\\\s+|virtual\\\\s+)?(rand\\\\s+|randc\\\\s+)?(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\\\\s*(?=(#\\\\s*\\\\([\\\\w,]+\\\\)\\\\s*)?([a-zA-Z][a-zA-Z0-9_\\\\s\\\\[\\\\]']*)(;|,|=|'\\\\{))\",\n      \"name\": \"meta.userdefined.systemverilog\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.rand.systemverilog\"\n        },\n        \"5\": {\n          \"name\": \"support.type.scope.systemverilog\"\n        },\n        \"6\": {\n          \"name\": \"keyword.operator.scope.systemverilog\"\n        },\n        \"7\": {\n          \"name\": \"storage.type.userdefined.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(option)\\\\.\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.cover.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(local|const|protected|virtual|localparam|parameter)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.systemverilog\"\n        }\n      }\n    },\n    {\n      \"match\": \"\\\\s*\\\\b(rand|randc)\\\\b\",\n      \"name\": \"storage.type.rand.systemverilog\"\n    },\n    {\n      \"begin\": \"^(\\\\s*(bind)\\\\s+([a-zA-Z_][\\\\w\\\\.]*))?\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(?=#[^#])\",\n      \"beginCaptures\": {\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"storage.module.systemverilog\"\n        }\n      },\n      \"end\": \"(?=;|=|:)\",\n      \"patterns\": [\n        {\n          \"include\": \"#module-binding\"\n        },\n        {\n          \"include\": \"#module-param\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b(?=\\\\s*(\\\\(|$))\",\n          \"name\": \"entity.name.type.module.systemverilog\"\n        }\n      ],\n      \"name\": \"meta.module.inst.param.systemverilog\"\n    },\n    {\n      \"begin\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*(\\\\[(\\\\d+)(\\\\:(\\\\d+))?\\\\])?\\\\s*(\\\\(|$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.module.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.module.systemverilog\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.systemverilog\"\n        },\n        \"6\": {\n          \"name\": \"constant.numeric.systemverilog\"\n        }\n      },\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"include\": \"#module-binding\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#constants\"\n        }\n      ],\n      \"name\": \"meta.module.inst.systemverilog\"\n    },\n    {\n      \"name\": \"meta.struct.assign.systemverilog\",\n      \"begin\": \"\\\\b\\\\s+(<?=)\\\\s*(\\\\'{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        }\n      },\n      \"end\": \";\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(\\\\w+)\\\\s*(:)(?!:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.function.field.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.other.systemverilog\"\n            }\n          }\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#storage-scope-systemverilog\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#storage-scope-systemverilog\"\n    },\n    {\n      \"include\": \"#functions\"\n    },\n    {\n      \"include\": \"#constants\"\n    }\n  ],\n  \"repository\": {\n    \"functions\": {\n      \"match\": \"\\\\b(\\\\w+)(?=\\\\s*\\\\()\",\n      \"name\": \"support.function.generic.systemverilog\"\n    },\n    \"all-types\": {\n      \"patterns\": [\n        {\n          \"include\": \"#storage-type-systemverilog\"\n        },\n        {\n          \"include\": \"#storage-modifier-systemverilog\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\b\\\\d+)?'(s?[bB]\\\\s*[0-1xXzZ?][0-1_xXzZ?]*|s?[oO]\\\\s*[0-7xXzZ?][0-7_xXzZ?]*|s?[dD]\\\\s*[0-9xXzZ?][0-9_xXzZ?]*|s?[hH]\\\\s*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\\\+|-)?[0-9]+)?(?!'|\\\\w)\",\n          \"name\": \"constant.numeric.systemverilog\"\n        },\n        {\n          \"match\": \"'[01xXzZ]\",\n          \"name\": \"constant.numeric.bit.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b((\\\\d[\\\\d_]*)(e|E)(\\\\+|-)?[0-9]+)\\\\b\",\n          \"name\": \"constant.numeric.exp.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d[\\\\d_]*)\\\\b\",\n          \"name\": \"constant.numeric.decimal.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(\\\\d+(fs|ps|ns|us|ms|s)?)\\\\b\",\n          \"name\": \"constant.numeric.time.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b([A-Z][A-Z0-9_]*)\\\\b\",\n          \"name\": \"constant.other.net.systemverilog\"\n        },\n        {\n          \"match\": \"(`ifdef|`ifndef|`default_nettype)\\\\s+(\\\\w+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.other.preprocessor.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"support.variable.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"`(celldefine|else|elsif|endcelldefine|endif|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef|begin_\\\\w+|end_\\\\w+|remove_\\\\w+|restore_\\\\w+)\\\\b\",\n          \"name\": \"constant.other.preprocessor.systemverilog\"\n        },\n        {\n          \"match\": \"`\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"constant.other.define.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(null)\\\\b\",\n          \"name\": \"support.constant.systemverilog\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"(=|==|===|!=|!==|<=|>=|<|>)\",\n          \"name\": \"keyword.operator.comparison.systemverilog\"\n        },\n        {\n          \"match\": \"(\\\\-|\\\\+|\\\\*|\\\\/|%)\",\n          \"name\": \"keyword.operator.arithmetic.systemverilog\"\n        },\n        {\n          \"match\": \"(!|&&|\\\\|\\\\||\\\\bor\\\\b)\",\n          \"name\": \"keyword.operator.logical.systemverilog\"\n        },\n        {\n          \"match\": \"(&|\\\\||\\\\^|~|{|'{|}|<<|>>|\\\\?|:)\",\n          \"name\": \"keyword.operator.bitwise.systemverilog\"\n        },\n        {\n          \"match\": \"(#|@)\",\n          \"name\": \"keyword.operator.other.systemverilog\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"/\\\\*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.systemverilog\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.systemverilog\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.systemverilog\"\n            }\n          },\n          \"match\": \"(//).*$\\\\n?\",\n          \"name\": \"comment.line.double-slash.systemverilog\"\n        }\n      ]\n    },\n    \"port-dir\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\\\s+(?=\\\\[[a-zA-Z0-9_\\\\-\\\\+]*:[a-zA-Z0-9_\\\\-\\\\+]*\\\\]\\\\s+[a-zA-Z_][a-zA-Z0-9_\\\\s]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.systemverilog\"\n            },\n            \"3\": {\n              \"name\": \"support.type.scope.systemverilog\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.scope.systemverilog\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.interface.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\\\s+(?=[a-zA-Z_][a-zA-Z0-9_\\\\s]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.systemverilog\"\n            },\n            \"3\": {\n              \"name\": \"support.type.scope.systemverilog\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.scope.systemverilog\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.interface.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(output|input|inout|ref)\\\\b\",\n          \"name\": \"support.type.systemverilog\"\n        }\n      ]\n    },\n    \"base-grammar\": {\n      \"patterns\": [\n        {\n          \"include\": \"#all-types\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"match\": \"^\\\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+[a-zA-Z_][a-zA-Z0-9_,=\\\\s]*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.systemverilog\"\n            }\n          }\n        },\n        {\n          \"include\": \"#storage-scope-systemverilog\"\n        }\n      ]\n    },\n    \"storage-type-systemverilog\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\s*\\\\b(var|wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|integer|int|longint|shortint|logic|bit|byte|shortreal|string|time|realtime|real|process|void)\\\\b\",\n          \"name\": \"storage.type.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\s*\\\\b(uvm_transaction|uvm_component|uvm_monitor|uvm_driver|uvm_test|uvm_env|uvm_object|uvm_agent|uvm_sequence_base|uvm_sequence|uvm_sequence_item|uvm_sequence_state|uvm_sequencer|uvm_sequencer_base|uvm_component_registry|uvm_analysis_imp|uvm_analysis_port|uvm_analysis_export|uvm_config_db|uvm_active_passive_enum|uvm_phase|uvm_verbosity|uvm_tlm_analysis_fifo|uvm_tlm_fifo|uvm_report_server|uvm_objection|uvm_recorder|uvm_domain|uvm_reg_field|uvm_reg|uvm_reg_block|uvm_bitstream_t|uvm_radix_enum|uvm_printer|uvm_packer|uvm_comparer|uvm_scope_stack)\\\\b\",\n          \"name\": \"storage.type.uvm.systemverilog\"\n        }\n      ]\n    },\n    \"storage-scope-systemverilog\": {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)(::)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.type.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.scope.systemverilog\"\n        }\n      },\n      \"name\": \"meta.scope.systemverilog\"\n    },\n    \"storage-modifier-systemverilog\": {\n      \"match\": \"\\\\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\\\b\",\n      \"name\": \"storage.modifier.systemverilog\"\n    },\n    \"ifmodport\": {\n      \"match\": \"\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.interface.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"support.modport.systemverilog\"\n        }\n      }\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.systemverilog\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.systemverilog\"\n            }\n          },\n          \"name\": \"string.quoted.double.systemverilog\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.systemverilog\"\n            },\n            {\n              \"match\": \"(?x)%\\n                                        (\\\\d+\\\\$)?                             # field (argument #)\\n                                        [#0\\\\- +']*                           # flags\\n                                        [,;:_]?                              # separator character (AltiVec)\\n                                        ((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?              # minimum field width\\n                                        (\\\\.((-?\\\\d+)|\\\\*(-?\\\\d+\\\\$)?)?)?         # precision\\n                                        (hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\\n                                        [bdiouxXhHDOUeEfFgGaACcSspnmt%]      # conversion type\\n                                    \",\n              \"name\": \"constant.other.placeholder.systemverilog\"\n            },\n            {\n              \"match\": \"%\",\n              \"name\": \"invalid.illegal.placeholder.systemverilog\"\n            }\n          ]\n        }\n      ]\n    },\n    \"module-binding\": {\n      \"begin\": \"\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.port.systemverilog\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)(::)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.scope.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.scope.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\b([a-zA-Z_]\\\\w*)(')\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.interface.systemverilog\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.cast.systemverilog\"\n            }\n          }\n        },\n        {\n          \"match\": \"\\\\$\\\\b([a-zA-Z_][a-zA-Z0-9_]*)\\\\b\",\n          \"name\": \"support.function.systemverilog\"\n        },\n        {\n          \"match\": \"\\\\b(virtual)\\\\b\",\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      ],\n      \"match\": \"\\\\.([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.port.implicit.systemverilog\"\n        }\n      }\n    },\n    \"module-param\": {\n      \"name\": \"meta.module-param.systemverilog\",\n      \"begin\": \"(#)\\\\s*\\\\(\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.param.systemverilog\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#operators\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#module-binding\"\n        },\n        {\n          \"match\": \"\\\\b(virtual)\\\\b\",\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      ]\n    },\n    \"struct-anonymous\": {\n      \"begin\": \"\\\\s*\\\\b(struct|union)\\\\s*(packed)?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.systemverilog\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.systemverilog\"\n        }\n      },\n      \"end\": \"(})\\\\s*([a-zA-Z_]\\\\w*)\\\\s*;\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.other.systemverilog\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#base-grammar\"\n        }\n      ],\n      \"name\": \"meta.struct.anonymous.systemverilog\"\n    }\n  },\n  \"scopeName\": \"source.systemverilog\",\n  \"uuid\": \"789be04c-8b74-352e-8f37-63d336001277\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/tasl.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"source.tasl\",\n  \"name\": \"tasl\",\n  \"fileTypes\": [\"tasl\"],\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#namespace\"\n    },\n    {\n      \"include\": \"#type\"\n    },\n    {\n      \"include\": \"#class\"\n    },\n    {\n      \"include\": \"#edge\"\n    }\n  ],\n  \"repository\": {\n    \"comment\": {\n      \"match\": \"(#).*$\",\n      \"name\": \"comment.line.number-sign.tasl\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.tasl\"\n        }\n      }\n    },\n    \"namespace\": {\n      \"match\": \"(?:^\\\\s*)(namespace)\\\\b(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tasl.namespace\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#namespaceURI\"\n            },\n            {\n              \"match\": \"[a-zA-Z][a-zA-Z0-9]*\\\\b\",\n              \"name\": \"entity.name\"\n            }\n          ]\n        }\n      }\n    },\n    \"type\": {\n      \"begin\": \"(?:^\\\\s*)(type)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tasl.type\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"class\": {\n      \"begin\": \"(?:^\\\\s*)(class)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tasl.class\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#key\"\n        },\n        {\n          \"include\": \"#export\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"edge\": {\n      \"begin\": \"(?:^\\\\s*)(edge)\\\\b\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tasl.edge\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#key\"\n        },\n        {\n          \"include\": \"#export\"\n        },\n        {\n          \"match\": \"=/\",\n          \"name\": \"punctuation.separator.tasl.edge.source\"\n        },\n        {\n          \"match\": \"/=>\",\n          \"name\": \"punctuation.separator.tasl.edge.target\"\n        },\n        {\n          \"match\": \"=>\",\n          \"name\": \"punctuation.separator.tasl.edge\"\n        },\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"export\": {\n      \"match\": \"::\",\n      \"name\": \"keyword.operator.tasl.export\"\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#uri\"\n        },\n        {\n          \"include\": \"#product\"\n        },\n        {\n          \"include\": \"#coproduct\"\n        },\n        {\n          \"include\": \"#reference\"\n        },\n        {\n          \"include\": \"#optional\"\n        },\n        {\n          \"include\": \"#identifier\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#datatype\"\n        }\n      ]\n    },\n    \"uri\": {\n      \"match\": \"<>\",\n      \"name\": \"variable.other.constant\"\n    },\n    \"product\": {\n      \"begin\": \"{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tasl.product\"\n        }\n      },\n      \"end\": \"}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tasl.product\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#term\"\n        },\n        {\n          \"include\": \"#component\"\n        }\n      ]\n    },\n    \"component\": {\n      \"begin\": \"->\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.tasl.component\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"coproduct\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tasl.coproduct\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tasl.coproduct\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#term\"\n        },\n        {\n          \"include\": \"#option\"\n        }\n      ]\n    },\n    \"option\": {\n      \"begin\": \"<-\",\n      \"end\": \"$\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.separator.tasl.option\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"reference\": {\n      \"match\": \"(\\\\*)\\\\s*(.*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"markup.bold keyword.operator\"\n        },\n        \"2\": {\n          \"patterns\": [\n            {\n              \"include\": \"#key\"\n            }\n          ]\n        }\n      }\n    },\n    \"identifier\": {\n      \"match\": \"([a-zA-Z][a-zA-Z0-9]*)\\\\b\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable\"\n        }\n      }\n    },\n    \"optional\": {\n      \"begin\": \"\\\\?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator\"\n        }\n      },\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"namespaceURI\": {\n      \"match\": \"[a-z]+:[a-zA-Z0-9-._~:\\\\/?#\\\\[\\\\]@!$&'()*+,;%=]+\",\n      \"name\": \"markup.underline.link\"\n    },\n    \"key\": {\n      \"match\": \"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+\",\n      \"name\": \"markup.bold entity.name.class\"\n    },\n    \"datatype\": {\n      \"match\": \"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+\",\n      \"name\": \"string.regexp\"\n    },\n    \"term\": {\n      \"match\": \"[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+\",\n      \"name\": \"entity.other.tasl.key\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/tcl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"tcl\"],\n  \"foldingStartMarker\": \"\\\\{\\\\s*$\",\n  \"foldingStopMarker\": \"^\\\\s*\\\\}\",\n  \"keyEquivalent\": \"^~T\",\n  \"name\": \"tcl\",\n  \"patterns\": [\n    {\n      \"begin\": \"(?<=^|;)\\\\s*((#))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"comment.line.number-sign.tcl\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.comment.tcl\"\n        }\n      },\n      \"contentName\": \"comment.line.number-sign.tcl\",\n      \"end\": \"\\\\n\",\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n)\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tcl\"\n        }\n      },\n      \"match\": \"(?<=^|[\\\\[{;])\\\\s*(if|while|for|catch|default|return|break|continue|switch|exit|foreach|try|throw)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.tcl\"\n        }\n      },\n      \"match\": \"(?<=^|})\\\\s*(then|elseif|else)\\\\b\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.tcl\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.tcl\"\n        }\n      },\n      \"match\": \"(?<=^|{)\\\\s*(proc)\\\\s+([^\\\\s]+)\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.other.tcl\"\n        }\n      },\n      \"match\": \"(?<=^|[\\\\[{;])\\\\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\\\\b\"\n    },\n    {\n      \"begin\": \"(?<=^|[\\\\[{;])\\\\s*(regexp|regsub)\\\\b\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.other.tcl\"\n        }\n      },\n      \"comment\": \"special-case regexp/regsub keyword in order to handle the expression\",\n      \"end\": \"[\\\\n;\\\\]]\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\(?:.|\\\\n)\",\n          \"name\": \"constant.character.escape.tcl\"\n        },\n        {\n          \"comment\": \"switch for regexp\",\n          \"match\": \"-\\\\w+\\\\s*\"\n        },\n        {\n          \"applyEndPatternLast\": 1,\n          \"begin\": \"--\\\\s*\",\n          \"comment\": \"end of switches\",\n          \"end\": \"\",\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regexp\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#escape\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#operator\"\n    },\n    {\n      \"include\": \"#numeric\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tcl\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tcl\"\n        }\n      },\n      \"name\": \"string.quoted.double.tcl\",\n      \"patterns\": [\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#variable\"\n        },\n        {\n          \"include\": \"#embedded\"\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"bare-string\": {\n      \"begin\": \"(?:^|(?<=\\\\s))\\\"\",\n      \"comment\": \"matches a single quote-enclosed word without scoping\",\n      \"end\": \"\\\"([^\\\\s\\\\]]*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.tcl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#escape\"\n        },\n        {\n          \"include\": \"#variable\"\n        }\n      ]\n    },\n    \"braces\": {\n      \"begin\": \"(?:^|(?<=\\\\s))\\\\{\",\n      \"comment\": \"matches a single brace-enclosed word\",\n      \"end\": \"\\\\}([^\\\\s\\\\]]*)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"invalid.illegal.tcl\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[{}\\\\n]\",\n          \"name\": \"constant.character.escape.tcl\"\n        },\n        {\n          \"include\": \"#inner-braces\"\n        }\n      ]\n    },\n    \"embedded\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.tcl\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.tcl\"\n        }\n      },\n      \"name\": \"source.tcl.embedded\",\n      \"patterns\": [\n        {\n          \"include\": \"source.tcl\"\n        }\n      ]\n    },\n    \"escape\": {\n      \"match\": \"\\\\\\\\(\\\\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\\\\n)\",\n      \"name\": \"constant.character.escape.tcl\"\n    },\n    \"inner-braces\": {\n      \"begin\": \"\\\\{\",\n      \"comment\": \"matches a nested brace in a brace-enclosed word\",\n      \"end\": \"\\\\}\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\[{}\\\\n]\",\n          \"name\": \"constant.character.escape.tcl\"\n        },\n        {\n          \"include\": \"#inner-braces\"\n        }\n      ]\n    },\n    \"regexp\": {\n      \"begin\": \"(?=\\\\S)(?![\\\\n;\\\\]])\",\n      \"comment\": \"matches a single word, named as a regexp, then swallows the rest of the command\",\n      \"end\": \"(?=[\\\\n;\\\\]])\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?=[^ \\\\t\\\\n;])\",\n          \"end\": \"(?=[ \\\\t\\\\n;])\",\n          \"name\": \"string.regexp.tcl\",\n          \"patterns\": [\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"#bare-string\"\n            },\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#variable\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[ \\\\t]\",\n          \"comment\": \"swallow the rest of the command\",\n          \"end\": \"(?=[\\\\n;\\\\]])\",\n          \"patterns\": [\n            {\n              \"include\": \"#variable\"\n            },\n            {\n              \"include\": \"#embedded\"\n            },\n            {\n              \"include\": \"#escape\"\n            },\n            {\n              \"include\": \"#braces\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string\": {\n      \"applyEndPatternLast\": 1,\n      \"begin\": \"(?:^|(?<=\\\\s))(?=\\\")\",\n      \"comment\": \"matches a single quote-enclosed word with scoping\",\n      \"end\": \"\",\n      \"name\": \"string.quoted.double.tcl\",\n      \"patterns\": [\n        {\n          \"include\": \"#bare-string\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.tcl\"\n        }\n      },\n      \"match\": \"(\\\\$)((?:[a-zA-Z0-9_]|::)+(\\\\([^\\\\)]+\\\\))?|\\\\{[^\\\\}]*\\\\})\",\n      \"name\": \"support.function.tcl\"\n    },\n    \"numeric\": {\n      \"match\": \"(?<![a-zA-Z])([+-]?([0-9]*[.])?[0-9]+f?)(?![\\\\.a-zA-Z])\",\n      \"name\": \"constant.numeric.tcl\"\n    },\n    \"operator\": {\n      \"match\": \"(?<= |\\\\d)(-|\\\\+|~|&{1,2}|\\\\|{1,2}|<{1,2}|>{1,2}|\\\\*{1,2}|!|%|\\\\/|<=|>=|={1,2}|!=|\\\\^)(?= |\\\\d)\",\n      \"name\": \"keyword.operator.tcl\"\n    }\n  },\n  \"scopeName\": \"source.tcl\",\n  \"uuid\": \"62E11136-D9E5-461C-BE98-54E3A2A9E5E3\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/tex.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/TeX.tmLanguage.json\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/jlelong/vscode-latex-basics/commit/8776a0856846b63d9e5765e8ec42a8a2f4f52219\",\n  \"name\": \"tex\",\n  \"scopeName\": \"text.tex\",\n  \"patterns\": [\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(backmatter|else|fi|frontmatter|mainmatter|if(case|cat|dim|eof|false|hbox|hmode|inner|mmode|num|odd|true|undefined|vbox|vmode|void|x)?)(?![a-zA-Z@])\",\n      \"name\": \"keyword.control.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.catcode.tex\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.key-value.tex\"\n        },\n        \"4\": {\n          \"name\": \"constant.numeric.category.tex\"\n        }\n      },\n      \"match\": \"((\\\\\\\\)catcode)`(?:\\\\\\\\)?.(=)(\\\\d+)\",\n      \"name\": \"meta.catcode.tex\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=%)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.tex\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"%:\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.tex\"\n        },\n        {\n          \"begin\": \"^(%!TEX) (\\\\S*) =\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.directive.tex\"\n        },\n        {\n          \"begin\": \"%\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tex\"\n            }\n          },\n          \"end\": \"$\\\\n?\",\n          \"name\": \"comment.line.percentage.tex\"\n        }\n      ]\n    },\n    {\n      \"match\": \"[\\\\[\\\\]]\",\n      \"name\": \"punctuation.definition.brackets.tex\"\n    },\n    {\n      \"begin\": \"(\\\\$\\\\$|\\\\$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.begin.tex\"\n        }\n      },\n      \"end\": \"(\\\\1)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tex\"\n        }\n      },\n      \"name\": \"meta.math.block.tex support.class.math.block.tex\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\\\\\$\",\n          \"name\": \"constant.character.escape.tex\"\n        },\n        {\n          \"include\": \"#math\"\n        },\n        {\n          \"include\": \"$self\"\n        }\n      ]\n    },\n    {\n      \"match\": \"\\\\\\\\\\\\\\\\\",\n      \"name\": \"keyword.control.newline.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.function.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)(?:[A-Za-z@]+|[,;])\",\n      \"name\": \"support.function.general.tex\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.keyword.tex\"\n        }\n      },\n      \"match\": \"(\\\\\\\\)[^a-zA-Z@]\",\n      \"name\": \"constant.character.escape.tex\"\n    }\n  ],\n  \"repository\": {\n    \"math\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((\\\\\\\\)(?:text|mbox))(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"constant.other.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.function.tex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.arguments.begin.tex meta.text.normal.tex\"\n            }\n          },\n          \"contentName\": \"meta.text.normal.tex\",\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.arguments.end.tex meta.text.normal.tex\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#math\"\n            },\n            {\n              \"include\": \"$base\"\n            }\n          ]\n        },\n        {\n          \"match\": \"\\\\\\\\{|\\\\\\\\}\",\n          \"name\": \"punctuation.math.bracket.pair.tex\"\n        },\n        {\n          \"match\": \"\\\\\\\\(left|right|((big|bigg|Big|Bigg)[lr]?))([\\\\(\\\\[\\\\<\\\\>\\\\]\\\\)\\\\.\\\\|]|\\\\\\\\[{}|]|\\\\\\\\[lr]?[Vv]ert|\\\\\\\\[lr]angle)\",\n          \"name\": \"punctuation.math.bracket.pair.big.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?=\\\\b|_)\",\n          \"name\": \"constant.character.math.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\\\\b\",\n          \"name\": \"constant.character.math.tex\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\\\\b\",\n          \"name\": \"constant.other.math.tex\"\n        },\n        {\n          \"begin\": \"((\\\\\\\\)Sexpr(\\\\{))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.sexpr.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.function.math.tex\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.embedded.begin.math.tex\"\n            }\n          },\n          \"contentName\": \"support.function.sexpr.math.tex\",\n          \"end\": \"(((\\\\})))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"support.function.sexpr.math.tex\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.section.embedded.end.math.tex\"\n            },\n            \"3\": {\n              \"name\": \"source.r\"\n            }\n          },\n          \"name\": \"meta.embedded.line.r\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\G(?!\\\\})\",\n              \"end\": \"(?=\\\\})\",\n              \"name\": \"source.r\",\n              \"patterns\": [\n                {\n                  \"include\": \"source.r\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.constant.math.tex\"\n            }\n          },\n          \"match\": \"(\\\\\\\\)(?!begin\\\\{|verb)([A-Za-z]+)\",\n          \"name\": \"constant.other.general.math.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\{\",\n          \"name\": \"punctuation.math.begin.bracket.curly.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\}\",\n          \"name\": \"punctuation.math.end.bracket.curly.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\(\",\n          \"name\": \"punctuation.math.begin.bracket.round.tex\"\n        },\n        {\n          \"match\": \"(?<!\\\\\\\\)\\\\)\",\n          \"name\": \"punctuation.math.end.bracket.round.tex\"\n        },\n        {\n          \"match\": \"(([0-9]*[\\\\.][0-9]+)|[0-9]+)\",\n          \"name\": \"constant.numeric.math.tex\"\n        },\n        {\n          \"match\": \"[\\\\+\\\\*/_\\\\^-]\",\n          \"name\": \"punctuation.math.operator.tex\"\n        }\n      ]\n    },\n    \"braces\": {\n      \"begin\": \"(?<!\\\\\\\\)\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.group.begin.tex\"\n        }\n      },\n      \"end\": \"(?<!\\\\\\\\)\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.group.end.tex\"\n        }\n      },\n      \"name\": \"meta.group.braces.tex\",\n      \"patterns\": [\n        {\n          \"include\": \"#braces\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/toml.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"toml\"],\n  \"keyEquivalent\": \"^~T\",\n  \"name\": \"toml\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#groups\"\n    },\n    {\n      \"include\": \"#key_pair\"\n    },\n    {\n      \"include\": \"#invalid\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"begin\": \"(^[ \\\\t]+)?(?=#)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.toml\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.toml\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.toml\"\n        }\n      ]\n    },\n    \"groups\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[^\\\\s.]+\",\n                  \"name\": \"entity.name.section.toml\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\[)([^\\\\[\\\\]]*)(\\\\])\",\n          \"name\": \"meta.group.toml\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            },\n            \"2\": {\n              \"patterns\": [\n                {\n                  \"match\": \"[^\\\\s.]+\",\n                  \"name\": \"entity.name.section.toml\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.section.begin.toml\"\n            }\n          },\n          \"match\": \"^\\\\s*(\\\\[\\\\[)([^\\\\[\\\\]]*)(\\\\]\\\\])\",\n          \"name\": \"meta.group.double.toml\"\n        }\n      ]\n    },\n    \"invalid\": {\n      \"match\": \"\\\\S+(\\\\s*(?=\\\\S))?\",\n      \"name\": \"invalid.illegal.not-allowed-here.toml\"\n    },\n    \"key_pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([A-Za-z0-9_-]+)\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((\\\")(.*?)(\\\"))\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.begin.toml\"\n            },\n            \"3\": {\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n                  \"name\": \"constant.character.escape.toml\"\n                },\n                {\n                  \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n                  \"name\": \"invalid.illegal.escape.toml\"\n                },\n                {\n                  \"match\": \"\\\"\",\n                  \"name\": \"invalid.illegal.not-allowed-here.toml\"\n                }\n              ]\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.end.toml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((')([^']*)('))\\\\s*(=)\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.variable.begin.toml\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.variable.end.toml\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[A-Za-z0-9_-]+\\t\\t\\t\\t# Bare key\\n\\t\\t\\t\\t\\t\\t\\t\\t  | \\\"  (?:[^\\\"\\\\\\\\]|\\\\\\\\.)* \\\"\\t\\t# Double quoted key\\n\\t\\t\\t\\t\\t\\t\\t\\t  | ' [^']*          '\\t\\t# Sindle quoted key\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\t(?:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\\s* \\\\. \\\\s*\\t\\t\\t\\t\\t# Dot\\n\\t\\t\\t\\t\\t\\t\\t\\t  | (?= \\\\s* =)\\t\\t\\t\\t\\t#   or look-ahead for equals\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t){2,}\\t\\t\\t\\t\\t\\t\\t\\t# Ensure at least one dot\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\\\s*(=)\\\\s*\\n\\t\\t\\t\\t\\t\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.key.toml\",\n              \"patterns\": [\n                {\n                  \"match\": \"\\\\.\",\n                  \"name\": \"punctuation.separator.variable.toml\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.variable.begin.toml\"\n                    },\n                    \"2\": {\n                      \"patterns\": [\n                        {\n                          \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n                          \"name\": \"constant.character.escape.toml\"\n                        },\n                        {\n                          \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n                          \"name\": \"invalid.illegal.escape.toml\"\n                        }\n                      ]\n                    },\n                    \"3\": {\n                      \"name\": \"punctuation.definition.variable.end.toml\"\n                    }\n                  },\n                  \"match\": \"(\\\")((?:[^\\\"\\\\\\\\]|\\\\\\\\.)*)(\\\")\"\n                },\n                {\n                  \"captures\": {\n                    \"1\": {\n                      \"name\": \"punctuation.definition.variable.begin.toml\"\n                    },\n                    \"2\": {\n                      \"name\": \"punctuation.definition.variable.end.toml\"\n                    }\n                  },\n                  \"match\": \"(')[^']*(')\"\n                }\n              ]\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.key-value.toml\"\n            }\n          },\n          \"comment\": \"Dotted key\",\n          \"end\": \"(?<=\\\\S)(?<!=)|$\",\n          \"patterns\": [\n            {\n              \"include\": \"#primatives\"\n            }\n          ]\n        }\n      ]\n    },\n    \"primatives\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G\\\"\\\"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"\\\"{3,5}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.triple.double.toml\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape.toml\"\n            },\n            {\n              \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\\\\\n]\",\n              \"name\": \"invalid.illegal.escape.toml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.double.toml\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\([btnfr\\\"\\\\\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})\",\n              \"name\": \"constant.character.escape.toml\"\n            },\n            {\n              \"match\": \"\\\\\\\\[^btnfr\\\"\\\\\\\\]\",\n              \"name\": \"invalid.illegal.escape.toml\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G'''\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"'{3,5}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.triple.single.toml\"\n        },\n        {\n          \"begin\": \"\\\\G'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.toml\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.toml\"\n            }\n          },\n          \"name\": \"string.quoted.single.toml\"\n        },\n        {\n          \"match\": \"\\\\G(?x)\\n\\t\\t\\t\\t\\t\\t[0-9]{4}\\n\\t\\t\\t\\t\\t\\t-\\n\\t\\t\\t\\t\\t\\t(0[1-9]|1[012])\\n\\t\\t\\t\\t\\t\\t-\\n\\t\\t\\t\\t\\t\\t(?!00|3[2-9])[0-3][0-9]\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t[Tt ]\\n\\t\\t\\t\\t\\t\\t\\t(?!2[5-9])[0-2][0-9]\\n\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\\t[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\\t(?!6[1-9])[0-6][0-9]\\n\\t\\t\\t\\t\\t\\t\\t(\\\\.[0-9]+)?\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\tZ\\n\\t\\t\\t\\t\\t\\t\\t  | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.date.toml\"\n        },\n        {\n          \"match\": \"\\\\G(?x)\\n\\t\\t\\t\\t\\t\\t(?!2[5-9])[0-2][0-9]\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t[0-5][0-9]\\n\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t(?!6[1-9])[0-6][0-9]\\n\\t\\t\\t\\t\\t\\t(\\\\.[0-9]+)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.other.time.toml\"\n        },\n        {\n          \"match\": \"\\\\G(true|false)\",\n          \"name\": \"constant.language.boolean.toml\"\n        },\n        {\n          \"match\": \"\\\\G0x\\\\h(\\\\h|_\\\\h)*\",\n          \"name\": \"constant.numeric.hex.toml\"\n        },\n        {\n          \"match\": \"\\\\G0o[0-7]([0-7]|_[0-7])*\",\n          \"name\": \"constant.numeric.octal.toml\"\n        },\n        {\n          \"match\": \"\\\\G0b[01]([01]|_[01])*\",\n          \"name\": \"constant.numeric.binary.toml\"\n        },\n        {\n          \"match\": \"\\\\G[+-]?(inf|nan)\",\n          \"name\": \"constant.numeric.toml\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\G\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [+-]?\\n\\t\\t\\t\\t\\t\\t    (\\n\\t\\t\\t\\t\\t\\t\\t\\t0\\n\\t\\t\\t\\t\\t\\t\\t  | ([1-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t(?=[.eE])\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    \\\\.\\n\\t\\t\\t\\t\\t\\t    ([0-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [eE]\\n\\t\\t\\t\\t\\t\\t    ([+-]?[0-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.numeric.float.toml\"\n        },\n        {\n          \"match\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\G\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t    [+-]?\\n\\t\\t\\t\\t\\t\\t    (\\n\\t\\t\\t\\t\\t\\t\\t\\t0\\n\\t\\t\\t\\t\\t\\t\\t  | ([1-9](([0-9]|_[0-9])+)?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"name\": \"constant.numeric.integer.toml\"\n        },\n        {\n          \"begin\": \"\\\\G\\\\[\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.begin.toml\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.array.end.toml\"\n            }\n          },\n          \"name\": \"meta.array.toml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=[\\\"'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\\\[|\\\\{)\",\n              \"end\": \",|(?=])\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.array.toml\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#primatives\"\n                },\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#invalid\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#invalid\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\G\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.inline-table.begin.toml\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.inline-table.end.toml\"\n            }\n          },\n          \"name\": \"meta.inline-table.toml\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=\\\\S)\",\n              \"end\": \",|(?=})\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.inline-table.toml\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#key_pair\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.toml\",\n  \"uuid\": \"7DEF2EDB-5BB7-4DD2-9E78-3541A26B7923\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/tsx.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/TypeScript-TmLanguage/commit/0dfae8cc4807fecfbf8f1add095d9817df824c95\",\n  \"name\": \"tsx\",\n  \"scopeName\": \"source.tsx\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#shebang\"\n    }\n  ],\n  \"repository\": {\n    \"shebang\": {\n      \"name\": \"comment.line.shebang.tsx\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        }\n      }\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        },\n        {\n          \"name\": \"storage.modifier.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.loop.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.switch.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#paren-expression-possibly-arrow\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#instanceof-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.tsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.tsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.tsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-variable\"\n                },\n                {\n                  \"include\": \"#var-single-variable\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var.expr.tsx\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.tsx\"\n            }\n          },\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.tsx\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-const\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.tsx\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-const\"\n                },\n                {\n                  \"include\": \"#var-single-const\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx entity.name.function.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructuring-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.tsx\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element-const\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#array-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n        }\n      }\n    },\n    \"destructuring-variable-rest-const\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"object-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element-const\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element-const\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.tsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.tsx\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.tsx\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.tsx\",\n      \"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        }\n      },\n      \"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.definition.property.tsx entity.name.function.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.definiteassignment.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.definition.property.tsx variable.object.property.tsx\",\n          \"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.tsx\",\n          \"match\": \"\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.definiteassignment.tsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.function.tsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        },\n        \"6\": {\n          \"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n        }\n      },\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n        }\n      },\n      \"end\": \"(?=;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"name\": \"meta.definition.function.tsx entity.name.function.tsx\",\n      \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.tsx\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.new.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.property.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.tsx\",\n      \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.tsx entity.name.function.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.tsx\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.tsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.tsx\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.tsx\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.expression.in.tsx\"\n        }\n      },\n      \"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.type.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.optional.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.tsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#parameter-type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.class.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.interface.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#async-modifier\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"async-modifier\": {\n      \"name\": \"storage.modifier.async.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.enum.tsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.enum.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.tsx\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.tsx\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.namespace.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.type.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.alias.tsx\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.intrinsic.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.require.tsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.tsx\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.tsx\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.tsx\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.tsx\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.tsx\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.import.tsx\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.type.tsx\"\n        }\n      },\n      \"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n          \"end\": \"\\\\bfrom\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.from.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.default.tsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.tsx\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.tsx\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-assert-clause\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-assert-clause\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(assert)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.assert.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"meta.object-literal.key.tsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n        },\n        {\n          \"name\": \"punctuation.separator.key-value.tsx\",\n          \"match\": \":\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.default.tsx\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.import-export-all.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.readwrite.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.default.tsx\"\n            },\n            \"7\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.tsx\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.tsx\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\btype)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.alias.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"switch-expression.expr.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.tsx\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.tsx\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.tsx\"\n                }\n              },\n              \"end\": \"(?=:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(:)\\\\s*(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n                }\n              },\n              \"contentName\": \"meta.block.tsx\",\n              \"patterns\": [\n                {\n                  \"include\": \"#statements\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(:)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n                }\n              }\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"keyword.control.loop.tsx\",\n          \"match\": \"await\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#var-expr\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n          \"end\": \"(?=;|$|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.regexp.tsx\",\n              \"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.tsx\"\n                }\n              },\n              \"end\": \"(/)([dgimsuy]*)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#regexp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.tsx\",\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numeric-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.tsx\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.tsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.tsx\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.tsx punctuation.separator.key-value.tsx\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.tsx\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.tsx\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-inside-possibly-arrow-parens\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.tsx\"\n                }\n              },\n              \"end\": \"(?<=\\\\>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.tsx\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.tsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#paren-expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.tsx\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call-target\": {\n      \"patterns\": [\n        {\n          \"include\": \"#support-function-call-identifiers\"\n        },\n        {\n          \"name\": \"entity.name.function.tsx\",\n          \"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"function-call-optionals\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.tsx punctuation.accessor.optional.tsx\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.function-call.tsx keyword.operator.definiteassignment.tsx\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"support-function-call-identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.tsx\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.tsx\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"instanceof-expr\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.instanceof.tsx\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<))\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#possibly-arrow-return-type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow-with-typeparameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-inside-possibly-arrow-parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-inside-possibly-arrow-parens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx\"\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            }\n          },\n          \"end\": \"\\\\*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.tsx\"\n            }\n          },\n          \"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+)|(\\\\s+\\\\<))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.tsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.tsx\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.tsx\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.tsx\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.tsx\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.tsx\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.tsx\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.tsx\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.tsx\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.tsx\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.tsx\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.tsx\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n          \"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.expression.typeof.tsx\"\n        }\n      },\n      \"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.tsx\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.binary.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.octal.tsx\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.tsx\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"8\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"9\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"10\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"11\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"12\": {\n              \"name\": \"meta.delimiter.decimal.period.tsx\"\n            },\n            \"13\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            },\n            \"14\": {\n              \"name\": \"storage.type.numeric.bigint.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.promise.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.importmeta.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.target.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.tsx\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.tsx\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.tsx\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.tsx\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?=[,)])|(?==[^>])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.tsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.tsx\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.tsx\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.tsx\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.tsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"possibly-arrow-return-type\": {\n      \"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"contentName\": \"meta.arrow.tsx meta.return.type.arrow.tsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"arrow-return-type-body\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.tsx\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.tsx\",\n          \"match\": \"(=)(?!>)\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"name\": \"meta.type.parameters.tsx\",\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-arguments-body\"\n        }\n      ]\n    },\n    \"type-arguments-body\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.tsx\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.tsx\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.rest.tsx\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.tsx\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            }\n          },\n          \"end\": \"(?<=:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.tsx\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.tsx\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.tsx\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.tsx\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.constructor.tsx storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.constructor.tsx keyword.control.new.tsx\"\n            }\n          },\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.constructor.tsx\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.new.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.tsx\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.tsx\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.tsx\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.tsx\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"include\": \"#type-infer\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.tsx\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.tsx\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n        }\n      ]\n    },\n    \"type-infer\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n          \"name\": \"meta.type.infer.tsx\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.expression.infer.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.tsx\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.expression.extends.tsx\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.expression.is.tsx\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.tsx\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.type.asserts.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.is.tsx\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            },\n            \"4\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.tsx\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.tsx\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.tsx\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.tsx\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.tsx\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.tsx\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.tsx\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.tsx\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.tsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-call\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#support-function-call-identifiers\"\n                },\n                {\n                  \"name\": \"entity.name.function.tagged-template.tsx\",\n                  \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            }\n          },\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.tsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.tsx\"\n    },\n    \"type-string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template-type\"\n        }\n      ]\n    },\n    \"template-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.tsx\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.tsx\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.tsx\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-type-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-type-substitution-element\": {\n      \"name\": \"meta.template.expression.tsx\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.tsx\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.tsx\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.tsx\",\n          \"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.tsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.tsx\",\n          \"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.tsx\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.tsx\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            },\n            \"5\": {\n              \"name\": \"meta.assertion.look-behind.regexp\"\n            },\n            \"6\": {\n              \"name\": \"meta.assertion.negative-look-behind.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.tsx\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.tsx\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.tsx\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.tsx\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.tsx\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.tsx\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.tsx\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.tsx\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.tsx\"\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.tsx\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.tsx\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.tsx\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.tsx\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.tsx\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.tsx\",\n              \"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.tsx\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.tsx\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.tsx\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        },\n        {\n          \"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes-in-expression\"\n        },\n        {\n          \"include\": \"#jsx-tag-in-expression\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes-in-expression\": {\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        }\n      ]\n    },\n    \"jsx-tag-without-attributes\": {\n      \"name\": \"meta.tag.without-attributes.tsx\",\n      \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"end\": \"(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"5\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"contentName\": \"meta.jsx.children.tsx\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-children\"\n        }\n      ]\n    },\n    \"jsx-tag-in-expression\": {\n      \"begin\": \"(?x)\\n  (?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag\"\n        }\n      ]\n    },\n    \"jsx-tag\": {\n      \"name\": \"meta.tag.tsx\",\n      \"begin\": \"(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n      \"end\": \"(/>)|(?:(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.tsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.tsx\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.tsx\"\n        },\n        \"6\": {\n          \"name\": \"support.class.component.tsx\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.tag.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.begin.tsx\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.namespace.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.tsx\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.tag.tsx\"\n            },\n            \"5\": {\n              \"name\": \"support.class.component.tsx\"\n            }\n          },\n          \"end\": \"(?=[/]?>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#jsx-tag-attributes\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.tsx\"\n            }\n          },\n          \"end\": \"(?=</)\",\n          \"contentName\": \"meta.jsx.children.tsx\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsx-children\"\n            }\n          ]\n        }\n      ]\n    },\n    \"jsx-children\": {\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-tag-without-attributes\"\n        },\n        {\n          \"include\": \"#jsx-tag\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-evaluated-code\": {\n      \"contentName\": \"meta.embedded.expression.tsx\",\n      \"begin\": \"\\\\{\",\n      \"end\": \"\\\\}\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"jsx-entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.tsx\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.tsx\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.tsx\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.tsx\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes\": {\n      \"name\": \"meta.tag.attributes.tsx\",\n      \"begin\": \"\\\\s+\",\n      \"end\": \"(?=[/]?>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-name\"\n        },\n        {\n          \"include\": \"#jsx-tag-attribute-assignment\"\n        },\n        {\n          \"include\": \"#jsx-string-double-quoted\"\n        },\n        {\n          \"include\": \"#jsx-string-single-quoted\"\n        },\n        {\n          \"include\": \"#jsx-evaluated-code\"\n        },\n        {\n          \"include\": \"#jsx-tag-attributes-illegal\"\n        }\n      ]\n    },\n    \"jsx-tag-attribute-name\": {\n      \"match\": \"(?x)\\n  \\\\s*\\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\\n  ([_$[:alpha:]][-_$[:alnum:]]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.namespace.tsx\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.namespace.tsx\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.tsx\"\n        }\n      }\n    },\n    \"jsx-tag-attribute-assignment\": {\n      \"name\": \"keyword.operator.assignment.tsx\",\n      \"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n    },\n    \"jsx-string-double-quoted\": {\n      \"name\": \"string.quoted.double.tsx\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-string-single-quoted\": {\n      \"name\": \"string.quoted.single.tsx\",\n      \"begin\": \"'\",\n      \"end\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.tsx\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.tsx\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#jsx-entities\"\n        }\n      ]\n    },\n    \"jsx-tag-attributes-illegal\": {\n      \"name\": \"invalid.illegal.attribute.tsx\",\n      \"match\": \"\\\\S+\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/turtle.tmLanguage.json",
    "content": "{\n  \"name\": \"turtle\",\n  \"scopeName\": \"source.turtle\",\n  \"fileTypes\": [\"turtle\", \"ttl\"],\n  \"patterns\": [\n    {\n      \"include\": \"#rule-constraint\"\n    },\n    {\n      \"include\": \"#iriref\"\n    },\n    {\n      \"include\": \"#prefix\"\n    },\n    {\n      \"include\": \"#prefixed-name\"\n    },\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#special-predicate\"\n    },\n    {\n      \"include\": \"#literals\"\n    },\n    {\n      \"include\": \"#language-tag\"\n    }\n  ],\n  \"uuid\": \"230498230498sdfkj8909-34df-23dfs\",\n  \"repository\": {\n    \"prefix\": {\n      \"name\": \"keyword.operator.turtle\",\n      \"match\": \"(?i:@?base|@?prefix)\\\\s\"\n    },\n    \"iriref\": {\n      \"name\": \"entity.name.type.iriref.turtle\",\n      \"match\": \"<[^\\\\x20-\\\\x20<>\\\"{}|^`\\\\\\\\]*>\"\n    },\n    \"prefixed-name\": {\n      \"name\": \"constant.complex.turtle\",\n      \"match\": \"(\\\\w*:)(\\\\w*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.PNAME_NS.turtle\"\n        },\n        \"2\": {\n          \"name\": \"support.variable.PN_LOCAL.turtle\"\n        }\n      }\n    },\n    \"comment\": {\n      \"name\": \"comment.line.number-sign.turtle\",\n      \"match\": \"#.*$\"\n    },\n    \"special-predicate\": {\n      \"name\": \"meta.specialPredicate.turtle\",\n      \"match\": \"\\\\s(a)\\\\s\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.turtle\"\n        }\n      }\n    },\n    \"literals\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric\"\n        },\n        {\n          \"include\": \"#boolean\"\n        }\n      ]\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#single-squote-string-literal\"\n        },\n        {\n          \"include\": \"#single-dquote-string-literal\"\n        },\n        {\n          \"include\": \"#triple-squote-string-literal\"\n        },\n        {\n          \"include\": \"#triple-dquote-string-literal\"\n        },\n        {\n          \"include\": \"#triple-tick-string-literal\"\n        }\n      ]\n    },\n    \"single-squote-string-literal\": {\n      \"name\": \"string.quoted.single.turtle\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.turtle\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.turtle\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"single-dquote-string-literal\": {\n      \"name\": \"string.quoted.double.turtle\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.turtle\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"triple-squote-string-literal\": {\n      \"name\": \"string.quoted.triple.turtle\",\n      \"begin\": \"'''\",\n      \"end\": \"'''\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.turtle\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"triple-dquote-string-literal\": {\n      \"name\": \"string.quoted.triple.turtle\",\n      \"begin\": \"\\\"\\\"\\\"\",\n      \"end\": \"\\\"\\\"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.turtle\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"triple-tick-string-literal\": {\n      \"name\": \"string.quoted.triple.turtle\",\n      \"begin\": \"```\",\n      \"end\": \"```\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.turtle\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.turtle\",\n      \"match\": \"\\\\\\\\(x\\\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"numeric\": {\n      \"patterns\": [\n        {\n          \"include\": \"#integer\"\n        }\n      ]\n    },\n    \"integer\": {\n      \"name\": \"constant.numeric.turtle\",\n      \"match\": \"[+-]?(?:\\\\d+|[0-9]+\\\\.[0-9]*|\\\\.[0-9]+(?:[eE][+-]?\\\\d+)?)\"\n    },\n    \"boolean\": {\n      \"name\": \"constant.language.sparql\",\n      \"match\": \"\\\\b(?i:true|false)\\\\b\"\n    },\n    \"language-tag\": {\n      \"name\": \"meta.string-literal-language-tag.turtle\",\n      \"match\": \"@(\\\\w+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.class.turtle\"\n        }\n      }\n    },\n    \"rule-constraint\": {\n      \"name\": \"meta.rule-constraint.turtle\",\n      \"begin\": \"(rule:content) (\\\"\\\"\\\")\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"patterns\": [\n            {\n              \"include\": \"#prefixed-name\"\n            }\n          ]\n        },\n        \"2\": {\n          \"name\": \"string.quoted.triple.turtle\"\n        }\n      },\n      \"end\": \"\\\"\\\"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"string.quoted.triple.turtle\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.srs\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/twig.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"twig\", \"html.twig\"],\n  \"firstLineMatch\": \"<!(?i:DOCTYPE)|<(?i:html)|<\\\\?(?i:php)|\\\\{\\\\{|\\\\{%|\\\\{#\",\n  \"foldingStartMarker\": \"(?x)\\r\\n        (<(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)\\\\b.*?>\\r\\n        |<!--(?!.*--\\\\s*>)\\r\\n        |^<!--\\\\ \\\\#tminclude\\\\ (?>.*?-->)$\\r\\n        |\\\\{%\\\\s+(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\\r\\n        )\",\n  \"foldingStopMarker\": \"(?x)\\r\\n        (</(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)>\\r\\n        |^(?!.*?<!--).*?--\\\\s*>\\r\\n        |^<!--\\\\ end\\\\ tminclude\\\\ -->$\\r\\n        |\\\\{%\\\\s+end(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\\r\\n        )\",\n  \"keyEquivalent\": \"^~T\",\n  \"name\": \"twig\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)([a-zA-Z0-9:]++)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(>(<)/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"meta.tag.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml.html\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!--\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      },\n      \"end\": \"--\\\\s*>\",\n      \"name\": \"comment.block.html\",\n      \"patterns\": [\n        {\n          \"match\": \"--\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \">\",\n      \"name\": \"meta.tag.sgml.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.doctype.html\"\n            }\n          },\n          \"end\": \"(?=>)\",\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\"[^\\\">]*\\\"\",\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\",\n          \"name\": \"constant.other.inline-data.html\"\n        },\n        {\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\",\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#embedded-code\"\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:style))\\\\b(?![^>]*/>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"end\": \"(</)((?i:style))(>)(?:\\\\s*\\\\n)?\",\n      \"name\": \"source.css.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            }\n          },\n          \"end\": \"(?=</(?i:style))\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(?:^\\\\s+)?(<)((?i:script))\\\\b(?![^>]*/>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(?<=</(script|SCRIPT))(>)(?:\\\\s*\\\\n)?\",\n      \"endCaptures\": {\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"name\": \"source.js.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(?<!</(?:script|SCRIPT))(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.html\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.script.html\"\n            }\n          },\n          \"end\": \"(</)((?i:script))\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.js\"\n                }\n              },\n              \"match\": \"(//).*?((?=</script)|$\\\\n?)\",\n              \"name\": \"comment.line.double-slash.js\"\n            },\n            {\n              \"begin\": \"/\\\\*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.js\"\n                }\n              },\n              \"end\": \"\\\\*/|(?=</script)\",\n              \"name\": \"comment.block.js\"\n            },\n            {\n              \"include\": \"#php\"\n            },\n            {\n              \"include\": \"#twig-print-tag\"\n            },\n            {\n              \"include\": \"#twig-statement-tag\"\n            },\n            {\n              \"include\": \"#twig-comment-tag\"\n            },\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.structure.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"name\": \"meta.tag.structure.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.block.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.inline.any.html\"\n        }\n      },\n      \"end\": \"((?: ?/)?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.inline.any.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)([a-zA-Z0-9:]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.other.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"name\": \"meta.tag.other.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"match\": \"<>\",\n      \"name\": \"invalid.illegal.incomplete.html\"\n    },\n    {\n      \"match\": \"<\",\n      \"name\": \"invalid.illegal.bad-angle-bracket.html\"\n    },\n    {\n      \"include\": \"#twig-print-tag\"\n    },\n    {\n      \"include\": \"#twig-statement-tag\"\n    },\n    {\n      \"include\": \"#twig-comment-tag\"\n    }\n  ],\n  \"repository\": {\n    \"embedded-code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#ruby\"\n        },\n        {\n          \"include\": \"#php\"\n        },\n        {\n          \"include\": \"#twig-print-tag\"\n        },\n        {\n          \"include\": \"#twig-statement-tag\"\n        },\n        {\n          \"include\": \"#twig-comment-tag\"\n        },\n        {\n          \"include\": \"#python\"\n        }\n      ]\n    },\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          },\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"name\": \"constant.character.entity.html\"\n        },\n        {\n          \"match\": \"&\",\n          \"name\": \"invalid.illegal.bad-ampersand.html\"\n        }\n      ]\n    },\n    \"twig-print-tag\": {\n      \"begin\": \"\\\\{\\\\{-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"end\": \"-?\\\\}\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"name\": \"meta.tag.template.value.twig\",\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ]\n    },\n    \"twig-statement-tag\": {\n      \"begin\": \"\\\\{%-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"end\": \"-?%\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.tag.twig\"\n        }\n      },\n      \"name\": \"meta.tag.template.block.twig\",\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-keywords\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ]\n    },\n    \"twig-comment-tag\": {\n      \"begin\": \"\\\\{#-?\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.begin.twig\"\n        }\n      },\n      \"end\": \"-?#\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.end.twig\"\n        }\n      },\n      \"name\": \"comment.block.twig\"\n    },\n    \"twig-constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?i)(?<=[\\\\s\\\\[\\\\(\\\\{:,])(?:true|false|null|none)(?=[\\\\s\\\\)\\\\]\\\\}\\\\,])\",\n          \"name\": \"constant.language.twig\"\n        },\n        {\n          \"match\": \"(?<=[\\\\s\\\\[\\\\(\\\\{:,]|\\\\.\\\\.|\\\\*\\\\*)[0-9]+(?:\\\\.[0-9]+)?(?=[\\\\s\\\\)\\\\]\\\\}\\\\,]|\\\\.\\\\.|\\\\*\\\\*)\",\n          \"name\": \"constant.numeric.twig\"\n        }\n      ]\n    },\n    \"twig-operators\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.arithmetic.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(\\\\+|-|//?|%|\\\\*\\\\*?)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(=|~)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.bitwise.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(b-(?:and|or|xor))(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.comparison.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\\\\s)|%\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.twig\"\n            }\n          },\n          \"match\": \"(?<=\\\\s)(\\\\?|:|and|not|or)(?=\\\\s)\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.other.twig\"\n            }\n          },\n          \"match\": \"(?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)'\\\"])\\\\.\\\\.(?=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}'\\\"])\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.other.twig\"\n            }\n          },\n          \"match\": \"(?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\}\\\\)'\\\"])\\\\|(?=[a-zA-Z_\\\\x{7f}-\\\\x{ff}])\"\n        }\n      ]\n    },\n    \"twig-objects\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"variable.other.twig\"\n        }\n      },\n      \"match\": \"(?<=[\\\\s\\\\{\\\\[\\\\(:,])([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(?=[\\\\s\\\\}\\\\[\\\\]\\\\(\\\\)\\\\.\\\\|,:])\"\n    },\n    \"twig-properties\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            }\n          },\n          \"match\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}])\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*) (?=[\\\\.\\\\s\\\\|\\\\[\\\\)\\\\]\\\\}:,])\\r\\n                        \"\n        },\n        {\n          \"begin\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}])\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                        (\\\\()\\r\\n                        \",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.property.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.parameters.begin.twig\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.parameters.end.twig\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#twig-constants\"\n            },\n            {\n              \"include\": \"#twig-functions-warg\"\n            },\n            {\n              \"include\": \"#twig-functions\"\n            },\n            {\n              \"include\": \"#twig-macros\"\n            },\n            {\n              \"include\": \"#twig-objects\"\n            },\n            {\n              \"include\": \"#twig-properties\"\n            },\n            {\n              \"include\": \"#twig-filters-warg\"\n            },\n            {\n              \"include\": \"#twig-filters\"\n            },\n            {\n              \"include\": \"#twig-filters-warg-ud\"\n            },\n            {\n              \"include\": \"#twig-filters-ud\"\n            },\n            {\n              \"include\": \"#twig-strings\"\n            },\n            {\n              \"include\": \"#twig-arrays\"\n            }\n          ],\n          \"contentName\": \"meta.function.arguments.twig\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            },\n            \"7\": {\n              \"name\": \"punctuation.section.array.begin.twig\"\n            },\n            \"8\": {\n              \"name\": \"variable.other.property.twig\"\n            },\n            \"9\": {\n              \"name\": \"punctuation.section.array.end.twig\"\n            }\n          },\n          \"match\": \"(?x) (?<=[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]])\\r\\n                        (?:\\r\\n                            (\\\\[)('[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*')(\\\\])\\r\\n                            |(\\\\[)(\\\"[a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*\\\")(\\\\])\\r\\n                            |(\\\\[)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\])\\r\\n                        )\\r\\n                        \"\n        }\n      ]\n    },\n    \"twig-strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.twig\"\n            }\n          },\n          \"end\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.twig\"\n            }\n          },\n          \"name\": \"string.quoted.single.twig\"\n        },\n        {\n          \"begin\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.twig\"\n            }\n          },\n          \"end\": \"(?:(?<!\\\\\\\\)|(?<=\\\\\\\\\\\\\\\\))\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.twig\"\n            }\n          },\n          \"name\": \"string.quoted.double.twig\"\n        }\n      ]\n    },\n    \"twig-arrays\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\{\\\\[:,])\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.array.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        },\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.twig\"\n        }\n      ],\n      \"name\": \"meta.array.twig\"\n    },\n    \"twig-hashes\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\{\\\\[:,])\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.hash.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.hash.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-hashes\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"match\": \":\",\n          \"name\": \"punctuation.separator.key-value.twig\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.object.twig\"\n        }\n      ],\n      \"name\": \"meta.hash.twig\"\n    },\n    \"twig-keywords\": {\n      \"match\": \"(?<=\\\\s)((?:end)?(?:autoescape|form_theme|humanize|yaml_encode|yaml_dump|abbr_class|abbr_method|format_args|format_args_as_text|absolute_url|relative_path|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with|path|render|csrf_token|url|controller|form_errors|form_rest|form_start|form_end|form_widget|form_row|asset|encore_entry_link_tags|encore_entry_script_tags)(?=\\\\s)\",\n      \"name\": \"keyword.control.twig\"\n    },\n    \"twig-functions-warg\": {\n      \"begin\": \"(?<=[\\\\s\\\\(\\\\[\\\\{:,])(attribute|form_theme|humanize|yaml_encode|yaml_dump|abbr_class|abbr_method|format_args|format_args_as_text|absolute_url|relative_path|block|constant|cycle|date|divisible by|dump|include|max|min|parent|path|render|csrf_token|url|controller|form_errors|form_rest|form_start|form_end|form_widget|form_row|asset|encore_entry_link_tags|encore_entry_script_tags|random|range|same as|source|template_from_string)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-functions\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        }\n      },\n      \"match\": \"(?<=is\\\\s)(defined|empty|even|iterable|odd)\"\n    },\n    \"twig-macros\": {\n      \"begin\": \"(?x) (?<=[\\\\s\\\\(\\\\[\\\\{:,])\\r\\n                    ([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                    (?:\\r\\n                        (\\\\.)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\\r\\n                    )?\\r\\n                    (\\\\()\\r\\n                \",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.property.twig\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.property.twig\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-operators\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters-warg\": {\n      \"begin\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"support.function.twig\"\n        }\n      },\n      \"match\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\\\\s\\\\|\\\\]\\\\}\\\\):,]|\\\\.\\\\.|\\\\*\\\\*)\"\n    },\n    \"twig-filters-warg-ud\": {\n      \"begin\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)(\\\\()\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.other.twig\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.parameters.begin.twig\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.twig\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#twig-constants\"\n        },\n        {\n          \"include\": \"#twig-functions-warg\"\n        },\n        {\n          \"include\": \"#twig-functions\"\n        },\n        {\n          \"include\": \"#twig-macros\"\n        },\n        {\n          \"include\": \"#twig-objects\"\n        },\n        {\n          \"include\": \"#twig-properties\"\n        },\n        {\n          \"include\": \"#twig-filters-warg\"\n        },\n        {\n          \"include\": \"#twig-filters\"\n        },\n        {\n          \"include\": \"#twig-filters-warg-ud\"\n        },\n        {\n          \"include\": \"#twig-filters-ud\"\n        },\n        {\n          \"include\": \"#twig-strings\"\n        },\n        {\n          \"include\": \"#twig-arrays\"\n        },\n        {\n          \"include\": \"#twig-hashes\"\n        }\n      ],\n      \"contentName\": \"meta.function.arguments.twig\"\n    },\n    \"twig-filters-ud\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"meta.function-call.other.twig\"\n        }\n      },\n      \"match\": \"(?<=(?:[a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}\\\\]\\\\)\\\\'\\\\\\\"]\\\\|)|\\\\{%\\\\sfilter\\\\s)([a-zA-Z_\\\\x{7f}-\\\\x{ff}][a-zA-Z0-9_\\\\x{7f}-\\\\x{ff}]*)\"\n    },\n    \"php\": {\n      \"begin\": \"(?=(^\\\\s*)?<\\\\?)\",\n      \"end\": \"(?!(^\\\\s*)?<\\\\?)\",\n      \"patterns\": [\n        {\n          \"include\": \"source.php\"\n        }\n      ]\n    },\n    \"python\": {\n      \"begin\": \"(?:^\\\\s*)<\\\\?python(?!.*\\\\?>)\",\n      \"end\": \"\\\\?>(?:\\\\s*$\\\\n)?\",\n      \"name\": \"source.python.embedded.html\",\n      \"patterns\": [\n        {\n          \"include\": \"source.python\"\n        }\n      ]\n    },\n    \"ruby\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%+#\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.erb\"\n            }\n          },\n          \"end\": \"%>\",\n          \"name\": \"comment.block.erb\"\n        },\n        {\n          \"begin\": \"<%+(?!>)=?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby\"\n            }\n          },\n          \"end\": \"-?%>\",\n          \"name\": \"source.ruby.embedded.html\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.ruby\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?%>)\",\n              \"name\": \"comment.line.number-sign.ruby\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"<\\\\?r(?!>)=?\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.embedded.ruby.nitro\"\n            }\n          },\n          \"end\": \"-?\\\\?>\",\n          \"name\": \"source.ruby.nitro.embedded.html\",\n          \"patterns\": [\n            {\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.comment.ruby.nitro\"\n                }\n              },\n              \"match\": \"(#).*?(?=-?\\\\?>)\",\n              \"name\": \"comment.line.number-sign.ruby.nitro\"\n            },\n            {\n              \"include\": \"source.ruby\"\n            }\n          ]\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.double.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"name\": \"string.quoted.single.html\",\n      \"patterns\": [\n        {\n          \"include\": \"#embedded-code\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"match\": \"\\\\b([a-zA-Z\\\\-:]+)\",\n      \"name\": \"entity.other.attribute-name.html\"\n    },\n    \"tag-id-attribute\": {\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"end\": \"(?<='|\\\")\",\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.double.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"name\": \"string.quoted.single.html\",\n          \"patterns\": [\n            {\n              \"include\": \"#embedded-code\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#embedded-code\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"text.html.twig\",\n  \"uuid\": \"C220B028-86FF-44CB-8A59-27937FC83730\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/typescript.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScript.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/microsoft/TypeScript-TmLanguage/commit/0dfae8cc4807fecfbf8f1add095d9817df824c95\",\n  \"name\": \"typescript\",\n  \"scopeName\": \"source.ts\",\n  \"patterns\": [\n    {\n      \"include\": \"#directives\"\n    },\n    {\n      \"include\": \"#statements\"\n    },\n    {\n      \"include\": \"#shebang\"\n    }\n  ],\n  \"repository\": {\n    \"shebang\": {\n      \"name\": \"comment.line.shebang.ts\",\n      \"match\": \"\\\\A(#!).*(?=$)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        }\n      }\n    },\n    \"statements\": {\n      \"patterns\": [\n        {\n          \"include\": \"#declaration\"\n        },\n        {\n          \"include\": \"#control-statement\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#label\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#var-expr\"\n        },\n        {\n          \"include\": \"#function-declaration\"\n        },\n        {\n          \"include\": \"#class-declaration\"\n        },\n        {\n          \"include\": \"#interface-declaration\"\n        },\n        {\n          \"include\": \"#enum-declaration\"\n        },\n        {\n          \"include\": \"#namespace-declaration\"\n        },\n        {\n          \"include\": \"#type-alias-declaration\"\n        },\n        {\n          \"include\": \"#import-equals-declaration\"\n        },\n        {\n          \"include\": \"#import-declaration\"\n        },\n        {\n          \"include\": \"#export-declaration\"\n        },\n        {\n          \"name\": \"storage.modifier.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"control-statement\": {\n      \"patterns\": [\n        {\n          \"include\": \"#switch-statement\"\n        },\n        {\n          \"include\": \"#for-loop\"\n        },\n        {\n          \"name\": \"keyword.control.trycatch.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.loop.ts\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.label.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.control.loop.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.flow.ts\"\n            }\n          },\n          \"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.control.switch.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#if-statement\"\n        },\n        {\n          \"name\": \"keyword.control.conditional.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.with.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.control.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.other.debugger.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"label\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#decl-block\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.label.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"expressionWithoutIdentifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#function-expression\"\n        },\n        {\n          \"include\": \"#class-expression\"\n        },\n        {\n          \"include\": \"#arrow-function\"\n        },\n        {\n          \"include\": \"#paren-expression-possibly-arrow\"\n        },\n        {\n          \"include\": \"#cast\"\n        },\n        {\n          \"include\": \"#ternary-expression\"\n        },\n        {\n          \"include\": \"#new-expr\"\n        },\n        {\n          \"include\": \"#instanceof-expr\"\n        },\n        {\n          \"include\": \"#object-literal\"\n        },\n        {\n          \"include\": \"#expression-operators\"\n        },\n        {\n          \"include\": \"#function-call\"\n        },\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#paren-expression\"\n        }\n      ]\n    },\n    \"expressionPunctuations\": {\n      \"patterns\": [\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        }\n      ]\n    },\n    \"decorator\": {\n      \"name\": \"meta.decorator.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.decorator.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\s)\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"var-expr\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var.expr.ts\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.ts\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.ts\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.ts\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-variable\"\n            },\n            {\n              \"include\": \"#var-single-variable\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.ts\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-variable\"\n                },\n                {\n                  \"include\": \"#var-single-variable\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var.expr.ts\",\n          \"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.ts\"\n            }\n          },\n          \"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.export.ts\"\n                },\n                \"2\": {\n                  \"name\": \"storage.modifier.ts\"\n                },\n                \"3\": {\n                  \"name\": \"storage.type.ts\"\n                }\n              },\n              \"end\": \"(?=\\\\S)\"\n            },\n            {\n              \"include\": \"#destructuring-const\"\n            },\n            {\n              \"include\": \"#var-single-const\"\n            },\n            {\n              \"include\": \"#variable-initializer\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.separator.comma.ts\"\n                }\n              },\n              \"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#single-line-comment-consuming-line-ending\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#destructuring-const\"\n                },\n                {\n                  \"include\": \"#var-single-const\"\n                },\n                {\n                  \"include\": \"#punctuation-comma\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts entity.name.function.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.constant.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.readwrite.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.definiteassignment.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.var-single-variable.expr.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.definition.variable.ts variable.other.constant.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#var-single-variable-type-annotation\"\n            }\n          ]\n        }\n      ]\n    },\n    \"var-single-variable-type-annotation\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#comment\"\n        }\n      ]\n    },\n    \"destructuring-variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"destructuring-const\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.object-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.array-binding-pattern-variable.ts\",\n          \"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n          \"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#array-binding-pattern-const\"\n            },\n            {\n              \"include\": \"#type-annotation\"\n            },\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#binding-element-const\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"object-binding-element-propertyName\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n      \"end\": \"(:)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.destructuring.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"variable.object.property.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern\"\n        },\n        {\n          \"include\": \"#array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"binding-element-const\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#object-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#array-binding-pattern-const\"\n        },\n        {\n          \"include\": \"#destructuring-variable-rest-const\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-variable-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.ts variable.other.readwrite.ts\"\n        }\n      }\n    },\n    \"destructuring-variable-rest-const\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.definition.variable.ts variable.other.constant.ts\"\n        }\n      }\n    },\n    \"object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element\"\n        }\n      ]\n    },\n    \"object-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-binding-element-const\"\n        }\n      ]\n    },\n    \"array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"array-binding-pattern-const\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#binding-element-const\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-name\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"destructuring-parameter\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.parameter.object-binding-pattern.ts\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-object-binding-element\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.paramter.array-binding-pattern.ts\",\n          \"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n            }\n          },\n          \"end\": \"\\\\]\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parameter-binding-element\"\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-object-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#object-binding-element-propertyName\"\n            },\n            {\n              \"include\": \"#parameter-binding-element\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"parameter-binding-element\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#regex\"\n        },\n        {\n          \"include\": \"#parameter-object-binding-pattern\"\n        },\n        {\n          \"include\": \"#parameter-array-binding-pattern\"\n        },\n        {\n          \"include\": \"#destructuring-parameter-rest\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        }\n      ]\n    },\n    \"destructuring-parameter-rest\": {\n      \"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"variable.parameter.ts\"\n        }\n      }\n    },\n    \"parameter-object-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.object.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-object-binding-element\"\n        }\n      ]\n    },\n    \"parameter-array-binding-pattern\": {\n      \"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.rest.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.binding-pattern.array.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#parameter-binding-element\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"field-declaration\": {\n      \"name\": \"meta.field.declaration.ts\",\n      \"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        }\n      },\n      \"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.definition.property.ts entity.name.function.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.definiteassignment.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.definition.property.ts variable.object.property.ts\",\n          \"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.ts\",\n          \"match\": \"\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.definiteassignment.ts\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"variable-initializer\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<!=|!)(=)(?!=)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-declaration\": {\n      \"name\": \"meta.function.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.function.ts\"\n        },\n        \"5\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        },\n        \"6\": {\n          \"name\": \"meta.definition.function.ts entity.name.function.ts\"\n        }\n      },\n      \"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-expression\": {\n      \"name\": \"meta.function.expression.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.function.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        },\n        \"4\": {\n          \"name\": \"meta.definition.function.ts entity.name.function.ts\"\n        }\n      },\n      \"end\": \"(?=;)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#function-name\"\n        },\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#function-body\"\n        }\n      ]\n    },\n    \"function-name\": {\n      \"name\": \"meta.definition.function.ts entity.name.function.ts\",\n      \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n    },\n    \"function-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#function-parameters\"\n        },\n        {\n          \"include\": \"#return-type\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"name\": \"keyword.generator.asterisk.ts\",\n          \"match\": \"\\\\*\"\n        }\n      ]\n    },\n    \"method-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.new.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"5\": {\n              \"name\": \"storage.type.property.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            },\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        }\n      ]\n    },\n    \"object-literal-method-declaration\": {\n      \"name\": \"meta.method.declaration.ts\",\n      \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.async.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.property.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.generator.asterisk.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#method-declaration-name\"\n        },\n        {\n          \"include\": \"#function-body\"\n        },\n        {\n          \"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.property.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\(|\\\\<)\",\n          \"patterns\": [\n            {\n              \"include\": \"#method-declaration-name\"\n            }\n          ]\n        }\n      ]\n    },\n    \"method-declaration-name\": {\n      \"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n      \"end\": \"(?=\\\\(|\\\\<)\",\n      \"patterns\": [\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"name\": \"meta.definition.method.ts entity.name.function.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        },\n        {\n          \"name\": \"keyword.operator.optional.ts\",\n          \"match\": \"\\\\?\"\n        }\n      ]\n    },\n    \"arrow-function\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            }\n          },\n          \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            },\n            {\n              \"include\": \"#function-parameters\"\n            },\n            {\n              \"include\": \"#arrow-return-type\"\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.arrow.ts\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#decl-block\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"indexer-declaration\": {\n      \"name\": \"meta.indexer.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"2\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"3\": {\n          \"name\": \"variable.parameter.ts\"\n        }\n      },\n      \"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.optional.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-annotation\"\n        }\n      ]\n    },\n    \"indexer-mapped-type-declaration\": {\n      \"name\": \"meta.indexer.mappedtype.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.modifier.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.ts\"\n        },\n        \"5\": {\n          \"name\": \"keyword.operator.expression.in.ts\"\n        }\n      },\n      \"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ts\"\n        },\n        \"2\": {\n          \"name\": \"keyword.operator.type.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.operator.optional.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"function-parameters\": {\n      \"name\": \"meta.parameters.ts\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.parameters.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#function-parameters-body\"\n        }\n      ]\n    },\n    \"function-parameters-body\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"include\": \"#parameter-name\"\n        },\n        {\n          \"include\": \"#parameter-type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ts\",\n          \"match\": \",\"\n        }\n      ]\n    },\n    \"class-declaration\": {\n      \"name\": \"meta.class.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.class.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-expression\": {\n      \"name\": \"meta.class.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.type.class.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#class-declaration-or-expression-patterns\"\n        }\n      ]\n    },\n    \"class-declaration-or-expression-patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.class.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"interface-declaration\": {\n      \"name\": \"meta.interface.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.interface.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.interface.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#class-or-interface-body\"\n        }\n      ]\n    },\n    \"class-or-interface-heritage\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"storage.modifier.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\{)\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#class-or-interface-heritage\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.inherited-class.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"class-or-interface-body\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"begin\": \"(?<=:)\\\\s*\",\n          \"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"include\": \"#access-modifier\"\n        },\n        {\n          \"include\": \"#property-accessor\"\n        },\n        {\n          \"include\": \"#async-modifier\"\n        },\n        {\n          \"include\": \"#after-operator-block-as-object-literal\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        },\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        }\n      ]\n    },\n    \"access-modifier\": {\n      \"name\": \"storage.modifier.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"property-accessor\": {\n      \"name\": \"storage.type.property.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"async-modifier\": {\n      \"name\": \"storage.modifier.async.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"enum-declaration\": {\n      \"name\": \"meta.enum.declaration.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.enum.ts\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.type.enum.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"end\": \"\\\\}\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"variable.other.enummember.ts\"\n                }\n              },\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n              \"end\": \"(?=,|\\\\}|$)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#string\"\n                },\n                {\n                  \"include\": \"#array-literal\"\n                },\n                {\n                  \"include\": \"#comment\"\n                },\n                {\n                  \"include\": \"#variable-initializer\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#punctuation-comma\"\n            }\n          ]\n        }\n      ]\n    },\n    \"namespace-declaration\": {\n      \"name\": \"meta.namespace.declaration.ts\",\n      \"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.namespace.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"entity.name.type.module.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"include\": \"#decl-block\"\n        }\n      ]\n    },\n    \"type-alias-declaration\": {\n      \"name\": \"meta.type.declaration.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"storage.type.type.ts\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.type.alias.ts\"\n        }\n      },\n      \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.intrinsic.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(=)\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-equals-declaration\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.import-equals.external.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.ts\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.require.ts\"\n            },\n            \"8\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.import-equals.internal.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.import.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.type.ts\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            }\n          },\n          \"end\": \"(?=;|$|^)\",\n          \"patterns\": [\n            {\n              \"include\": \"#single-line-comment-consuming-line-ending\"\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.type.module.ts\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.accessor.ts\"\n                },\n                \"3\": {\n                  \"name\": \"punctuation.accessor.optional.ts\"\n                }\n              }\n            },\n            {\n              \"name\": \"variable.other.readwrite.ts\",\n              \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-declaration\": {\n      \"name\": \"meta.import.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.export.ts\"\n        },\n        \"2\": {\n          \"name\": \"storage.modifier.ts\"\n        },\n        \"3\": {\n          \"name\": \"keyword.control.import.ts\"\n        },\n        \"4\": {\n          \"name\": \"keyword.control.type.ts\"\n        }\n      },\n      \"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n      \"patterns\": [\n        {\n          \"include\": \"#single-line-comment-consuming-line-ending\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n          \"end\": \"\\\\bfrom\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.control.from.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#import-export-declaration\"\n        }\n      ]\n    },\n    \"export-declaration\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"3\": {\n              \"name\": \"storage.type.namespace.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.module.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.export.default.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.assignment.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.control.default.ts\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#interface-declaration\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.export.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b)))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.export.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.type.ts\"\n            }\n          },\n          \"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n          \"patterns\": [\n            {\n              \"include\": \"#import-export-declaration\"\n            }\n          ]\n        }\n      ]\n    },\n    \"import-export-declaration\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#import-export-block\"\n        },\n        {\n          \"name\": \"keyword.control.from.ts\",\n          \"match\": \"\\\\bfrom\\\\b\"\n        },\n        {\n          \"include\": \"#import-export-assert-clause\"\n        },\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-assert-clause\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(assert)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.assert.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"name\": \"meta.object-literal.key.ts\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n        },\n        {\n          \"name\": \"punctuation.separator.key-value.ts\",\n          \"match\": \":\"\n        }\n      ]\n    },\n    \"import-export-block\": {\n      \"name\": \"meta.block.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#import-export-clause\"\n        }\n      ]\n    },\n    \"import-export-clause\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.default.ts\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.import-export-all.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.readwrite.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"6\": {\n              \"name\": \"keyword.control.default.ts\"\n            },\n            \"7\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"constant.language.import-export-all.ts\",\n          \"match\": \"\\\\*\"\n        },\n        {\n          \"name\": \"keyword.control.default.ts\",\n          \"match\": \"\\\\b(default)\\\\b\"\n        },\n        {\n          \"match\": \"(?:(\\\\btype)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.type.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.readwrite.alias.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"switch-statement\": {\n      \"name\": \"switch-statement.expr.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"switch-expression.expr.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.switch.ts\"\n            },\n            \"2\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"switch-block.expr.ts\",\n          \"begin\": \"\\\\{\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.block.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\})\",\n          \"patterns\": [\n            {\n              \"name\": \"case-clause.expr.ts\",\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.switch.ts\"\n                }\n              },\n              \"end\": \"(?=:)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(:)\\\\s*(\\\\{)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"case-clause.expr.ts punctuation.definition.section.case-statement.ts\"\n                },\n                \"2\": {\n                  \"name\": \"meta.block.ts punctuation.definition.block.ts\"\n                }\n              },\n              \"end\": \"\\\\}\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.block.ts punctuation.definition.block.ts\"\n                }\n              },\n              \"contentName\": \"meta.block.ts\",\n              \"patterns\": [\n                {\n                  \"include\": \"#statements\"\n                }\n              ]\n            },\n            {\n              \"match\": \"(:)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"case-clause.expr.ts punctuation.definition.section.case-statement.ts\"\n                }\n              }\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for-loop\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.control.loop.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\))\",\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"keyword.control.loop.ts\",\n          \"match\": \"await\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#var-expr\"\n            },\n            {\n              \"include\": \"#expression\"\n            },\n            {\n              \"include\": \"#punctuation-semicolon\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if-statement\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n          \"end\": \"(?=;|$|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"keyword.control.conditional.ts\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression\"\n                }\n              ]\n            },\n            {\n              \"name\": \"string.regexp.ts\",\n              \"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.string.begin.ts\"\n                }\n              },\n              \"end\": \"(/)([dgimsuy]*)\",\n              \"endCaptures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.string.end.ts\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.other.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#regexp\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#statements\"\n            }\n          ]\n        }\n      ]\n    },\n    \"decl-block\": {\n      \"name\": \"meta.block.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#statements\"\n        }\n      ]\n    },\n    \"after-operator-block-as-object-literal\": {\n      \"name\": \"meta.objectliteral.ts\",\n      \"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-literal\": {\n      \"name\": \"meta.objectliteral.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#object-member\"\n        }\n      ]\n    },\n    \"object-member\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#object-literal-method-declaration\"\n        },\n        {\n          \"name\": \"meta.object.member.ts meta.object-literal.key.ts\",\n          \"begin\": \"(?=\\\\[)\",\n          \"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#array-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts meta.object-literal.key.ts\",\n          \"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n          \"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as)\\\\s+))))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts meta.object-literal.key.ts\",\n          \"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n          \"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#numeric-literal\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.method.declaration.ts\",\n          \"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n          \"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-body\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            },\n            \"1\": {\n              \"name\": \"constant.numeric.decimal.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            },\n            \"1\": {\n              \"name\": \"entity.name.function.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.ts\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.readwrite.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            }\n          },\n          \"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n          \"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n          \"patterns\": [\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.object.member.ts\",\n          \"begin\": \":\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.object-literal.key.ts punctuation.separator.key-value.ts\"\n            }\n          },\n          \"end\": \"(?=,|\\\\})\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.ts\"\n                }\n              },\n              \"end\": \"(?<=\\\\))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                },\n                {\n                  \"begin\": \"\\\\(\",\n                  \"beginCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.ts\"\n                    }\n                  },\n                  \"end\": \"\\\\)\",\n                  \"endCaptures\": {\n                    \"0\": {\n                      \"name\": \"meta.brace.round.ts\"\n                    }\n                  },\n                  \"patterns\": [\n                    {\n                      \"include\": \"#expression-inside-possibly-arrow-parens\"\n                    }\n                  ]\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.ts\"\n                },\n                \"2\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.async.ts\"\n                }\n              },\n              \"end\": \"(?<=\\\\>)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#type-parameters\"\n                }\n              ]\n            },\n            {\n              \"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"meta.brace.round.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#expression-inside-possibly-arrow-parens\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#possibly-arrow-return-type\"\n            },\n            {\n              \"include\": \"#expression\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"ternary-expression\": {\n      \"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.ts\"\n        }\n      },\n      \"end\": \"\\\\s*(:)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.ternary.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"function-call\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.ts\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            },\n            {\n              \"include\": \"#paren-expression\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n          \"patterns\": [\n            {\n              \"name\": \"meta.function-call.ts\",\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n              \"patterns\": [\n                {\n                  \"include\": \"#function-call-target\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#function-call-optionals\"\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function-call-target\": {\n      \"patterns\": [\n        {\n          \"include\": \"#support-function-call-identifiers\"\n        },\n        {\n          \"name\": \"entity.name.function.ts\",\n          \"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n        }\n      ]\n    },\n    \"function-call-optionals\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.function-call.ts punctuation.accessor.optional.ts\",\n          \"match\": \"\\\\?\\\\.\"\n        },\n        {\n          \"name\": \"meta.function-call.ts keyword.operator.definiteassignment.ts\",\n          \"match\": \"\\\\!\"\n        }\n      ]\n    },\n    \"support-function-call-identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#literal\"\n        },\n        {\n          \"include\": \"#support-objects\"\n        },\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"include\": \"#punctuation-accessor\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.ts\",\n          \"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n        }\n      ]\n    },\n    \"new-expr\": {\n      \"name\": \"new.expr.ts\",\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.new.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"instanceof-expr\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.expression.instanceof.ts\"\n        }\n      },\n      \"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<))\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.async.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#possibly-arrow-return-type\"\n        }\n      ]\n    },\n    \"paren-expression-possibly-arrow-with-typeparameters\": {\n      \"patterns\": [\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"meta.brace.round.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#expression-inside-possibly-arrow-parens\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-inside-possibly-arrow-parens\": {\n      \"patterns\": [\n        {\n          \"include\": \"#expressionWithoutIdentifiers\"\n        },\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#string\"\n        },\n        {\n          \"include\": \"#decorator\"\n        },\n        {\n          \"include\": \"#destructuring-parameter\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"include\": \"#variable-initializer\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ts\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#identifiers\"\n        },\n        {\n          \"include\": \"#expressionPunctuations\"\n        }\n      ]\n    },\n    \"paren-expression\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"cast\": {\n      \"patterns\": [\n        {\n          \"name\": \"cast.expr.ts\",\n          \"match\": \"\\\\s*(<)\\\\s*(const)\\\\s*(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"3\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"cast.expr.ts\",\n          \"begin\": \"(?:(?<!\\\\+\\\\+|--)(?<=^return|[^\\\\._$[:alnum:]]return|^throw|[^\\\\._$[:alnum:]]throw|^yield|[^\\\\._$[:alnum:]]yield|^await|[^\\\\._$[:alnum:]]await|^default|[^\\\\._$[:alnum:]]default|[=(,:>*?\\\\&\\\\|\\\\^]|[^_$[:alnum:]](?:\\\\+\\\\+|\\\\-\\\\-)|[^\\\\+]\\\\+|[^\\\\-]\\\\-))\\\\s*(<)(?!<?\\\\=)(?!\\\\s*$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"end\": \"(\\\\>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"cast.expr.ts\",\n          \"begin\": \"(?:(?<=^))\\\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"end\": \"(\\\\>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.brace.angle.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"expression-operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.flow.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.ts\"\n            }\n          },\n          \"end\": \"\\\\*\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.flow.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.generator.asterisk.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.expression.delete.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.in.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.of.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.instanceof.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.new.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.void.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.control.as.ts\"\n            }\n          },\n          \"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+)|(\\\\s+\\\\<))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"keyword.operator.spread.ts\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.ts\",\n          \"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.compound.bitwise.ts\",\n          \"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.shift.ts\",\n          \"match\": \"<<|>>>|>>\"\n        },\n        {\n          \"name\": \"keyword.operator.comparison.ts\",\n          \"match\": \"===|!==|==|!=\"\n        },\n        {\n          \"name\": \"keyword.operator.relational.ts\",\n          \"match\": \"<=|>=|<>|<|>\"\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.logical.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.assignment.compound.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.arithmetic.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.logical.ts\",\n          \"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n        },\n        {\n          \"name\": \"keyword.operator.bitwise.ts\",\n          \"match\": \"\\\\&|~|\\\\^|\\\\|\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ts\",\n          \"match\": \"\\\\=\"\n        },\n        {\n          \"name\": \"keyword.operator.decrement.ts\",\n          \"match\": \"--\"\n        },\n        {\n          \"name\": \"keyword.operator.increment.ts\",\n          \"match\": \"\\\\+\\\\+\"\n        },\n        {\n          \"name\": \"keyword.operator.arithmetic.ts\",\n          \"match\": \"%|\\\\*|/|-|\\\\+\"\n        },\n        {\n          \"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n          \"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.assignment.compound.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.arithmetic.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"typeof-operator\": {\n      \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"keyword.operator.expression.typeof.ts\"\n        }\n      },\n      \"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\\\\b))\",\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ]\n    },\n    \"literal\": {\n      \"patterns\": [\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#boolean-literal\"\n        },\n        {\n          \"include\": \"#null-literal\"\n        },\n        {\n          \"include\": \"#undefined-literal\"\n        },\n        {\n          \"include\": \"#numericConstant-literal\"\n        },\n        {\n          \"include\": \"#array-literal\"\n        },\n        {\n          \"include\": \"#this-literal\"\n        },\n        {\n          \"include\": \"#super-literal\"\n        }\n      ]\n    },\n    \"array-literal\": {\n      \"name\": \"meta.array.literal.ts\",\n      \"begin\": \"\\\\s*(\\\\[)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"numeric-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric.hex.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.binary.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"constant.numeric.octal.ts\",\n          \"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"constant.numeric.decimal.ts\"\n            },\n            \"1\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"3\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"5\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"6\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"7\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"8\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"9\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"10\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"11\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"12\": {\n              \"name\": \"meta.delimiter.decimal.period.ts\"\n            },\n            \"13\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            },\n            \"14\": {\n              \"name\": \"storage.type.numeric.bigint.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"boolean-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.true.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.boolean.false.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"null-literal\": {\n      \"name\": \"constant.language.null.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"this-literal\": {\n      \"name\": \"variable.language.this.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n    },\n    \"super-literal\": {\n      \"name\": \"variable.language.super.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n    },\n    \"undefined-literal\": {\n      \"name\": \"constant.language.undefined.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"numericConstant-literal\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.nan.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"constant.language.infinity.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"support-objects\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.language.arguments.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"name\": \"support.class.promise.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.import.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.importmeta.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.new.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.variable.property.target.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"support.variable.property.ts\"\n            },\n            \"4\": {\n              \"name\": \"support.constant.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.type.object.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"support.type.object.module.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"5\": {\n              \"name\": \"support.type.object.module.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"identifiers\": {\n      \"patterns\": [\n        {\n          \"include\": \"#object-identifiers\"\n        },\n        {\n          \"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.property.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.property.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"variable.other.constant.ts\",\n          \"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n        },\n        {\n          \"name\": \"variable.other.readwrite.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"object-identifiers\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.class.ts\",\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n        },\n        {\n          \"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.constant.object.property.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.object.property.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"variable.other.constant.object.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.object.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.ts\",\n          \"begin\": \"(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=$|^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.annotation.ts\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$))|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parameter-type-annotation\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.annotation.ts\",\n          \"begin\": \"(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?=[,)])|(?==[^>])\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.return.type.ts\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.return.type.ts\",\n          \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.annotation.ts\"\n            }\n          },\n          \"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"arrow-return-type\": {\n      \"name\": \"meta.return.type.arrow.ts\",\n      \"begin\": \"(?<=\\\\))\\\\s*(:)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.operator.type.annotation.ts\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"possibly-arrow-return-type\": {\n      \"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts\"\n        }\n      },\n      \"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n      \"contentName\": \"meta.arrow.ts meta.return.type.arrow.ts\",\n      \"patterns\": [\n        {\n          \"include\": \"#arrow-return-type-body\"\n        }\n      ]\n    },\n    \"arrow-return-type-body\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-parameters\": {\n      \"name\": \"meta.type.parameters.ts\",\n      \"begin\": \"(<)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.ts\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.typeparameters.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"name\": \"storage.modifier.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"name\": \"keyword.operator.assignment.ts\",\n          \"match\": \"(=)(?!>)\"\n        }\n      ]\n    },\n    \"type-arguments\": {\n      \"name\": \"meta.type.parameters.ts\",\n      \"begin\": \"\\\\<\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.typeparameters.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type-arguments-body\"\n        }\n      ]\n    },\n    \"type-arguments-body\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#type-string\"\n        },\n        {\n          \"include\": \"#numeric-literal\"\n        },\n        {\n          \"include\": \"#type-primitive\"\n        },\n        {\n          \"include\": \"#type-builtin-literals\"\n        },\n        {\n          \"include\": \"#type-parameters\"\n        },\n        {\n          \"include\": \"#type-tuple\"\n        },\n        {\n          \"include\": \"#type-object\"\n        },\n        {\n          \"include\": \"#type-operators\"\n        },\n        {\n          \"include\": \"#type-conditional\"\n        },\n        {\n          \"include\": \"#type-fn-type-parameters\"\n        },\n        {\n          \"include\": \"#type-paren-or-function-parameters\"\n        },\n        {\n          \"include\": \"#type-function-return-type\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-name\"\n        }\n      ]\n    },\n    \"type-primitive\": {\n      \"name\": \"support.type.primitive.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-builtin-literals\": {\n      \"name\": \"support.type.builtin.ts\",\n      \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n    },\n    \"type-tuple\": {\n      \"name\": \"meta.type.tuple.ts\",\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.square.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.rest.ts\",\n          \"match\": \"\\\\.\\\\.\\\\.\"\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.label.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.label.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type\"\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        }\n      ]\n    },\n    \"type-object\": {\n      \"name\": \"meta.object.type.ts\",\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.block.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#method-declaration\"\n        },\n        {\n          \"include\": \"#indexer-declaration\"\n        },\n        {\n          \"include\": \"#indexer-mapped-type-declaration\"\n        },\n        {\n          \"include\": \"#field-declaration\"\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"begin\": \"\\\\.\\\\.\\\\.\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.spread.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#punctuation-comma\"\n        },\n        {\n          \"include\": \"#punctuation-semicolon\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-conditional\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            }\n          },\n          \"end\": \"(?<=:)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\?\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.ts\"\n                }\n              },\n              \"end\": \":\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.operator.ternary.ts\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#type\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-paren-or-function-parameters\": {\n      \"name\": \"meta.type.paren.cover.ts\",\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"meta.brace.round.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|((<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?[\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.rest.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"4\": {\n              \"name\": \"variable.parameter.ts\"\n            },\n            \"5\": {\n              \"name\": \"keyword.operator.optional.ts\"\n            }\n          }\n        },\n        {\n          \"include\": \"#type-annotation\"\n        },\n        {\n          \"name\": \"punctuation.separator.parameter.ts\",\n          \"match\": \",\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-fn-type-parameters\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.constructor.ts storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.constructor.ts keyword.control.new.ts\"\n            }\n          },\n          \"end\": \"(?<=>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"include\": \"#type-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.constructor.ts\",\n          \"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.modifier.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.control.new.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.ts\",\n          \"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"include\": \"#function-parameters\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type\": {\n      \"patterns\": [\n        {\n          \"name\": \"meta.type.function.return.ts\",\n          \"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.type.function.return.ts\",\n          \"begin\": \"=>\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.function.arrow.ts\"\n            }\n          },\n          \"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-function-return-type-core\"\n            }\n          ]\n        }\n      ]\n    },\n    \"type-function-return-type-core\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#type-predicate-operator\"\n        },\n        {\n          \"include\": \"#type\"\n        }\n      ]\n    },\n    \"type-operators\": {\n      \"patterns\": [\n        {\n          \"include\": \"#typeof-operator\"\n        },\n        {\n          \"include\": \"#type-infer\"\n        },\n        {\n          \"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.ts\"\n            }\n          },\n          \"end\": \"(?<=\\\\})\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-object\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"[&|]\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.operator.type.ts\"\n            }\n          },\n          \"end\": \"(?=\\\\S)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.keyof.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.ternary.ts\",\n          \"match\": \"(\\\\?|\\\\:)\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.import.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n        }\n      ]\n    },\n    \"type-infer\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n          \"name\": \"meta.type.infer.ts\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.expression.infer.ts\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.ts\"\n            },\n            \"3\": {\n              \"name\": \"keyword.operator.expression.extends.ts\"\n            }\n          }\n        }\n      ]\n    },\n    \"type-predicate-operator\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.expression.is.ts\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.operator.type.asserts.ts\"\n            },\n            \"2\": {\n              \"name\": \"variable.parameter.ts variable.language.this.ts\"\n            },\n            \"3\": {\n              \"name\": \"variable.parameter.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.type.asserts.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        },\n        {\n          \"name\": \"keyword.operator.expression.is.ts\",\n          \"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n        }\n      ]\n    },\n    \"type-name\": {\n      \"patterns\": [\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            },\n            \"4\": {\n              \"name\": \"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.ts\"\n            },\n            \"2\": {\n              \"name\": \"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\"\n            }\n          },\n          \"end\": \"(>)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\"\n            }\n          },\n          \"contentName\": \"meta.type.parameters.ts\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments-body\"\n            }\n          ]\n        },\n        {\n          \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.module.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.accessor.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.accessor.optional.ts\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.ts\",\n          \"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n        }\n      ]\n    },\n    \"punctuation-comma\": {\n      \"name\": \"punctuation.separator.comma.ts\",\n      \"match\": \",\"\n    },\n    \"punctuation-semicolon\": {\n      \"name\": \"punctuation.terminator.statement.ts\",\n      \"match\": \";\"\n    },\n    \"punctuation-accessor\": {\n      \"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.accessor.ts\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.accessor.optional.ts\"\n        }\n      }\n    },\n    \"string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template\"\n        }\n      ]\n    },\n    \"qstring-double\": {\n      \"name\": \"string.quoted.double.ts\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ts\"\n        }\n      },\n      \"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.ts\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"qstring-single\": {\n      \"name\": \"string.quoted.single.ts\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.ts\"\n        }\n      },\n      \"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.string.end.ts\"\n        },\n        \"2\": {\n          \"name\": \"invalid.illegal.newline.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#string-character-escape\"\n        }\n      ]\n    },\n    \"string-character-escape\": {\n      \"name\": \"constant.character.escape.ts\",\n      \"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n    },\n    \"template\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.ts\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-call\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.template.ts\",\n          \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n              \"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n              \"patterns\": [\n                {\n                  \"include\": \"#support-function-call-identifiers\"\n                },\n                {\n                  \"name\": \"entity.name.function.tagged-template.ts\",\n                  \"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.template.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.ts\"\n            }\n          },\n          \"end\": \"(?=`)\",\n          \"patterns\": [\n            {\n              \"include\": \"#type-arguments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-substitution-element\": {\n      \"name\": \"meta.template.expression.ts\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#expression\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.ts\"\n    },\n    \"type-string\": {\n      \"patterns\": [\n        {\n          \"include\": \"#qstring-single\"\n        },\n        {\n          \"include\": \"#qstring-double\"\n        },\n        {\n          \"include\": \"#template-type\"\n        }\n      ]\n    },\n    \"template-type\": {\n      \"patterns\": [\n        {\n          \"include\": \"#template-call\"\n        },\n        {\n          \"name\": \"string.template.ts\",\n          \"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.function.tagged-template.ts\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.string.template.begin.ts\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.template.end.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#template-type-substitution-element\"\n            },\n            {\n              \"include\": \"#string-character-escape\"\n            }\n          ]\n        }\n      ]\n    },\n    \"template-type-substitution-element\": {\n      \"name\": \"meta.template.expression.ts\",\n      \"begin\": \"\\\\$\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.begin.ts\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.template-expression.end.ts\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#type\"\n        }\n      ],\n      \"contentName\": \"meta.embedded.line.ts\"\n    },\n    \"regex\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.regexp.ts\",\n          \"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.begin.ts\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.regexp.ts\",\n          \"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.ts\"\n            }\n          },\n          \"end\": \"(/)([dgimsuy]*)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.ts\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        }\n      ]\n    },\n    \"regexp\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.anchor.regexp\",\n          \"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n        },\n        {\n          \"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"keyword.other.back-reference.regexp\"\n            },\n            \"1\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          }\n        },\n        {\n          \"name\": \"keyword.operator.quantifier.regexp\",\n          \"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n        },\n        {\n          \"name\": \"keyword.operator.or.regexp\",\n          \"match\": \"\\\\|\"\n        },\n        {\n          \"name\": \"meta.group.assertion.regexp\",\n          \"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.group.assertion.regexp\"\n            },\n            \"3\": {\n              \"name\": \"meta.assertion.look-ahead.regexp\"\n            },\n            \"4\": {\n              \"name\": \"meta.assertion.negative-look-ahead.regexp\"\n            },\n            \"5\": {\n              \"name\": \"meta.assertion.look-behind.regexp\"\n            },\n            \"6\": {\n              \"name\": \"meta.assertion.negative-look-behind.regexp\"\n            }\n          },\n          \"end\": \"(\\\\))\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"meta.group.regexp\",\n          \"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.group.no-capture.regexp\"\n            },\n            \"2\": {\n              \"name\": \"variable.other.regexp\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.group.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#regexp\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.character-class.set.regexp\",\n          \"begin\": \"(\\\\[)(\\\\^)?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            },\n            \"2\": {\n              \"name\": \"keyword.operator.negation.regexp\"\n            }\n          },\n          \"end\": \"(\\\\])\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.character-class.regexp\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.other.character-class.range.regexp\",\n              \"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"2\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"3\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                },\n                \"4\": {\n                  \"name\": \"constant.character.numeric.regexp\"\n                },\n                \"5\": {\n                  \"name\": \"constant.character.control.regexp\"\n                },\n                \"6\": {\n                  \"name\": \"constant.character.escape.backslash.regexp\"\n                }\n              }\n            },\n            {\n              \"include\": \"#regex-character-class\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#regex-character-class\"\n        }\n      ]\n    },\n    \"regex-character-class\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.character-class.regexp\",\n          \"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n        },\n        {\n          \"name\": \"constant.character.numeric.regexp\",\n          \"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n        },\n        {\n          \"name\": \"constant.character.control.regexp\",\n          \"match\": \"\\\\\\\\c[A-Z]\"\n        },\n        {\n          \"name\": \"constant.character.escape.backslash.regexp\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"name\": \"comment.block.documentation.ts\",\n          \"begin\": \"/\\\\*\\\\*(?!/)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#docblock\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.block.ts\",\n          \"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.internaldeclaration.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.ts\"\n            }\n          },\n          \"end\": \"\\\\*/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.ts\"\n            },\n            \"2\": {\n              \"name\": \"comment.line.double-slash.ts\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.comment.ts\"\n            },\n            \"4\": {\n              \"name\": \"storage.type.internaldeclaration.ts\"\n            },\n            \"5\": {\n              \"name\": \"punctuation.decorator.internaldeclaration.ts\"\n            }\n          },\n          \"end\": \"(?=$)\",\n          \"contentName\": \"comment.line.double-slash.ts\"\n        }\n      ]\n    },\n    \"single-line-comment-consuming-line-ending\": {\n      \"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.ts\"\n        },\n        \"2\": {\n          \"name\": \"comment.line.double-slash.ts\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        },\n        \"4\": {\n          \"name\": \"storage.type.internaldeclaration.ts\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.decorator.internaldeclaration.ts\"\n        }\n      },\n      \"end\": \"(?=^)\",\n      \"contentName\": \"comment.line.double-slash.ts\"\n    },\n    \"directives\": {\n      \"name\": \"comment.line.triple-slash.directive.ts\",\n      \"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.comment.ts\"\n        }\n      },\n      \"end\": \"(?=$)\",\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.ts\",\n          \"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.directive.ts\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.directive.ts\"\n            }\n          },\n          \"end\": \"/>\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.tag.directive.ts\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"entity.other.attribute-name.directive.ts\",\n              \"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n            },\n            {\n              \"name\": \"keyword.operator.assignment.ts\",\n              \"match\": \"=\"\n            },\n            {\n              \"include\": \"#string\"\n            }\n          ]\n        }\n      ]\n    },\n    \"docblock\": {\n      \"patterns\": [\n        {\n          \"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.access-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.email.link.underline.jsdoc\"\n            },\n            \"6\": {\n              \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"keyword.operator.control.jsdoc\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"meta.example.jsdoc\",\n          \"begin\": \"((@)example)\\\\s+\",\n          \"end\": \"(?=@|\\\\*/)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"^\\\\s\\\\*\\\\s+\"\n            },\n            {\n              \"contentName\": \"constant.other.description.jsdoc\",\n              \"begin\": \"\\\\G(<)caption(>)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              },\n              \"end\": \"(</)caption(>)|(?=\\\\*/)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.inline.jsdoc\"\n                },\n                \"1\": {\n                  \"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"source.embedded.ts\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"constant.language.symbol-type.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.link.underline.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"begin\": \"((@)typedef)\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"entity.name.type.instance.jsdoc\",\n              \"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n            },\n            {\n              \"name\": \"variable.other.jsdoc\",\n              \"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"keyword.operator.assignment.jsdoc\"\n                },\n                \"3\": {\n                  \"name\": \"source.embedded.ts\"\n                },\n                \"4\": {\n                  \"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n                },\n                \"5\": {\n                  \"name\": \"invalid.illegal.syntax.jsdoc\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          },\n          \"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n          \"patterns\": [\n            {\n              \"include\": \"#jsdoctype\"\n            }\n          ]\n        },\n        {\n          \"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            }\n          }\n        },\n        {\n          \"contentName\": \"variable.other.jsdoc\",\n          \"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"4\": {\n              \"name\": \"punctuation.definition.string.begin.jsdoc\"\n            }\n          },\n          \"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"variable.other.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.string.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"storage.type.class.jsdoc\",\n          \"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        },\n        {\n          \"include\": \"#inline-tags\"\n        },\n        {\n          \"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.block.tag.jsdoc\"\n            }\n          }\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"begin\": \"{\",\n          \"end\": \"}|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\[\",\n          \"end\": \"\\\\]|(?=\\\\*/)\",\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    },\n    \"inline-tags\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.other.description.jsdoc\",\n          \"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n            }\n          }\n        },\n        {\n          \"name\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.class.jsdoc\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.inline.tag.jsdoc\"\n            }\n          },\n          \"end\": \"}|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.link.underline.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            },\n            {\n              \"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"variable.other.description.jsdoc\"\n                },\n                \"2\": {\n                  \"name\": \"punctuation.separator.pipe.jsdoc\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    },\n    \"jsdoctype\": {\n      \"patterns\": [\n        {\n          \"contentName\": \"entity.name.type.instance.jsdoc\",\n          \"begin\": \"\\\\G({)\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"1\": {\n              \"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n            }\n          },\n          \"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.type.instance.jsdoc\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#brackets\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/vb.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/asp.vb.net.tmbundle/blob/master/Syntaxes/ASP%20VB.net.plist\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/asp.vb.net.tmbundle/commit/72d44550b3286d0382d7be0624140cf97857ff69\",\n  \"name\": \"vb\",\n  \"scopeName\": \"source.asp.vb.net\",\n  \"comment\": \"Modified from the original ASP bundle. Originally modified by Thomas Aylott subtleGradient.com\",\n  \"patterns\": [\n    {\n      \"match\": \"\\\\n\",\n      \"name\": \"meta.ending-space\"\n    },\n    {\n      \"include\": \"#round-brackets\"\n    },\n    {\n      \"begin\": \"^(?=\\\\t)\",\n      \"end\": \"(?=[^\\\\t])\",\n      \"name\": \"meta.leading-space\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab.tabs\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab.tabs\"\n            }\n          },\n          \"match\": \"(\\\\t)(\\\\t)?\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"^(?= )\",\n      \"end\": \"(?=[^ ])\",\n      \"name\": \"meta.leading-space\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"meta.odd-tab.spaces\"\n            },\n            \"2\": {\n              \"name\": \"meta.even-tab.spaces\"\n            }\n          },\n          \"match\": \"(  )(  )?\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.function.asp\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.function.asp\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.parameters.asp\"\n        },\n        \"4\": {\n          \"name\": \"variable.parameter.function.asp\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.parameters.asp\"\n        }\n      },\n      \"match\": \"^\\\\s*((?i:function|sub))\\\\s*([a-zA-Z_]\\\\w*)\\\\s*(\\\\()([^)]*)(\\\\)).*\\\\n?\",\n      \"name\": \"meta.function.asp\"\n    },\n    {\n      \"begin\": \"(^[ \\\\t]+)?(?=')\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.asp\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.asp\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.apostrophe.asp\"\n        }\n      ]\n    },\n    {\n      \"match\": \"(?i:\\\\b(If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\\\b)\",\n      \"name\": \"keyword.control.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Mod|And|Not|Or|Xor|as)\\\\b)\",\n      \"name\": \"keyword.operator.asp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.asp\"\n        },\n        \"2\": {\n          \"name\": \"variable.other.bfeac.asp\"\n        },\n        \"3\": {\n          \"name\": \"meta.separator.comma.asp\"\n        }\n      },\n      \"match\": \"(?i:(dim)\\\\s*(?:(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b)\\\\s*(,?)))\",\n      \"name\": \"variable.other.dim.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\s*\\\\b(Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End Sub|End Function|End Class|End Property|Public Property|Private Property|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\\\\b\\\\s*)\",\n      \"name\": \"storage.type.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Private|Public|Default)\\\\b)\",\n      \"name\": \"storage.modifier.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\s*\\\\b(Empty|False|Nothing|Null|True)\\\\b)\",\n      \"name\": \"constant.language.asp\"\n    },\n    {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.asp\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.asp\"\n        }\n      },\n      \"name\": \"string.quoted.double.asp\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\"\\\"\",\n          \"name\": \"constant.character.escape.apostrophe.asp\"\n        }\n      ]\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.variable.asp\"\n        }\n      },\n      \"match\": \"(\\\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b\\\\s*\",\n      \"name\": \"variable.other.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Application|ObjectContext|Request|Response|Server|Session)\\\\b)\",\n      \"name\": \"support.class.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\\\b)\",\n      \"name\": \"support.class.collection.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\\\b)\",\n      \"name\": \"support.constant.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\\\b)\",\n      \"name\": \"support.function.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\\\b)\",\n      \"name\": \"support.function.event.asp\"\n    },\n    {\n      \"match\": \"(?i:(?<=as )(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b))\",\n      \"name\": \"support.type.vb.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\\\b)\",\n      \"name\": \"support.function.vb.asp\"\n    },\n    {\n      \"match\": \"-?\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\\\b\",\n      \"name\": \"constant.numeric.asp\"\n    },\n    {\n      \"match\": \"(?i:\\\\b(vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\\\b)\",\n      \"name\": \"support.type.vb.asp\"\n    },\n    {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.name.function.asp\"\n        }\n      },\n      \"match\": \"(?i:(\\\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\\\b)(?=\\\\(\\\\)?))\",\n      \"name\": \"support.function.asp\"\n    },\n    {\n      \"match\": \"(?i:((?<=(\\\\+|=|-|\\\\&|\\\\\\\\|/|<|>|\\\\(|,))\\\\s*\\\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\\\b(?!(\\\\(|\\\\.))|\\\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\\\b(?=\\\\s*(\\\\+|=|-|\\\\&|\\\\\\\\|/|<|>|\\\\(|\\\\)))))\",\n      \"name\": \"variable.other.asp\"\n    },\n    {\n      \"match\": \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|/=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(in|instanceof|new|delete|typeof|void)\\\\b\",\n      \"name\": \"keyword.operator.js\"\n    }\n  ],\n  \"repository\": {\n    \"round-brackets\": {\n      \"begin\": \"\\\\(\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.round-brackets.begin.asp\"\n        }\n      },\n      \"end\": \"\\\\)\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.round-brackets.end.asp\"\n        }\n      },\n      \"name\": \"meta.round-brackets\",\n      \"patterns\": [\n        {\n          \"include\": \"source.asp.vb.net\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/verilog.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"v\", \"vh\"],\n  \"keyEquivalent\": \"^~V\",\n  \"name\": \"verilog\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#module_pattern\"\n    },\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#operators\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(^[ \\\\t]+)?(?=//)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.whitespace.comment.leading.verilog\"\n            }\n          },\n          \"end\": \"(?!\\\\G)\",\n          \"patterns\": [\n            {\n              \"begin\": \"//\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.definition.comment.verilog\"\n                }\n              },\n              \"end\": \"\\\\n\",\n              \"name\": \"comment.line.double-slash.verilog\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"/\\\\*\",\n          \"end\": \"\\\\*/\",\n          \"name\": \"comment.block.c-style.verilog\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"`(?!(celldefine|endcelldefine|default_nettype|define|undef|ifdef|ifndef|else|endif|include|resetall|timescale|unconnected_drive|nounconnected_drive))[a-z_A-Z][a-zA-Z0-9_$]*\",\n          \"name\": \"variable.other.constant.verilog\"\n        },\n        {\n          \"match\": \"[0-9]*'[bBoOdDhH][a-fA-F0-9_xXzZ]+\\\\b\",\n          \"name\": \"constant.numeric.sized_integer.verilog\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.numeric.integer.verilog\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.separator.range.verilog\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.integer.verilog\"\n            }\n          },\n          \"match\": \"\\\\b(\\\\d+)(:)(\\\\d+)\\\\b\",\n          \"name\": \"meta.block.numeric.range.verilog\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d[\\\\d_]*(?i:e\\\\d+)?\\\\b\",\n          \"name\": \"constant.numeric.integer.verilog\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d+\\\\.\\\\d+(?i:e\\\\d+)?\\\\b\",\n          \"name\": \"constant.numeric.real.verilog\"\n        },\n        {\n          \"match\": \"#\\\\d+\",\n          \"name\": \"constant.numeric.delay.verilog\"\n        },\n        {\n          \"match\": \"\\\\b[01xXzZ]+\\\\b\",\n          \"name\": \"constant.numeric.logic.verilog\"\n        }\n      ]\n    },\n    \"instantiation_patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"begin\": \"^\\\\s*([a-zA-Z][a-zA-Z0-9_]*)\\\\s+([a-zA-Z][a-zA-Z0-9_]*)(?<!begin|if)\\\\s*(?=\\\\(|$)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.module.reference.verilog\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.tag.module.identifier.verilog\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.expression.verilog\"\n            }\n          },\n          \"name\": \"meta.block.instantiation.parameterless.verilog\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"^\\\\s*([a-zA-Z][a-zA-Z0-9_]*)\\\\s*(#)(?=\\\\s*\\\\()\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.module.reference.verilog\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.terminator.expression.verilog\"\n            }\n          },\n          \"name\": \"meta.block.instantiation.with.parameters.verilog\",\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"match\": \"[a-zA-Z][a-zA-Z0-9_]*\",\n              \"name\": \"entity.name.tag.module.identifier.verilog\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case[xz]?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\\\b\",\n          \"name\": \"keyword.other.verilog\"\n        },\n        {\n          \"match\": \"^\\\\s*`((cell)?define|default_(decay_time|nettype|trireg_strength)|delay_mode_(path|unit|zero)|ifdef|ifndef|include|end(if|celldefine)|else|(no)?unconnected_drive|resetall|timescale|undef)\\\\b\",\n          \"name\": \"keyword.other.compiler.directive.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(f(open|close)|readmem(b|h)|timeformat|printtimescale|stop|finish|(s|real)?time|realtobits|bitstoreal|rtoi|itor|(f)?(display|write(h|b)))\\\\b\",\n          \"name\": \"support.function.system.console.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(random|dist_(chi_square|erlang|exponential|normal|poisson|t|uniform))\\\\b\",\n          \"name\": \"support.function.system.random_number.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$((a)?sync\\\\$((n)?and|(n)or)\\\\$(array|plane))\\\\b\",\n          \"name\": \"support.function.system.pld_modeling.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(q_(initialize|add|remove|full|exam))\\\\b\",\n          \"name\": \"support.function.system.stochastic.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(hold|nochange|period|recovery|setup(hold)?|skew|width)\\\\b\",\n          \"name\": \"support.function.system.timing.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(dump(file|vars|off|on|all|limit|flush))\\\\b\",\n          \"name\": \"support.function.system.vcd.tasks.verilog\"\n        },\n        {\n          \"match\": \"\\\\$(countdrivers|list|input|scope|showscopes|(no)?(key|log)|reset(_count|_value)?|(inc)?save|restart|showvars|getpattern|sreadmem(b|h)|scale)\",\n          \"name\": \"support.function.non-standard.tasks.verilog\"\n        }\n      ]\n    },\n    \"module_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(module)\\\\s+([a-zA-Z][a-zA-Z0-9_]*)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"storage.type.module.verilog\"\n            },\n            \"2\": {\n              \"name\": \"entity.name.type.module.verilog\"\n            }\n          },\n          \"end\": \"\\\\bendmodule\\\\b\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"storage.type.module.verilog\"\n            }\n          },\n          \"name\": \"meta.block.module.verilog\",\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#strings\"\n            },\n            {\n              \"include\": \"#instantiation_patterns\"\n            },\n            {\n              \"include\": \"#operators\"\n            }\n          ]\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\+|-|\\\\*|/|%|(<|>)=?|(!|=)?==?|!|&&?|\\\\|\\\\|?|\\\\^?~|~\\\\^?\",\n          \"name\": \"keyword.operator.verilog\"\n        }\n      ]\n    },\n    \"parenthetical_list\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.list.verilog\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.section.list.verilog\"\n            }\n          },\n          \"name\": \"meta.block.parenthetical_list.verilog\",\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#keywords\"\n            },\n            {\n              \"include\": \"#constants\"\n            },\n            {\n              \"include\": \"#strings\"\n            }\n          ]\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.verilog\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.verilog\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.verilog\",\n  \"uuid\": \"7F4396B3-A33E-44F0-8502-98CA6C25971F\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/vhdl.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"vhd\", \"vhdl\", \"vho\", \"vht\"],\n  \"name\": \"vhdl\",\n  \"patterns\": [\n    {\n      \"include\": \"#block_processing\"\n    },\n    {\n      \"include\": \"#cleanup\"\n    }\n  ],\n  \"repository\": {\n    \"architecture_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\n\\t\\t\\t\\t\\t\\t# The word architecture $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:architecture))\\\\s+\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Followed up by a valid $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\\\s)\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word of $5\\n\\t\\t\\t\\t\\t\\t((?i:of))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Followed by a valid $7 or invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\\\s*(?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.architecture.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.type.entity.reference.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word architecture $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:architecture)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional same identifier $6 or illegal identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# This will cause the previous to capture until just before the ; or $\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.type.architecture.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"name\": \"support.block.architecture\",\n          \"patterns\": [\n            {\n              \"include\": \"#function_definition_pattern\"\n            },\n            {\n              \"include\": \"#procedure_definition_pattern\"\n            },\n            {\n              \"include\": \"#component_pattern\"\n            },\n            {\n              \"include\": \"#if_pattern\"\n            },\n            {\n              \"include\": \"#process_pattern\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#for_pattern\"\n            },\n            {\n              \"include\": \"#entity_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#component_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"attribute_list\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\'\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"block_processing\": {\n      \"patterns\": [\n        {\n          \"include\": \"#package_pattern\"\n        },\n        {\n          \"include\": \"#package_body_pattern\"\n        },\n        {\n          \"include\": \"#entity_pattern\"\n        },\n        {\n          \"include\": \"#architecture_pattern\"\n        }\n      ]\n    },\n    \"case_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# Beginning of line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier ... $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z0-9_]*)\\n\\t\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*:\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The word case $5\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:case))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"3\": {\n              \"name\": \"entity.name.tag.case.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word case $4 or invalid word $5\\n\\t\\t\\t\\t\\t\\t(\\\\s+(((?i:case))|(.*?)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier from before $8 or illegal $9\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.*?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with a semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.case.required.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.tag.case.end.vhdl\"\n            },\n            \"9\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"cleanup\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#constants_numeric\"\n        },\n        {\n          \"include\": \"#strings\"\n        },\n        {\n          \"include\": \"#attribute_list\"\n        },\n        {\n          \"include\": \"#syntax_highlighting\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"match\": \"--.*$\\\\n?\",\n          \"name\": \"comment.line.double-dash.vhdl\"\n        }\n      ]\n    },\n    \"component_instantiation_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Match a valid identifier $1\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t# Colon! $2\\n\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Another valid identifier $3\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# Make sure we are just the other word, or the beginning of\\n\\t\\t\\t\\t\\t\\t# a generic or port mapping\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*($|generic|port))\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.section.component_instantiation.vhdl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.tag.component.reference.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"component_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word component $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:component))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# A valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z_][a-zA-Z0-9_]*)\\\\s*|(.+?))(?=\\\\b(?i:is|port)\\\\b|$|--)\\n\\n\\t\\t\\t\\t\\t\\t# Optional word is $6\\n\\t\\t\\t\\t\\t\\t(\\\\b((?i:is\\\\b)))?\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.component.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word component $3 or illegal word $4\\n\\t\\t\\t\\t\\t\\t(((?i:component\\\\b))|(.+?))(?=\\\\s*|;)\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Optional identifier $7 or illegal mismatched $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.component.keyword.required.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.type.component.end.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#generic_list_pattern\"\n            },\n            {\n              \"include\": \"#port_list_pattern\"\n            },\n            {\n              \"include\": \"#comments\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants_numeric\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b([+\\\\-]?[\\\\d_]+\\\\.[\\\\d_]+([eE][+\\\\-]?[\\\\d_]+)?)\\\\b\",\n          \"name\": \"constant.numeric.floating_point.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b\\\\d+#[\\\\h_]+#\\\\b\",\n          \"name\": \"constant.numeric.base_pound_number_pound.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b[\\\\d_]+([eE][\\\\d_]+)?\\\\b\",\n          \"name\": \"constant.numeric.integer.vhdl\"\n        },\n        {\n          \"match\": \"[xX]\\\"[0-9a-fA-F_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.hex.vhdl\"\n        },\n        {\n          \"match\": \"[oO]\\\"[0-7_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.octal.vhdl\"\n        },\n        {\n          \"match\": \"[bB]?\\\"[01_uUxXzZwWlLhH\\\\-]+\\\"\",\n          \"name\": \"constant.numeric.quoted.double.string.binary.vhdl\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"invalid.illegal.quoted.double.string.vhdl\"\n            }\n          },\n          \"match\": \"([bBoOxX]\\\".+?\\\")\",\n          \"name\": \"constant.numeric.quoted.double.string.illegal.vhdl\"\n        },\n        {\n          \"match\": \"'[01uUxXzZwWlLhH\\\\-]'\",\n          \"name\": \"constant.numeric.quoted.single.std_logic\"\n        }\n      ]\n    },\n    \"control_patterns\": {\n      \"patterns\": [\n        {\n          \"include\": \"#case_pattern\"\n        },\n        {\n          \"include\": \"#if_pattern\"\n        },\n        {\n          \"include\": \"#for_pattern\"\n        },\n        {\n          \"include\": \"#while_pattern\"\n        }\n      ]\n    },\n    \"entity_instantiation_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Component identifier or illegal identifier $1\\n\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t# Colon! $2\\n\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# Optional word use $4\\n\\t\\t\\t\\t\\t\\t(((?i:use))\\\\s+)?\\n\\n\\t\\t\\t\\t\\t\\t# Required word entity $5\\n\\t\\t\\t\\t\\t\\t((?i:entity))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\t\\t\\t\\t\\t\\t\\t(\\\\.)\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Entity name reference $12 or illegal identifier $13\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\n\\t\\t\\t\\t\\t\\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|$|(?i:port|generic)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional architecture elaboration\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Open paren $16\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(\\\\()\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t\\t# Arch identifier $18 or invalid identifier $19\\n\\t\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\\\s*\\\\))\\n\\n\\t\\t\\t\\t\\t\\t\\t# Close paren $21\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(\\\\))\\n\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.section.entity_instantiation.vhdl\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.tag.library.reference.vhdl\"\n            },\n            \"9\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"10\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"12\": {\n              \"name\": \"entity.name.tag.entity.reference.vhdl\"\n            },\n            \"13\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"16\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"18\": {\n              \"name\": \"entity.name.tag.architecture.reference.vhdl\"\n            },\n            \"19\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"21\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"entity_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line ...\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word entity $1\\n\\t\\t\\t\\t\\t\\t((?i:entity\\\\b))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The identifier $3 or an invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))(?=\\\\s)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.entity.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word entity $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:entity)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier match $6 or indentifier mismatch $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t# Make sure there is a semicolon following\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.type.entity.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#comments\"\n            },\n            {\n              \"include\": \"#generic_list_pattern\"\n            },\n            {\n              \"include\": \"#port_list_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"for_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Check for an identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Make sure the next word is not wait\\n\\t\\t\\t\\t\\t\\t(?!(?i:wait\\\\s*))\\n\\n\\t\\t\\t\\t\\t\\t# The for keyword $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:for))\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# Make sure the next word is not all\\n\\t\\t\\t\\t\\t\\t(?!\\\\s*(?i:all))\\n\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.tag.for.generate.begin.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Followed by generate or loop $3\\n\\t\\t\\t\\t\\t\\t\\t ((?i:generate|loop))\\n\\n\\t\\t\\t\\t\\t\\t\\t# But it really is required $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# The matching identifier $7 or an invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only space and a semicolon left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.loop.or.generate.required.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.tag.for.generate.end.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#entity_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#component_pattern\"\n            },\n            {\n              \"include\": \"#component_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#process_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_definition_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:impure)?\\\\s*(?i:function))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid string quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# A valid backslash escaped identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\\\\\.+\\\\\\\\)\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list or we return\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t \\\\(\\n\\t\\t\\t\\t\\t\\t\\t\\t|(?i:\\\\breturn\\\\b)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.function.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.function.begin.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.function.begin.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word function $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:function)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional matched identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3|\\\\4|\\\\5)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with whitespace and semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.function.function.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"function_prototype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:impure)?\\\\s*(?i:function))\\\\s+\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# A valid backslash escaped identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\\\\\.+\\\\\\\\)\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $6\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list or we return\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t \\\\(\\n\\t\\t\\t\\t\\t\\t\\t\\t|(?i:\\\\breturn\\\\b)\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.function.prototype.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.function.prototype.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.function.function.prototype.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"invalid.illegal.function.name.vhdl\"\n            }\n          },\n          \"end\": \"(?<=;)\",\n          \"patterns\": [\n            {\n              \"begin\": \"\\\\b(?i:return)(?=\\\\s+[^;]+\\\\s*;)\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"keyword.language.vhdl\"\n                }\n              },\n              \"end\": \"\\\\;\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.terminator.function_prototype.vhdl\"\n                }\n              },\n              \"patterns\": [\n                {\n                  \"include\": \"#parenthetical_list\"\n                },\n                {\n                  \"include\": \"#cleanup\"\n                }\n              ]\n            },\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"generic_list_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:generic)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"if_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Optional identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Keyword if $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:if))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.tag.if.generate.begin.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t# Optional generate or if keyword $4\\n\\t\\t\\t\\t\\t\\t\\t\\t ((?i:generate|if))\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t# Keyword if or generate required $5\\n\\t\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\s+\\n\\t\\t\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# Optional matching identifier $8\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t (\\\\2)\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t# Mismatched identifier $9\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t)?\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# Followed by a semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.if.or.generate.required.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"entity.name.tag.if.generate.end.vhdl\"\n            },\n            \"9\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#process_pattern\"\n            },\n            {\n              \"include\": \"#entity_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#component_pattern\"\n            },\n            {\n              \"include\": \"#component_instantiation_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"match\": \"'(?i:active|ascending|base|delayed|driving|event|high|image|instance|instance_name|last|last_value|left|leftof|length|low|path|path_name|pos|pred|quiet|range|reverse|reverse_range|right|rightof|simple|simple_name|stable|succ|transaction|val|value)\\\\b\",\n          \"name\": \"keyword.attributes.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|context|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|protected|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\\\b\",\n          \"name\": \"keyword.language.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:std|ieee|work|standard|textio|std_logic_1164|std_logic_arith|std_logic_misc|std_logic_signed|std_logic_textio|std_logic_unsigned|numeric_bit|numeric_std|math_complex|math_real|vital_primitives|vital_timing)\\\\b\",\n          \"name\": \"standard.library.language.vhdl\"\n        },\n        {\n          \"match\": \"(\\\\+|\\\\-|<=|=|=>|:=|>=|>|<|/|\\\\||&|(\\\\*{1,2}))\",\n          \"name\": \"keyword.operator.vhdl\"\n        }\n      ]\n    },\n    \"package_body_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word package $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:package))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... but we want to be a package body $2\\n\\t\\t\\t\\t\\t\\t((?i:body))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $4 or the invalid one $5\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... and we end it with an is $6\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.package_body.begin.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word package $3 body $4\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:package))\\\\s+((?i:body)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $7 or mismatched identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\4)|(.+?)))?(?=\\\\s*;)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.section.package_body.end.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#protected_body_pattern\"\n            },\n            {\n              \"include\": \"#function_definition_pattern\"\n            },\n            {\n              \"include\": \"#procedure_definition_pattern\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#subtype_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"package_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word package $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:package))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... but we do not want to be a package body\\n\\t\\t\\t\\t\\t\\t(?!(?i:body))\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $3 or the invalid one $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# ... and we end it with an is $5\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.section.package.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\b))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word package $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:package)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?(?=\\\\s*;)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.section.package.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#protected_pattern\"\n            },\n            {\n              \"include\": \"#function_prototype_pattern\"\n            },\n            {\n              \"include\": \"#procedure_prototype_pattern\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#subtype_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#component_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"protected_body_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:type))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $2 or the invalid one $3\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:is\\\\s+protected\\\\s+body))\\\\s+\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.section.protected_body.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\s+protected\\\\s+body))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.protected_body.end.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_definition_pattern\"\n            },\n            {\n              \"include\": \"#procedure_definition_pattern\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#subtype_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"protected_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:type))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The valid identifier $2 or the invalid one $3\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z\\\\d_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:is\\\\s+protected))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Not body\\n\\t\\t\\t\\t\\t\\t(?!(?i:body))\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdls\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.section.protected.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end\\\\s+protected))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Not body\\n\\t\\t\\t\\t\\t\\t(?!(?i:body))\\n\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.section.protected.end.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#function_prototype_pattern\"\n            },\n            {\n              \"include\": \"#procedure_prototype_pattern\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#subtype_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#component_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parenthetical_list\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\",\n          \"patterns\": [\n            {\n              \"begin\": \"(?=['\\\"a-zA-Z0-9])\",\n              \"end\": \"(;|\\\\)|,)\",\n              \"endCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.vhdl\"\n                }\n              },\n              \"name\": \"source.vhdl\",\n              \"patterns\": [\n                {\n                  \"include\": \"#comments\"\n                },\n                {\n                  \"include\": \"#parenthetical_pair\"\n                },\n                {\n                  \"include\": \"#cleanup\"\n                }\n              ]\n            },\n            {\n              \"match\": \"\\\\)\",\n              \"name\": \"invalid.illegal.unexpected.parenthesis.vhdl\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"parenthetical_pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\(\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"end\": \"\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_pair\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"port_list_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:port)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?<=\\\\))\\\\s*;\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"procedure_definition_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word function $1\\n\\t\\t\\t\\t\\t\\t((?i:procedure))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A valid normal identifier $3\\n\\t\\t\\t\\t\\t\\t\\t ([a-zA-Z][a-zA-Z\\\\d_]*)\\n\\t\\t\\t\\t\\t\\t\\t# A valid quoted identifier $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\"\\\\S+\\\")\\n\\t\\t\\t\\t\\t\\t\\t# An invalid identifier $5\\n\\t\\t\\t\\t\\t\\t\\t|(.+?)\\n\\t\\t\\t\\t\\t\\t)\\n\\n\\t\\t\\t\\t\\t\\t# Check to make sure we have a list is\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|(?i:is)))\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.procedure.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"entity.name.function.procedure.begin.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word function $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:procedure)))?\\n\\n\\t\\t\\t\\t\\t\\t# Optional matched identifier $6 or mismatched identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\3|\\\\4)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Ending with whitespace and semicolon\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.function.procedure.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.mismatched.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            },\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#type_pattern\"\n            },\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"procedure_prototype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:procedure))\\\\s+\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*(\\\\(|;))\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.function.procedure.begin.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctual.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#parenthetical_list\"\n            }\n          ]\n        }\n      ]\n    },\n    \"process_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Optional identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The word process #4\\n\\t\\t\\t\\t\\t\\t((?i:process\\\\b))\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"entity.name.section.process.begin.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# Optional word process $3\\n\\t\\t\\t\\t\\t\\t(\\\\s+((?i:process)))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $6 or invalid identifier $7\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"entity.name.section.process.end.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"match\": \"(\\\\.|,|:|;|\\\\(|\\\\))\",\n          \"name\": \"punctuation.vhdl\"\n        }\n      ]\n    },\n    \"record_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\b(?i:record)\\\\b\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\n\\n\\t\\t\\t\\t\\t\\t# The word record $2\\n\\t\\t\\t\\t\\t\\t\\\\s+((?i:record))\\n\\n\\t\\t\\t\\t\\t\\t# Optional identifier $5 or invalid identifier $6\\n\\t\\t\\t\\t\\t\\t(\\\\s+(([a-zA-Z][a-zA-Z\\\\d_]*)|(.*?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only whitespace and semicolons can be left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"2\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"entity.name.type.record.vhdl\"\n            },\n            \"6\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#cleanup\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"match\": \"'.'\",\n          \"name\": \"string.quoted.single.vhdl\"\n        },\n        {\n          \"begin\": \"\\\"\",\n          \"end\": \"\\\"\",\n          \"name\": \"string.quoted.double.vhdl\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.vhdl\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"\\\\\\\\\",\n          \"end\": \"\\\\\\\\\",\n          \"name\": \"string.other.backslash.vhdl\"\n        }\n      ]\n    },\n    \"subtype_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word subtype $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:subtype))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# The word is $5\\n\\t\\t\\t\\t\\t\\t((?i:is))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.subtype.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"5\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"support_constants\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:math_1_over_e|math_1_over_pi|math_1_over_sqrt_2|math_2_pi|math_3_pi_over_2|math_deg_to_rad|math_e|math_log10_of_e|math_log2_of_e|math_log_of_10|math_log_of_2|math_pi|math_pi_over_2|math_pi_over_3|math_pi_over_4|math_rad_to_deg|math_sqrt_2|math_sqrt_pi)\\\\b\",\n          \"name\": \"support.constant.ieee.math_real.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:math_cbase_1|math_cbase_j|math_czero|positive_real|principal_value)\\\\b\",\n          \"name\": \"support.constant.ieee.math_complex.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:true|false)\\\\b\",\n          \"name\": \"support.constant.std.standard.vhdl\"\n        }\n      ]\n    },\n    \"support_functions\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:finish|stop|resolution_limit)\\\\b\",\n          \"name\": \"support.function.std.env.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:readline|read|writeline|write|endfile|endline)\\\\b\",\n          \"name\": \"support.function.std.textio.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:rising_edge|falling_edge|to_bit|to_bitvector|to_stdulogic|to_stdlogicvector|to_stdulogicvector|is_x)\\\\b\",\n          \"name\": \"support.function.ieee.std_logic_1164.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:shift_left|shift_right|rotate_left|rotate_right|resize|to_integer|to_unsigned|to_signed)\\\\b\",\n          \"name\": \"support.function.ieee.numeric_std.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:arccos(h?)|arcsin(h?)|arctan|arctanh|cbrt|ceil|cos|cosh|exp|floor|log10|log2|log|realmax|realmin|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\\\b\",\n          \"name\": \"support.function.ieee.math_real.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:arg|cmplx|complex_to_polar|conj|get_principal_value|polar_to_complex)\\\\b\",\n          \"name\": \"support.function.ieee.math_complex.vhdl\"\n        }\n      ]\n    },\n    \"support_types\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(?i:boolean|bit|character|severity_level|integer|real|time|delay_length|now|natural|positive|string|bit_vector|file_open_kind|file_open_status|fs|ps|ns|us|ms|sec|min|hr|severity_level|note|warning|error|failure)\\\\b\",\n          \"name\": \"support.type.std.standard.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:line|text|side|width|input|output)\\\\b\",\n          \"name\": \"support.type.std.textio.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:std_logic|std_ulogic|std_logic_vector|std_ulogic_vector)\\\\b\",\n          \"name\": \"support.type.ieee.std_logic_1164.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:signed|unsigned)\\\\b\",\n          \"name\": \"support.type.ieee.numeric_std.vhdl\"\n        },\n        {\n          \"match\": \"\\\\b(?i:complex|complex_polar)\\\\b\",\n          \"name\": \"support.type.ieee.math_complex.vhdl\"\n        }\n      ]\n    },\n    \"syntax_highlighting\": {\n      \"patterns\": [\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#punctuation\"\n        },\n        {\n          \"include\": \"#support_constants\"\n        },\n        {\n          \"include\": \"#support_types\"\n        },\n        {\n          \"include\": \"#support_functions\"\n        }\n      ]\n    },\n    \"type_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word type $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:type))\\\\s+\\n\\n\\t\\t\\t\\t\\t\\t# Valid identifier $3 or invalid identifier $4\\n\\t\\t\\t\\t\\t\\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\n\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# A semicolon is coming up if we are incomplete\\n\\t\\t\\t\\t\\t\\t\\t (?=\\\\s*;)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Or the word is comes up $7\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\s+((?i:is)))\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.type.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.invalid.identifier.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \";\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.vhdl\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#record_pattern\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    },\n    \"while_pattern\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# From the beginning of the line\\n\\t\\t\\t\\t\\t\\t^\\\\s*\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Check for an identifier $2\\n\\t\\t\\t\\t\\t\\t\\t([a-zA-Z][a-zA-Z0-9_]*)\\n\\n\\t\\t\\t\\t\\t\\t\\t# Followed by a colon $3\\n\\t\\t\\t\\t\\t\\t\\t\\\\s*(:)\\\\s*\\n\\t\\t\\t\\t\\t\\t)?\\n\\n\\t\\t\\t\\t\\t\\t# The for keyword $4\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:while))\\\\b\\n\\t\\t\\t\\t\\t\",\n          \"beginCaptures\": {\n            \"2\": {\n              \"name\": \"\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"keyword.language.vhdl\"\n            }\n          },\n          \"end\": \"(?x)\\n\\t\\t\\t\\t\\t\\t# The word end $1\\n\\t\\t\\t\\t\\t\\t\\\\b((?i:end))\\\\s+\\n\\t\\t\\t\\t\\t\\t(\\n\\t\\t\\t\\t\\t\\t\\t# Followed by keyword loop $3\\n\\t\\t\\t\\t\\t\\t\\t ((?i:loop))\\n\\n\\t\\t\\t\\t\\t\\t\\t# But it really is required $4\\n\\t\\t\\t\\t\\t\\t\\t|(\\\\S+)\\n\\t\\t\\t\\t\\t\\t)\\\\b\\n\\n\\t\\t\\t\\t\\t\\t# The matching identifier $7 or an invalid identifier $8\\n\\t\\t\\t\\t\\t\\t(\\\\s+((\\\\2)|(.+?)))?\\n\\n\\t\\t\\t\\t\\t\\t# Only space and a semicolon left\\n\\t\\t\\t\\t\\t\\t(?=\\\\s*;)\\n\\t\\t\\t\\t\\t\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"3\": {\n              \"name\": \"keyword.language.vhdl\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.loop.keyword.required.vhdl\"\n            },\n            \"7\": {\n              \"name\": \"entity.name.tag.while.loop.vhdl\"\n            },\n            \"8\": {\n              \"name\": \"invalid.illegal.mismatched.identifier\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#control_patterns\"\n            },\n            {\n              \"include\": \"#cleanup\"\n            }\n          ]\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.vhdl\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/viml.tmLanguage.json",
    "content": "{\n  \"repository\": {\n    \"commands\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.other.command.viml\",\n          \"match\": \"\\\\bcom(\\\\s|\\\\!)\"\n        },\n        {\n          \"name\": \"storage.other.command.viml\",\n          \"match\": \"\\\\bau(\\\\s|\\\\!)\"\n        },\n        {\n          \"name\": \"storage.other.command.bang.viml\",\n          \"match\": \"-bang\"\n        },\n        {\n          \"name\": \"storage.other.command.args.viml\",\n          \"match\": \"-nargs=[*+0-9]+\"\n        },\n        {\n          \"name\": \"storage.other.command.completion.viml\",\n          \"match\": \"-complete=\\\\S+\"\n        },\n        {\n          \"begin\": \"(aug(roup)?)\",\n          \"end\": \"(augroup\\\\sEND|$)\",\n          \"name\": \"support.function.augroup.viml\"\n        }\n      ]\n    },\n    \"comment\": {\n      \"patterns\": [\n        {\n          \"begin\": \"((\\\\s+)?\\\"\\\"\\\")\",\n          \"end\": \"^(?!\\\")\",\n          \"name\": \"comment.block.documentation.viml\"\n        },\n        {\n          \"match\": \"^\\\"\\\\svim:.*\",\n          \"name\": \"comment.block.modeline.viml\"\n        },\n        {\n          \"name\": \"comment.line.viml\",\n          \"begin\": \"(\\\\s+\\\"\\\\s+)(?!\\\")\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\{\\\\{\\\\{\\\\d?$\",\n              \"name\": \"comment.line.foldmarker.viml\"\n            },\n            {\n              \"match\": \"\\\\}\\\\}\\\\}\\\\d?\",\n              \"name\": \"comment.line.foldmarker.viml\"\n            }\n          ]\n        },\n        {\n          \"name\": \"comment.line.viml\",\n          \"begin\": \"^(\\\\s+)?\\\"\",\n          \"end\": \"$\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\{\\\\{\\\\{\\\\d?$\",\n              \"name\": \"comment.line.foldmarker.viml\"\n            },\n            {\n              \"match\": \"\\\\}\\\\}\\\\}\\\\d?\",\n              \"name\": \"comment.line.foldmarker.viml\"\n            }\n          ]\n        }\n      ]\n    },\n    \"entity\": {\n      \"patterns\": [\n        {\n          \"name\": \"entity.name.function.viml\",\n          \"match\": \"(([absg]\\\\:)?[a-zA-Z0-9_#.]{2,})\\\\b(?=\\\\()\"\n        }\n      ]\n    },\n    \"map\": {\n      \"patterns\": [\n        {\n          \"begin\": \"(\\\\<)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.map.viml\"\n            }\n          },\n          \"end\": \"(\\\\>|\\\\s)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.map.viml\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"constant.character.map.rhs.viml\",\n              \"match\": \"(?<=:\\\\s)(.+)\"\n            },\n            {\n              \"name\": \"constant.character.map.special.viml\",\n              \"match\": \"(?i:(bang|buffer|expr|nop|plug|sid|silent))\"\n            },\n            {\n              \"name\": \"constant.character.map.key.viml\",\n              \"match\": \"(?i:([adcms]-\\\\w))\"\n            },\n            {\n              \"name\": \"constant.character.map.key.fn.viml\",\n              \"match\": \"(?i:(F[0-9]+))\"\n            },\n            {\n              \"name\": \"constant.character.map.viml\",\n              \"match\": \"(?i:(bs|bar|cr|del|down|esc|left|right|space|tab|up|leader))\"\n            }\n          ]\n        },\n        {\n          \"name\": \"storage.type.map.viml\",\n          \"match\": \"(\\\\b([cinostvx]?(nore)?map)\\\\b)\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.operator.viml\",\n          \"match\": \"([#+?!=~\\\\\\\\])\"\n        },\n        {\n          \"name\": \"keyword.operator.viml\",\n          \"match\": \" ([:\\\\-.]|[&|]{2})( |$)\"\n        },\n        {\n          \"name\": \"keyword.operator.viml\",\n          \"match\": \"([.]{3})\"\n        },\n        {\n          \"name\": \"keyword.operator.viml\",\n          \"match\": \"( [<>] )\"\n        },\n        {\n          \"name\": \"keyword.operator.viml\",\n          \"match\": \"(>=)\"\n        }\n      ]\n    },\n    \"option\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.type.option.viml\",\n          \"match\": \"&?\\\\b(al|aleph|anti|antialias|arab|arabic|arshape|arabicshape|ari|allowrevins|akm|altkeymap|ambw|ambiwidth|acd|autochdir|ai|autoindent|ar|autoread|aw|autowrite|awa|autowriteall|bg|background|bs|backspace|bk|backup|bkc|backupcopy|bdir|backupdir|bex|backupext|bsk|backupskip|bdlay|balloondelay|beval|ballooneval|bevalterm|balloonevalterm|bexpr|balloonexpr|bo|belloff|bin|binary|bomb|brk|breakat|bri|breakindent|briopt|breakindentopt|bsdir|browsedir|bh|bufhidden|bl|buflisted|bt|buftype|cmp|casemap|cd|cdpath|cedit|ccv|charconvert|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|cb|clipboard|ch|cmdheight|cwh|cmdwinheight|cc|colorcolumn|co|columns|com|comments|cms|commentstring|cp|compatible|cpt|complete|cocu|concealcursor|cole|conceallevel|cfu|completefunc|cot|completeopt|cf|confirm|ci|copyindent|cpo|cpoptions|cm|cryptmethod|cspc|cscopepathcomp|csprg|cscopeprg|csqf|cscopequickfix|csre|cscoperelative|cst|cscopetag|csto|cscopetagorder|csverb|cscopeverbose|crb|cursorbind|cuc|cursorcolumn|cul|cursorline|debug|def|define|deco|delcombine|dict|dictionary|diff|dex|diffexpr|dip|diffopt|dg|digraph|dir|directory|dy|display|ead|eadirection|ed|edcompatible|emo|emoji|enc|encoding|eol|endofline|ea|equalalways|ep|equalprg|eb|errorbells|ef|errorfile|efm|errorformat|ek|esckeys|ei|eventignore|et|expandtab|ex|exrc|fenc|fileencoding|fencs|fileencodings|ff|fileformat|ffs|fileformats|fic|fileignorecase|ft|filetype|fcs|fillchars|fixeol|fixendofline|fk|fkmap|fcl|foldclose|fdc|foldcolumn|fen|foldenable|fde|foldexpr|fdi|foldignore|fdl|foldlevel|fdls|foldlevelstart|fmr|foldmarker|fdm|foldmethod|fml|foldminlines|fdn|foldnestmax|fdo|foldopen|fdt|foldtext|fex|formatexpr|fo|formatoptions|flp|formatlistpat|fp|formatprg|fs|fsync|gd|gdefault|gfm|grepformat|gp|grepprg|gcr|guicursor|gfn|guifont|gfs|guifontset|gfw|guifontwide|ghr|guiheadroom|go|guioptions|guipty|gtl|guitablabel|gtt|guitabtooltip|hf|helpfile|hh|helpheight|hlg|helplang|hid|hidden|hl|highlight|hi|history|hk|hkmap|hkp|hkmapp|hls|hlsearch|icon|iconstring|ic|ignorecase|imaf|imactivatefunc|imak|imactivatekey|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|imsf|imstatusfunc|imst|imstyle|inc|include|inex|includeexpr|is|incsearch|inde|indentexpr|indk|indentkeys|inf|infercase|im|insertmode|isf|isfname|isi|isident|isk|iskeyword|isp|isprint|js|joinspaces|key|kmp|keymap|km|keymodel|kp|keywordprg|lmap|langmap|lm|langmenu|lnr|langnoremap|lrm|langremap|ls|laststatus|lz|lazyredraw|lbr|linebreak|lines|lsp|linespace|lisp|lw|lispwords|list|lcs|listchars|lpl|loadplugins|luadll|macatsui|magic|mef|makeef|menc|makeencoding|mp|makeprg|mps|matchpairs|mat|matchtime|mco|maxcombine|mfd|maxfuncdepth|mmd|maxmapdepth|mm|maxmem|mmp|maxmempattern|mmt|maxmemtot|mis|menuitems|msm|mkspellmem|ml|modeline|mls|modelines|ma|modifiable|mod|modified|more|mouse|mousef|mousefocus|mh|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mzschemedll|mzschemegcdll|mzq|mzquantum|nf|nrformats|nu|number|nuw|numberwidth|ofu|omnifunc|odev|opendevice|opfunc|operatorfunc|pp|packpath|para|paragraphs|paste|pt|pastetoggle|pex|patchexpr|pm|patchmode|pa|path|perldll|pi|preserveindent|pvh|previewheight|pvw|previewwindow|pdev|printdevice|penc|printencoding|pexpr|printexpr|pfn|printfont|pheader|printheader|pmbcs|printmbcharset|pmbfn|printmbfont|popt|printoptions|prompt|ph|pumheight|pythonthreedll|pythondll|pyx|pyxversion|qe|quoteescape|ro|readonly|rdt|redrawtime|re|regexpengine|rnu|relativenumber|remap|rop|renderoptions|report|rs|restorescreen|ri|revins|rl|rightleft|rlc|rightleftcmd|rubydll|ru|ruler|ruf|rulerformat|rtp|runtimepath|scr|scroll|scb|scrollbind|sj|scrolljump|so|scrolloff|sbo|scrollopt|sect|sections|secure|sel|selection|slm|selectmode|ssop|sessionoptions|sh|shell|shcf|shellcmdflag|sp|shellpipe|shq|shellquote|srr|shellredir|ssl|shellslash|stmp|shelltemp|st|shelltype|sxq|shellxquote|sxe|shellxescape|sr|shiftround|sw|shiftwidth|shm|shortmess|sn|shortname|sbr|showbreak|sc|showcmd|sft|showfulltag|sm|showmatch|smd|showmode|stal|showtabline|ss|sidescroll|siso|sidescrolloff|scl|signcolumn|scs|smartcase|si|smartindent|sta|smarttab|sts|softtabstop|spell|spc|spellcapcheck|spf|spellfile|spl|spelllang|sps|spellsuggest|sb|splitbelow|spr|splitright|sol|startofline|stl|statusline|su|suffixes|sua|suffixesadd|swf|swapfile|sws|swapsync|swb|switchbuf|smc|synmaxcol|syn|syntax|tal|tabline|tpm|tabpagemax|ts|tabstop|tbs|tagbsearch|tc|tagcase|tl|taglength|tr|tagrelative|tag|tags|tgst|tagstack|tcldll|term|tbidi|termbidi|tenc|termencoding|tgc|termguicolors|tk|termkey|tms|termsize|terse|ta|textauto|tx|textmode|tw|textwidth|tsr|thesaurus|top|tildeop|to|timeout|tm|timeoutlen|title|titlelen|titleold|titlestring|tb|toolbar|tbis|toolbariconsize|ttimeout|ttm|ttimeoutlen|tbi|ttybuiltin|tf|ttyfast|ttym|ttymouse|tsl|ttyscroll|tty|ttytype|udir|undodir|udf|undofile|ul|undolevels|ur|undoreload|uc|updatecount|ut|updatetime|vbs|verbose|vfile|verbosefile|vdir|viewdir|vop|viewoptions|vi|viminfo|vif|viminfofile|ve|virtualedit|vb|visualbell|warn|wiv|weirdinvert|ww|whichwrap|wc|wildchar|wcm|wildcharm|wig|wildignore|wic|wildignorecase|wmnu|wildmenu|wim|wildmode|wop|wildoptions|wak|winaltkeys|wi|window|wh|winheight|wfh|winfixheight|wfw|winfixwidth|wmh|winminheight|wmw|winminwidth|winptydll|wiw|winwidth|wrap|wm|wrapmargin|ws|wrapscan|write|wa|writeany|wb|writebackup|wd|writedelay)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.option.viml\",\n          \"match\": \"&?\\\\b(aleph|allowrevins|altkeymap|ambiwidth|autochdir|arabic|arabicshape|autoindent|autoread|autowrite|autowriteall|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|belloff|binary|bomb|breakat|breakindent|breakindentopt|browsedir|bufhidden|buflisted|buftype|casemap|cdpath|cedit|charconvert|cindent|cinkeys|cinoptions|cinwords|clipboard|cmdheight|cmdwinheight|colorcolumn|columns|comments|commentstring|complete|completefunc|completeopt|concealcursor|conceallevel|confirm|copyindent|cpoptions|cscopepathcomp|cscopeprg|cscopequickfix|cscoperelative|cscopetag|cscopetagorder|cscopeverbose|cursorbind|cursorcolumn|cursorline|debug|define|delcombine|dictionary|diff|diffexpr|diffopt|digraph|directory|display|eadirection|encoding|endofline|equalalways|equalprg|errorbells|errorfile|errorformat|eventignore|expandtab|exrc|fileencoding|fileencodings|fileformat|fileformats|fileignorecase|filetype|fillchars|fixendofline|fkmap|foldclose|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldopen|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fsync|gdefault|grepformat|grepprg|guicursor|guifont|guifontset|guifontwide|guioptions|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hidden|hlsearch|history|hkmap|hkmapp|icon|iconstring|ignorecase|imcmdline|imdisable|iminsert|imsearch|include|includeexpr|incsearch|indentexpr|indentkeys|infercase|insertmode|isfname|isident|iskeyword|isprint|joinspaces|keymap|keymodel|keywordprg|langmap|langmenu|langremap|laststatus|lazyredraw|linebreak|lines|linespace|lisp|lispwords|list|listchars|loadplugins|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|menuitems|mkspellmem|modeline|modelines|modifiable|modified|more|mouse|mousefocus|mousehide|mousemodel|mouseshape|mousetime|nrformats|number|numberwidth|omnifunc|opendevice|operatorfunc|packpath|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|perldll|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pumheight|pythondll|pythonthreedll|quoteescape|readonly|redrawtime|regexpengine|relativenumber|remap|report|revins|rightleft|rightleftcmd|rubydll|ruler|rulerformat|runtimepath|scroll|scrollbind|scrolljump|scrolloff|scrollopt|sections|secure|selection|selectmode|sessionoptions|shada|shell|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shellxescape|shellxquote|shiftround|shiftwidth|shortmess|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|sidescroll|sidescrolloff|signcolumn|smartcase|smartindent|smarttab|softtabstop|spell|spellcapcheck|spellfile|spelllang|spellsuggest|splitbelow|splitright|startofline|statusline|suffixes|suffixesadd|swapfile|switchbuf|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|tagcase|taglength|tagrelative|tags|tagstack|term|termbidi|terse|textwidth|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|ttimeout|ttimeoutlen|ttytype|undodir|undofile|undolevels|undoreload|updatecount|updatetime|verbose|verbosefile|viewdir|viewoptions|virtualedit|visualbell|warn|whichwrap|wildchar|wildcharm|wildignore|wildignorecase|wildmenu|wildmode|wildoptions|winaltkeys|window|winheight|winfixheight|winfixwidth|winminheight|winminwidth|winwidth|wrap|wrapmargin|wrapscan|write|writeany|writebackup|writedelay)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.option.shortname.viml\",\n          \"match\": \"&?\\\\b(al|ari|akm|ambw|acd|arab|arshape|ai|ar|aw|awa|bg|bs|bk|bkc|bdir|bex|bsk|bdlay|beval|bexpr|bo|bin|bomb|brk|bri|briopt|bsdir|bh|bl|bt|cmp|cd|cedit|ccv|cin|cink|cino|cinw|cb|ch|cwh|cc|co|com|cms|cpt|cfu|cot|cocu|cole|cf|ci|cpo|cspc|csprg|csqf|csre|cst|csto|cpo|crb|cuc|cul|debug|def|deco|dict|diff|dex|dip|dg|dir|dy|ead|enc|eol|ea|ep|eb|ef|efm|ei|et|ex|fenc|fencs|ff|ffs|fic|ft|fcs|fixeol|fk|fcl|fdc|fen|fde|fdi|fdl|fdls|fmr|fdm|fml|fdn|fdo|fdt|fex|flp|fo|fp|fs|gd|gfm|gp|gcr|gfn|gfs|gfw|go|gtl|gtt|hf|hh|hlg|hid|hls|hi|hk|hkp|icon|iconstring|ic|imc|imd|imi|ims|inc|inex|is|inde|indk|inf|im|isf|isi|isk|isp|js|kmp|km|kp|lmap|lm|lrm|ls|lz|lbr|lines|lsp|lisp|lw|list|lcs|lpl|magic|mef|mp|mps|mat|mco|mfd|mmd|mm|mmp|mmt|mis|msm|ml|mls|ma|mod|more|mouse|mousef|mh|mousem|mouses|mouset|nf|nu|nuw|ofu|odev|opfunc|pp|para|paste|pt|pex|pm|pa|perldll|pi|pvh|pvw|pdev|penc|pexpr|pfn|pheader|pmbcs|pmbfn|popt|prompt|ph|pythondll|pythonthreedlll|qe|ro|rdt|re|rnu|remap|report|ri|rl|rlc|rubydll|ru|ruf|rtp|scr|scb|sj|so|sbo|sect|secure|sel|slm|ssop|sd|sh|shcf|sp|shq|srr|ssl|stmp|sxe|sxq|sr|sw|shm|sbr|sc|sft|sm|smd|stal|ss|siso|scl|scs|si|sta|sts|spell|spc|spf|spl|sps|sb|spr|sol|stl|su|sua|swf|swb|smc|syn|tal|tpm|ts|tbs|tc|tl|tr|tag|tgst|term|tbidi|terse|tw|tsr|top|to|tm|title|titlelen|titleold|titlestring|ttimeout|ttm|tty|udir|udf|ul|ur|uc|ut|vbs|vfile|vdir|vop|ve|vb|warn|ww|wc|wcm|wig|wic|wmnu|wim|wop|wak|wi|wh|wfh|wfw|wmh|wmw|wiw|wrap|wm|ws|write|wa|wb|wd)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.option.off.viml\",\n          \"match\": \"\\\\b(noanti|noantialias|noarab|noarabic|noarshape|noarabicshape|noari|noallowrevins|noakm|noaltkeymap|noacd|noautochdir|noai|noautoindent|noar|noautoread|noaw|noautowrite|noawa|noautowriteall|nobk|nobackup|nobeval|noballooneval|nobevalterm|noballoonevalterm|nobin|nobinary|nobomb|nobri|nobreakindent|nobl|nobuflisted|nocin|nocindent|nocp|nocompatible|nocf|noconfirm|noci|nocopyindent|nocsre|nocscoperelative|nocst|nocscopetag|nocsverb|nocscopeverbose|nocrb|nocursorbind|nocuc|nocursorcolumn|nocul|nocursorline|nodeco|nodelcombine|nodiff|nodg|nodigraph|noed|noedcompatible|noemo|noemoji|noeol|noendofline|noea|noequalalways|noeb|noerrorbells|noek|noesckeys|noet|noexpandtab|noex|noexrc|nofic|nofileignorecase|nofixeol|nofixendofline|nofk|nofkmap|nofen|nofoldenable|nofs|nofsync|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkp|nohkmapp|nohls|nohlsearch|noicon|noic|noignorecase|noimc|noimcmdline|noimd|noimdisable|nois|noincsearch|noinf|noinfercase|noim|noinsertmode|nojs|nojoinspaces|nolnr|nolangnoremap|nolrm|nolangremap|nolz|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|nolpl|noloadplugins|nomacatsui|nomagic|noml|nomodeline|noma|nomodifiable|nomod|nomodified|nomore|nomousef|nomousefocus|nomh|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopvw|nopreviewwindow|noprompt|noro|noreadonly|nornu|norelativenumber|nors|norestorescreen|nori|norevins|norl|norightleft|noru|noruler|noscb|noscrollbind|nosecure|nossl|noshellslash|nostmp|noshelltemp|nosr|noshiftround|nosn|noshortname|nosc|noshowcmd|nosft|noshowfulltag|nosm|noshowmatch|nosmd|noshowmode|noscs|nosmartcase|nosi|nosmartindent|nosta|nosmarttab|nospell|nosb|nosplitbelow|nospr|nosplitright|nosol|nostartofline|noswf|noswapfile|notbs|notagbsearch|notr|notagrelative|notgst|notagstack|notbidi|notermbidi|notgc|notermguicolors|noterse|nota|notextauto|notx|notextmode|notop|notildeop|noto|notimeout|notitle|nottimeout|notbi|nottybuiltin|notf|nottyfast|noudf|noundofile|novb|novisualbell|nowarn|nowiv|noweirdinvert|nowic|nowildignorecase|nowmnu|nowildmenu|nowfh|nowinfixheight|nowfw|nowinfixwidth|nowrapscan|nowrap|nows|nowrite|nowa|nowriteany|nowb|nowritebackup)\\\\b\"\n        }\n      ]\n    },\n    \"punctuation\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.parens.viml\",\n          \"match\": \"([()])\"\n        },\n        {\n          \"name\": \"punctuation.comma.viml\",\n          \"match\": \"([,])\"\n        }\n      ]\n    },\n    \"strings\": {\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.viml\",\n          \"begin\": \"\\\"\",\n          \"end\": \"(\\\"|$)\",\n          \"patterns\": []\n        },\n        {\n          \"name\": \"string.quoted.single.viml\",\n          \"begin\": \"'\",\n          \"end\": \"('|$)\",\n          \"patterns\": []\n        },\n        {\n          \"match\": \"/(\\\\\\\\\\\\\\\\|\\\\\\\\/|[^\\\\n/])*/\",\n          \"name\": \"string.regexp.viml\"\n        }\n      ]\n    },\n    \"support\": {\n      \"patterns\": [\n        {\n          \"name\": \"support.function.viml\",\n          \"match\": \"(add|call|delete|empty|extend|get|has|isdirectory|join|printf)(?=\\\\()\"\n        },\n        {\n          \"name\": \"support.function.viml\",\n          \"match\": \"\\\\b(echo(m|hl)?|exe(cute)?|redir|redraw|sleep|so(urce)?|wincmd|setf)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.builtin.vim-variable.viml\",\n          \"match\": \"(v\\\\:(beval_col|beval_bufnr|beval_lnum|beval_text|beval_winnr|char|charconvert_from|charconvert_to|cmdarg|cmdbang|count|count1|ctype|dying|errmsg|exception|fcs_reason|fcs_choice|fname_in|fname_out|fname_new|fname_diff|folddashes|foldlevel|foldend|foldstart|insertmode|key|lang|lc_time|lnum|mouse_win|mouse_lnum|mouse_col|oldfiles|operator|prevcount|profiling|progname|register|scrollstart|servername|searchforward|shell_error|statusmsg|swapname|swapchoice|swapcommand|termresponse|this_session|throwpoint|val|version|warningmsg|windowid))\"\n        },\n        {\n          \"name\": \"support.type.builtin.viml\",\n          \"match\": \"(&(cpo|isk|omnifunc|paste|previewwindow|rtp|tags|term|wrap))\"\n        },\n        {\n          \"name\": \"support.type.builtin.viml\",\n          \"match\": \"(&(shell(cmdflag|redir)?))\"\n        },\n        {\n          \"name\": \"support.variable.args.viml\",\n          \"match\": \"\\\\<args\\\\>\"\n        },\n        {\n          \"name\": \"support.type.syntax.viml\",\n          \"match\": \"\\\\b(None|ErrorMsg|WarningMsg)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.event.viml\",\n          \"match\": \"\\\\b(BufNewFile|BufReadPre|BufRead|BufReadPost|BufReadCmd|FileReadPre|FileReadPost|FileReadCmd|FilterReadPre|FilterReadPost|StdinReadPre|StdinReadPost|BufWrite|BufWritePre|BufWritePost|BufWriteCmd|FileWritePre|FileWritePost|FileWriteCmd|FileAppendPre|FileAppendPost|FileAppendCmd|FilterWritePre|FilterWritePost|BufAdd|BufCreate|BufDelete|BufWipeout|BufFilePre|BufFilePost|BufEnter|BufLeave|BufWinEnter|BufWinLeave|BufUnload|BufHidden|BufNew|SwapExists|TermOpen|TermClose|FileType|Syntax|OptionSet|VimEnter|GUIEnter|GUIFailed|TermResponse|QuitPre|VimLeavePre|VimLeave|DirChanged|FileChangedShell|FileChangedShellPost|FileChangedRO|ShellCmdPost|ShellFilterPost|CmdUndefined|FuncUndefined|SpellFileMissing|SourcePre|SourceCmd|VimResized|FocusGained|FocusLost|CursorHold|CursorHoldI|CursorMoved|CursorMovedI|WinNew|WinEnter|WinLeave|TabEnter|TabLeave|TabNew|TabNewEntered|TabClosed|CmdlineEnter|CmdlineLeave|CmdwinEnter|CmdwinLeave|InsertEnter|InsertChange|InsertLeave|InsertCharPre|TextYankPost|TextChanged|TextChangedI|ColorScheme|RemoteReply|QuickFixCmdPre|QuickFixCmdPost|SessionLoadPost|MenuPopup|CompleteDone|User)\\\\b\"\n        },\n        {\n          \"name\": \"support.type.syntax-group.viml\",\n          \"match\": \"\\\\b(Comment|Constant|String|Character|Number|Boolean|Float|Identifier|Function|Statement|Conditional|Repeat|Label|Operator|Keyword|Exception|PreProc|Include|Define|Macro|PreCondit|Type|StorageClass|Structure|Typedef|Special|SpecialChar|Tag|Delimiter|SpecialComment|Debug|Underlined|Ignore|Error|Todo)\\\\b\"\n        }\n      ]\n    },\n    \"syntax\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.syntax.viml\",\n          \"match\": \"syn(tax)? case (ignore|match)\"\n        },\n        {\n          \"name\": \"keyword.control.syntax.viml\",\n          \"match\": \"syn(tax)? (clear|enable|include|off|on|manual|sync)\"\n        },\n        {\n          \"name\": \"keyword.other.syntax.viml\",\n          \"match\": \"\\\\b(contained|display|excludenl|fold|keepend|oneline|skipnl|skipwhite|transparent)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.syntax.viml\",\n          \"match\": \"\\\\b(add|containedin|contains|matchgroup|nextgroup)\\\\=\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.syntax-range.viml\"\n            },\n            \"3\": {\n              \"name\": \"string.regexp.viml\"\n            }\n          },\n          \"match\": \"((start|skip|end)\\\\=)(\\\\+\\\\S+\\\\+\\\\s)?\"\n        },\n        {\n          \"captures\": {\n            \"0\": {\n              \"name\": \"support.type.syntax.viml\"\n            },\n            \"1\": {\n              \"name\": \"storage.syntax.viml\"\n            },\n            \"3\": {\n              \"name\": \"variable.other.syntax-scope.viml\"\n            },\n            \"4\": {\n              \"name\": \"storage.modifier.syntax.viml\"\n            }\n          },\n          \"match\": \"(syn|syntax)\\\\s+(cluster|keyword|match|region)(\\\\s+\\\\w+\\\\s+)(contained)?\",\n          \"patterns\": []\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"storage.highlight.viml\"\n            },\n            \"2\": {\n              \"name\": \"storage.modifier.syntax.viml\"\n            },\n            \"3\": {\n              \"name\": \"support.function.highlight.viml\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.viml\"\n            },\n            \"5\": {\n              \"name\": \"variable.other.viml\"\n            }\n          },\n          \"match\": \"(hi|highlight)(?:\\\\s+)(def|default)(?:\\\\s+)(link)(?:\\\\s+)(\\\\w+)(?:\\\\s+)(\\\\w+)\",\n          \"patterns\": []\n        }\n      ]\n    },\n    \"keyword\": {\n      \"patterns\": [\n        {\n          \"name\": \"keyword.control.viml\",\n          \"match\": \"\\\\b(if|while|for|return|au(g|group)|else(if|)?|do|in)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.control.viml\",\n          \"match\": \"\\\\b(end|endif|endfor|endwhile)\\\\s|$\"\n        },\n        {\n          \"name\": \"keyword.control.viml\",\n          \"match\": \"\\\\b(break|continue|try|catch|endtry|finally|finish|throw|range)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.function.viml\",\n          \"match\": \"\\\\b(fun|func|function|endfunction|endfunc)\\\\b\"\n        },\n        {\n          \"name\": \"keyword.other.viml\",\n          \"match\": \"\\\\b(normal|silent)\\\\b\"\n        },\n        {\n          \"include\": \"#operators\"\n        }\n      ]\n    },\n    \"storage\": {\n      \"patterns\": [\n        {\n          \"match\": \"\\\\b(call|let|unlet)\\\\b\",\n          \"name\": \"storage.viml\"\n        },\n        {\n          \"match\": \"\\\\b(abort|autocmd)\\\\b\",\n          \"name\": \"storage.viml\"\n        },\n        {\n          \"match\": \"\\\\b(set(l|local)?)\\\\b\",\n          \"name\": \"storage.viml\"\n        },\n        {\n          \"match\": \"\\\\b(com(mand)?)\\\\b\",\n          \"name\": \"storage.viml\"\n        },\n        {\n          \"match\": \"\\\\b(color(scheme)?)\\\\b\",\n          \"name\": \"storage.viml\"\n        },\n        {\n          \"match\": \"\\\\b(Plug|Plugin)\\\\b\",\n          \"name\": \"storage.plugin.viml\"\n        }\n      ]\n    },\n    \"variable\": {\n      \"patterns\": [\n        {\n          \"name\": \"variable.other.link.viml\",\n          \"match\": \"https?://\\\\S+\"\n        },\n        {\n          \"name\": \"variable.parameter.viml\",\n          \"match\": \"(?<=\\\\()([a-zA-Z]+)(?=\\\\))\"\n        },\n        {\n          \"name\": \"variable.other.viml\",\n          \"match\": \"\\\\b([absgl]:[a-zA-Z0-9_.#]+)\\\\b(?!\\\\()\"\n        }\n      ]\n    },\n    \"constant\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.language.boolean.viml\",\n          \"match\": \"\\\\b(true|false)\\\\b\"\n        },\n        {\n          \"name\": \"constant.numeric.viml\",\n          \"match\": \"\\\\b([0-9]+)\\\\b\"\n        }\n      ]\n    }\n  },\n  \"$schema\": \"https://raw.githubusercontent.com/dunstontc/textmate/master/schema/tmLanguage.schema.json\",\n  \"name\": \"viml\",\n  \"scopeName\": \"source.viml\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#constant\"\n    },\n    {\n      \"include\": \"#entity\"\n    },\n    {\n      \"include\": \"#keyword\"\n    },\n    {\n      \"include\": \"#punctuation\"\n    },\n    {\n      \"include\": \"#storage\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#support\"\n    },\n    {\n      \"include\": \"#variable\"\n    },\n    {\n      \"include\": \"#syntax\"\n    },\n    {\n      \"include\": \"#commands\"\n    },\n    {\n      \"include\": \"#option\"\n    },\n    {\n      \"include\": \"#map\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/vue-html.tmLanguage.json",
    "content": "{\n  \"name\": \"vue-html\",\n  \"scopeName\": \"text.html.vue-html\",\n  \"fileTypes\": [],\n  \"uuid\": \"ca2e4260-5d62-45bf-8cf1-d8b5cc19c8f8\",\n  \"patterns\": [\n    {\n      \"include\": \"source.vue#vue-interpolations\"\n    },\n    {\n      \"name\": \"meta.tag.any.html\",\n      \"begin\": \"(<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"support.class.component.html\"\n        }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"4\": {\n          \"name\": \"support.class.component.html\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.any.html\",\n      \"begin\": \"(<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.html\"\n        }\n      },\n      \"end\": \"(>)(<)(/)(\\\\2)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.html\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.preprocessor.xml.html\",\n      \"begin\": \"(<\\\\?)(xml)\",\n      \"end\": \"(\\\\?>)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    {\n      \"name\": \"comment.block.html\",\n      \"begin\": \"<!--\",\n      \"end\": \"-->\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      }\n    },\n    {\n      \"name\": \"meta.tag.sgml.html\",\n      \"begin\": \"<!\",\n      \"end\": \">\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.tag.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"meta.tag.sgml.doctype.html\",\n          \"begin\": \"(?i:DOCTYPE)\",\n          \"end\": \"(?=>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.doctype.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"name\": \"string.quoted.double.doctype.identifiers-and-DTDs.html\",\n              \"match\": \"\\\"[^\\\">]*\\\"\"\n            }\n          ]\n        },\n        {\n          \"name\": \"constant.other.inline-data.html\",\n          \"begin\": \"\\\\[CDATA\\\\[\",\n          \"end\": \"]](?=>)\"\n        },\n        {\n          \"name\": \"invalid.illegal.bad-comments-or-CDATA.html\",\n          \"match\": \"(\\\\s*)(?!--|>)\\\\S(\\\\s*)\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.block.any.html\",\n      \"begin\": \"(</?)([A-Z][a-zA-Z0-9:-]*\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"support.class.component.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.block.any.html\",\n      \"begin\": \"(</?)([a-z][a-zA-Z0-9:-]*\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.structure.any.html\",\n      \"begin\": \"(</?)((?i:body|head|html)\\\\b)\",\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.structure.any.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.block.any.html\",\n      \"begin\": \"(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.block.any.html\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.inline.any.html\",\n      \"begin\": \"(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\\\\b)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.inline.any.html\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"name\": \"meta.tag.other.html\",\n      \"begin\": \"(</?)([a-zA-Z0-9:-]+)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.other.html\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entities\"\n    },\n    {\n      \"name\": \"invalid.illegal.incomplete.html\",\n      \"match\": \"<>\"\n    },\n    {\n      \"name\": \"invalid.illegal.bad-angle-bracket.html\",\n      \"match\": \"<\"\n    }\n  ],\n  \"repository\": {\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.html\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.html\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"name\": \"string.quoted.double.html\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.vue#vue-interpolations\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"name\": \"string.quoted.single.html\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"source.vue#vue-interpolations\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"name\": \"entity.other.attribute-name.html\",\n      \"match\": \"(?<=[^=])\\\\b([a-zA-Z0-9:\\\\-_]+)\"\n    },\n    \"tag-id-attribute\": {\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?!\\\\G)(?<='|\\\"|[^\\\\s<>/])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.html\",\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.vue#vue-interpolations\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.html\",\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.vue#vue-interpolations\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.unquoted.html\",\n          \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"meta.toc-list.id.html\"\n            }\n          }\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#vue-directives\"\n        },\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        },\n        {\n          \"include\": \"#unquoted-attribute\"\n        }\n      ]\n    },\n    \"unquoted-attribute\": {\n      \"name\": \"string.unquoted.html\",\n      \"match\": \"(?<==)(?:[^\\\\s<>/'\\\"]|/(?!>))+\"\n    },\n    \"vue-directives\": {\n      \"name\": \"meta.directive.vue\",\n      \"begin\": \"(?:\\\\b(v-)|(:|@|#))([a-zA-Z0-9\\\\-_]+)(?:\\\\:([a-zA-Z\\\\-_]+))?(?:\\\\.([a-zA-Z\\\\-_]+))*\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")|(?=[\\\\s<>`])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/vue.tmLanguage.json",
    "content": "{\n  \"name\": \"vue\",\n  \"scopeName\": \"source.vue\",\n  \"fileTypes\": [\"vue\"],\n  \"uuid\": \"5512c10d-4cc5-434c-b8fc-53b912f55ab3\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)(slim)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(slim)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</slim>)\",\n          \"contentName\": \"text.slim\",\n          \"patterns\": [\n            {\n              \"include\": \"text.slim\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(i18n)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(i18n)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</i18n>)\",\n          \"contentName\": \"source.json\",\n          \"patterns\": [\n            {\n              \"include\": \"source.json\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(docs)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(docs)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</docs>)\",\n          \"contentName\": \"text.html.markdown\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.markdown\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"name\": \"comment.block.html\",\n      \"begin\": \"<!--\",\n      \"end\": \"-->\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.comment.html\"\n        }\n      }\n    },\n    {\n      \"begin\": \"(<)(?=template.*[^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        }\n      },\n      \"end\": \"(/>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"begin\": \"(template)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"entity.name.tag.template.html\"\n            }\n          },\n          \"end\": \"(?=/>)\",\n          \"patterns\": [\n            {\n              \"include\": \"#tag-stuff\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)(?=[^>]*>[^/>]*</template>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)\\\\b(?=[^>]*lang=('jade'|\\\"jade\\\"|'pug'|\\\"pug\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.pug\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.pug\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)\\\\b(?=[^>]*lang=('haml'|\\\"haml\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.haml\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.haml\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)\\\\b(?=[^>]*lang=('slim'|\\\"slim\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.slim\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.slim\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)\\\\b(?=[^>]*lang=('slm'|\\\"slm\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.jade.slm\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.jade.slm\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)\\\\b(?=[^>]*lang=('liquid'|\\\"liquid\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.html.liquid\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.liquid\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(template)(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        }\n      },\n      \"end\": \"^(</)(template)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.template.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"text.html.vue-html\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=^</template>)\",\n          \"patterns\": [\n            {\n              \"include\": \"text.html.vue-html\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(/>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)(?=[^>]*>[^/>]*</style>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=('sass'|\\\"sass\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.sass\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.sass\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=('scss'|\\\"scss\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.css.scss\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.scss\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=('less'|\\\"less\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.css.less\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.less\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=('stylus'|\\\"stylus\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.stylus\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.stylus\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=('postcss'|\\\"postcss\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.css.postcss\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.postcss\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)\\\\b(?=[^>]*lang=(['\\\"]sss['\\\"]))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.css.sugarss\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css.sugarss\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(style)(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        }\n      },\n      \"end\": \"(</)(style)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.style.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.css\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</style>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.css\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(script)\\\\b(?=[^>]*/>$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(/>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(script)(?=[^>]*>[^/>]*</script>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(</)(script)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</script>)\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(script)\\\\b(?=[^>]*lang=('ts'|\\\"ts\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(</)(script)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.ts\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</script>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.ts\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(script)\\\\b(?=[^>]*lang=('coffee'|\\\"coffee\\\"))(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(</)(script)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.coffee\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</script>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.coffee\"\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<)(script)(?![^/>]*/>\\\\s*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        }\n      },\n      \"end\": \"(</)(script)(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.begin.html\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.script.html\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.tag.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#tag-stuff\"\n        },\n        {\n          \"contentName\": \"source.js\",\n          \"begin\": \"(>)\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.tag.end.html\"\n            }\n          },\n          \"end\": \"(?=</script>)\",\n          \"patterns\": [\n            {\n              \"include\": \"source.js\"\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"repository\": {\n    \"entities\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.entity.html\",\n          \"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.definition.entity.html\"\n            }\n          }\n        },\n        {\n          \"name\": \"invalid.illegal.bad-ampersand.html\",\n          \"match\": \"&\"\n        }\n      ]\n    },\n    \"string-double-quoted\": {\n      \"name\": \"string.quoted.double.html\",\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#vue-interpolations\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"string-single-quoted\": {\n      \"name\": \"string.quoted.single.html\",\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.html\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"include\": \"#vue-interpolations\"\n        },\n        {\n          \"include\": \"#entities\"\n        }\n      ]\n    },\n    \"tag-generic-attribute\": {\n      \"name\": \"entity.other.attribute-name.html\",\n      \"match\": \"\\\\b([a-zA-Z\\\\-:_]+)\"\n    },\n    \"tag-id-attribute\": {\n      \"name\": \"meta.attribute-with-value.id.html\",\n      \"begin\": \"\\\\b(id)\\\\b\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.id.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"string.quoted.double.html\",\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#vue-interpolations\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        },\n        {\n          \"name\": \"string.quoted.single.html\",\n          \"contentName\": \"meta.toc-list.id.html\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"#vue-interpolations\"\n            },\n            {\n              \"include\": \"#entities\"\n            }\n          ]\n        }\n      ]\n    },\n    \"tag-stuff\": {\n      \"patterns\": [\n        {\n          \"include\": \"#vue-directives\"\n        },\n        {\n          \"include\": \"#tag-id-attribute\"\n        },\n        {\n          \"include\": \"#tag-generic-attribute\"\n        },\n        {\n          \"include\": \"#string-double-quoted\"\n        },\n        {\n          \"include\": \"#string-single-quoted\"\n        }\n      ]\n    },\n    \"vue-directives\": {\n      \"name\": \"meta.directive.vue\",\n      \"begin\": \"(?:\\\\b(v-)|(:|@|#))([a-zA-Z0-9\\\\-_]+)(?:\\\\:([a-zA-Z\\\\-_]+))?(?:\\\\.([a-zA-Z\\\\-_]+))*\\\\s*(=)\",\n      \"end\": \"(?<='|\\\")|(?=[\\\\s<>`])\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        },\n        \"3\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"4\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"5\": {\n          \"name\": \"entity.other.attribute-name.html\"\n        },\n        \"6\": {\n          \"name\": \"punctuation.separator.key-value.html\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"`\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"`\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        },\n        {\n          \"name\": \"source.directive.vue\",\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.html\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        }\n      ]\n    },\n    \"vue-interpolations\": {\n      \"patterns\": [\n        {\n          \"name\": \"expression.embedded.vue\",\n          \"begin\": \"\\\\{\\\\{\\\\{?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.generic.begin.html\"\n            }\n          },\n          \"end\": \"\\\\}\\\\}\\\\}?\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.generic.end.html\"\n            }\n          },\n          \"patterns\": [\n            {\n              \"include\": \"source.js#expression\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/wasm.tmLanguage.json",
    "content": "{\n  \"name\": \"wasm\",\n  \"scopeName\": \"source.wat\",\n  \"patterns\": [\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"include\": \"#strings\"\n    },\n    {\n      \"include\": \"#instructions\"\n    },\n    {\n      \"include\": \"#types\"\n    },\n    {\n      \"include\": \"#modules\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#invalid\"\n    }\n  ],\n  \"repository\": {\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Line comment\",\n          \"name\": \"comment.line.wat\",\n          \"match\": \"(;;).*$\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.comment.wat\"\n            }\n          }\n        },\n        {\n          \"comment\": \"Block comment\",\n          \"name\": \"comment.block.wat\",\n          \"begin\": \"\\\\(;\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.wat\"\n            }\n          },\n          \"end\": \";\\\\)\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.wat\"\n            }\n          }\n        }\n      ]\n    },\n    \"strings\": {\n      \"comment\": \"String literal\",\n      \"name\": \"string.quoted.double.wat\",\n      \"begin\": \"\\\"\",\n      \"end\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin\"\n        }\n      },\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end\"\n        }\n      },\n      \"patterns\": [\n        {\n          \"name\": \"constant.character.escape.wat\",\n          \"match\": \"\\\\\\\\(n|t|\\\\\\\\|'|\\\"|[0-9a-fA-F]{2})\"\n        }\n      ]\n    },\n    \"instructions\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Non-trapping float-to-int conversions\",\n          \"patterns\": [\n            {\n              \"comment\": \"Conversion instruction [nontrapping-float-to-int-conversions]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32|i64)\\\\.trunc_sat_f(?:32|64)_[su]\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"Sign-extension operators\",\n          \"patterns\": [\n            {\n              \"comment\": \"Numeric instruction (i32) [sign-extension-ops]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32)\\\\.(?:extend(?:8|16)_s)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Numeric instruction (i64) [sign-extension-ops]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i64)\\\\.(?:extend(?:8|16|32)_s)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"Bulk memory operations\",\n          \"patterns\": [\n            {\n              \"comment\": \"Memory instruction [bulk-memory-operations]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(memory)\\\\.(?:copy|fill|init|drop)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"Fixed-width SIMD\",\n          \"patterns\": [\n            {\n              \"comment\": \"Vector instruction (v128) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(v128)\\\\.(?:const|and|or|xor|not|andnot|bitselect|load|store)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (i8x16) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i8x16)\\\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|narrow_i16x8_[su])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (i16x8) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i16x8)\\\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (i32x4) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32x4)\\\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane|load16x4_[su]|trunc_sat_f32x4_[su]|widen_(low|high)_i16x8_[su])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (i64x2) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i64x2)\\\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|extract_lane|load32x2_[su])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (f32x4) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f32x4)\\\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt|convert_i32x4_[su])\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (f64x2) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f64x2)\\\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (v8x16) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(v8x16)\\\\.(?:load_splat|shuffle|swizzle)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (v16x8) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(v16x8)\\\\.load_splat\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (v32x4) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(v32x4)\\\\.load_splat\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector instruction (v64x2) [simd]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(v64x2)\\\\.load_splat\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"Threads\",\n          \"patterns\": [\n            {\n              \"comment\": \"Atomic instruction (i32) [threads]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32)\\\\.(atomic)\\\\.(?:load(?:8_u|16_u)?|store(?:8|16)?|wait|(rmw)\\\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16)\\\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"2\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"3\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"4\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Atomic instruction (i64) [threads]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i64)\\\\.(atomic)\\\\.(?:load(?:8_u|16_u|32_u)?|store(?:8|16|32)?|wait|(rmw)\\\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16|rmw32)\\\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"2\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"3\": {\n                  \"name\": \"support.class.wat\"\n                },\n                \"4\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Atomic instruction [threads]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(atomic)\\\\.(?:notify|fence)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Shared modifier [threads]\",\n              \"name\": \"storage.modifier.wat\",\n              \"match\": \"\\\\bshared\\\\b\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Reference types\",\n          \"patterns\": [\n            {\n              \"comment\": \"Reference instruction [reference-types]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(ref)\\\\.(?:null|is_null|func|extern)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Table instruction [reference-types]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(table)\\\\.(?:get|size|grow|fill|init|copy)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Type name [reference-types]\",\n              \"name\": \"entity.name.type.wat\",\n              \"match\": \"\\\\b(?:externref|funcref|nullref)\\\\b\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Tail Call\",\n          \"patterns\": [\n            {\n              \"comment\": \"Control instruction [tail-call]\",\n              \"name\": \"keyword.control.wat\",\n              \"match\": \"\\\\breturn_call(?:_indirect)?\\\\b\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Exception handling\",\n          \"patterns\": [\n            {\n              \"comment\": \"Control instruction [exception-handling]\",\n              \"name\": \"keyword.control.wat\",\n              \"match\": \"\\\\b(?:try|catch|throw|rethrow|br_on_exn)\\\\b\"\n            },\n            {\n              \"comment\": \"Module element [exception-handling]\",\n              \"name\": \"storage.type.wat\",\n              \"match\": \"(?<=\\\\()event\\\\b\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Binaryen extensions\",\n          \"patterns\": [\n            {\n              \"comment\": \"Pseudo stack instruction [binaryen]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32|i64|f32|f64|externref|funcref|nullref|exnref)\\\\.(?:push|pop)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"MVP\",\n          \"patterns\": [\n            {\n              \"comment\": \"Memory instruction (i32) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32)\\\\.(?:load|load(?:8|16)(?:_[su])?|store(?:8|16)?)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Memory instruction (i64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i64)\\\\.(?:load|load(?:8|16|32)(?:_[su])?|store(?:8|16|32)?)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Memory instruction (f32/f64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f32|f64)\\\\.(?:load|store)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Memory instruction [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(memory)\\\\.(?:size|grow)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.memory.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Memory instruction attribute [mvp]\",\n              \"match\": \"\\\\b(offset|align)=\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.other.attribute-name.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Variable instruction (local) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(local)\\\\.(?:get|set|tee)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.local.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Variable instruction (global) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(global)\\\\.(?:get|set)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.global.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Numeric instruction (i32/i64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32|i64)\\\\.(const|eqz|eq|ne|lt_[su]|gt_[su]|le_[su]|ge_[su]|clz|ctz|popcnt|add|sub|mul|div_[su]|rem_[su]|and|or|xor|shl|shr_[su]|rotl|rotr)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Numeric instruction (f32/f64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f32|f64)\\\\.(const|eq|ne|lt|gt|le|ge|abs|neg|ceil|floor|trunc|nearest|sqrt|add|sub|mul|div|min|max|copysign)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Conversion instruction (i32) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i32)\\\\.(wrap_i64|trunc_(f32|f64)_[su]|reinterpret_f32)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Conversion instruction (i64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(i64)\\\\.(extend_i32_[su]|trunc_f(32|64)_[su]|reinterpret_f64)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Conversion instruction (f32) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f32)\\\\.(convert_i(32|64)_[su]|demote_f64|reinterpret_i32)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Conversion instruction (f64) [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(f64)\\\\.(convert_i(32|64)_[su]|promote_f32|reinterpret_i64)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.class.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Control instruction [mvp]\",\n              \"name\": \"keyword.control.wat\",\n              \"match\": \"\\\\b(?:unreachable|nop|block|loop|if|then|else|end|br|br_if|br_table|return|call|call_indirect)\\\\b\"\n            },\n            {\n              \"comment\": \"Parametric instruction [mvp]\",\n              \"name\": \"keyword.operator.word.wat\",\n              \"match\": \"\\\\b(?:drop|select)\\\\b\"\n            }\n          ]\n        }\n      ]\n    },\n    \"types\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Fixed-width SIMD\",\n          \"patterns\": [\n            {\n              \"comment\": \"Type name [simd]\",\n              \"name\": \"entity.name.type.wat\",\n              \"match\": \"\\\\bv128\\\\b(?!\\\\.)\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Reference types\",\n          \"patterns\": [\n            {\n              \"comment\": \"Type name [reference-types]\",\n              \"name\": \"entity.name.type.wat\",\n              \"match\": \"\\\\b(?:externref|funcref|nullref)\\\\b(?!\\\\.)\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"Exception handling\",\n          \"patterns\": [\n            {\n              \"comment\": \"Type name [exception-handling]\",\n              \"name\": \"entity.name.type.wat\",\n              \"match\": \"\\\\bexnref\\\\b(?!\\\\.)\"\n            }\n          ]\n        },\n        {\n          \"comment\": \"MVP\",\n          \"patterns\": [\n            {\n              \"comment\": \"Type name [mvp]\",\n              \"name\": \"entity.name.type.wat\",\n              \"match\": \"\\\\b(?:i32|i64|f32|f64)\\\\b(?!\\\\.)\"\n            }\n          ]\n        }\n      ]\n    },\n    \"modules\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Bulk memory operations\",\n          \"patterns\": [\n            {\n              \"comment\": \"Passive modifier [bulk-memory-operations]\",\n              \"match\": \"(?<=\\\\(data)\\\\s+(passive)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"MVP\",\n          \"patterns\": [\n            {\n              \"comment\": \"Module element [mvp]\",\n              \"name\": \"storage.type.wat\",\n              \"match\": \"(?<=\\\\()(?:module|import|export|memory|data|table|elem|start|func|type|param|result|global|local)\\\\b\"\n            },\n            {\n              \"comment\": \"Mutable global modifier [mvp]\",\n              \"name\": \"storage.modifier.wat\",\n              \"match\": \"(?<=\\\\()\\\\s*(mut)\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"storage.modifier.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Function name [mvp]\",\n              \"match\": \"(?<=\\\\(func|\\\\(start|call|return_call|ref\\\\.func)\\\\s+(\\\\$[0-9A-Za-z!#$%&'*+\\\\-./:<=>?@\\\\\\\\^_`|~]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Function name(s) (elem) [mvp]\",\n              \"begin\": \"\\\\)\\\\s+(\\\\$[0-9A-Za-z!#$%&'*+\\\\-./:<=>?@\\\\\\\\^_`|~]*)\",\n              \"beginCaptures\": {\n                \"1\": {\n                  \"name\": \"entity.name.function.wat\"\n                }\n              },\n              \"end\": \"\\\\)\",\n              \"patterns\": [\n                {\n                  \"name\": \"entity.name.function.wat\",\n                  \"match\": \"(?<=\\\\s)\\\\$[0-9A-Za-z!#$%&'*+\\\\-./:<=>?@\\\\\\\\^_`|~]*\"\n                }\n              ]\n            },\n            {\n              \"comment\": \"Function type [mvp]\",\n              \"match\": \"(?<=\\\\(type)\\\\s+(\\\\$[0-9A-Za-z!#$%&'*+\\\\-./:<=>?@\\\\\\\\^_`|~]*)\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.function.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Variable name or branch label [mvp]\",\n              \"name\": \"variable.other.wat\",\n              \"match\": \"\\\\$[0-9A-Za-z!#$%&'*+\\\\-./:<=>?@\\\\\\\\^_`|~]*\\\\b\"\n            }\n          ]\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"comment\": \"Fixed-width SIMD\",\n          \"patterns\": [\n            {\n              \"comment\": \"Vector literal (i8x16) [simd]\",\n              \"name\": \"constant.numeric.vector.wat\",\n              \"match\": \"\\\\b(i8x16)(?:\\\\s+0x[0-9a-fA-F]{1,2}){16}\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector literal (i16x8) [simd]\",\n              \"name\": \"constant.numeric.vector.wat\",\n              \"match\": \"\\\\b(i16x8)(?:\\\\s+0x[0-9a-fA-F]{1,4}){8}\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector literal (i32x4) [simd]\",\n              \"name\": \"constant.numeric.vector.wat\",\n              \"match\": \"\\\\b(i32x4)(?:\\\\s+0x[0-9a-fA-F]{1,8}){4}\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.wat\"\n                }\n              }\n            },\n            {\n              \"comment\": \"Vector literal (i64x2) [simd]\",\n              \"name\": \"constant.numeric.vector.wat\",\n              \"match\": \"\\\\b(i64x2)(?:\\\\s+0x[0-9a-fA-F]{1,16}){2}\\\\b\",\n              \"captures\": {\n                \"1\": {\n                  \"name\": \"support.type.wat\"\n                }\n              }\n            }\n          ]\n        },\n        {\n          \"comment\": \"MVP\",\n          \"patterns\": [\n            {\n              \"comment\": \"Floating point literal\",\n              \"name\": \"constant.numeric.float.wat\",\n              \"match\": \"[+-]?\\\\b[0-9][0-9]*(?:\\\\.[0-9][0-9]*)?(?:[eE][+-]?[0-9]+)?\\\\b\"\n            },\n            {\n              \"comment\": \"Floating point hexadecimal literal\",\n              \"name\": \"constant.numeric.float.wat\",\n              \"match\": \"[+-]?\\\\b0x([0-9a-fA-F]*\\\\.[0-9a-fA-F]+|[0-9a-fA-F]+\\\\.?)[Pp][+-]?[0-9]+\\\\b\"\n            },\n            {\n              \"comment\": \"Floating point infinity\",\n              \"name\": \"constant.numeric.float.wat\",\n              \"match\": \"[+-]?\\\\binf\\\\b\"\n            },\n            {\n              \"comment\": \"Floating point literal (NaN)\",\n              \"name\": \"constant.numeric.float.wat\",\n              \"match\": \"[+-]?\\\\bnan:0x[0-9a-fA-F][0-9a-fA-F]*\\\\b\"\n            },\n            {\n              \"comment\": \"Integer literal\",\n              \"name\": \"constant.numeric.integer.wat\",\n              \"match\": \"[+-]?\\\\b(?:0x[0-9a-fA-F][0-9a-fA-F]*|\\\\d[\\\\d]*)\\\\b\"\n            }\n          ]\n        }\n      ]\n    },\n    \"invalid\": {\n      \"patterns\": [\n        {\n          \"name\": \"invalid.wat\",\n          \"match\": \"[^\\\\s()]+\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/wenyan.tmLanguage.json",
    "content": "{\n  \"$schema\": \"https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json\",\n  \"scopeName\": \"source.wenyan\",\n  \"name\": \"wenyan\",\n  \"patterns\": [\n    {\n      \"include\": \"#keywords\"\n    },\n    {\n      \"include\": \"#constants\"\n    },\n    {\n      \"include\": \"#operators\"\n    },\n    {\n      \"include\": \"#symbols\"\n    },\n    {\n      \"include\": \"#expression\"\n    },\n    {\n      \"include\": \"#comment-blocks\"\n    },\n    {\n      \"include\": \"#comment-lines\"\n    }\n  ],\n  \"repository\": {\n    \"expression\": {\n      \"patterns\": [\n        {\n          \"include\": \"#variables\"\n        }\n      ]\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"name\": \"storage.type\",\n          \"match\": \"數|列|言|術|爻|物|元\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"乃行是術曰|若其不然者|乃歸空無|欲行是術|乃止是遍|若其然者|其物如是|乃得矣|之術也|必先得|是術曰|恆為是|之物也|乃得|是謂|云云|中之|為是|乃止|若非|或若|之長|其餘\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"或云|蓋謂\"\n        },\n        {\n          \"name\": \"keyword.operator\",\n          \"match\": \"中有陽乎|中無陰乎|所餘幾何|不等於|不大於|不小於|等於|大於|小於|加|減|乘|除|變|以|於\"\n        },\n        {\n          \"name\": \"keyword.other\",\n          \"match\": \"不知何禍歟|不復存矣|姑妄行此|如事不諧|名之曰|吾嘗觀|之禍歟|乃作罷|吾有|今有|物之|書之|以施|昔之|是矣|之書|方悟|之義|嗚呼|之禍|有|施|曰|噫|取|今|夫|中|豈\"\n        },\n        {\n          \"name\": \"keyword.control\",\n          \"match\": \"也|凡|遍|若|者|之|充|銜\"\n        }\n      ]\n    },\n    \"comment-lines\": {\n      \"name\": \"comment.line\",\n      \"begin\": \"注曰|疏曰|批曰\",\n      \"end\": \"$\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"comment-blocks\": {\n      \"name\": \"comment.block\",\n      \"begin\": \"(注曰|疏曰|批曰)。?(「「|『)\",\n      \"end\": \"(」」|』)\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    },\n    \"constants\": {\n      \"patterns\": [\n        {\n          \"name\": \"constant.numeric\",\n          \"match\": \"負|·|又|零|〇|一|二|三|四|五|六|七|八|九|十|百|千|萬|億|兆|京|垓|秭|穰|溝|澗|正|載|極|分|釐|毫|絲|忽|微|纖|沙|塵|埃|渺|漠\"\n        },\n        {\n          \"name\": \"constant.language\",\n          \"match\": \"其|陰|陽\"\n        },\n        {\n          \"name\": \"string.quoted\",\n          \"begin\": \"「「|『\",\n          \"end\": \"」」|』\",\n          \"patterns\": [\n            {\n              \"name\": \"constant.character\",\n              \"match\": \"\\\\\\\\.\"\n            }\n          ]\n        }\n      ]\n    },\n    \"symbols\": {\n      \"patterns\": [\n        {\n          \"name\": \"punctuation.separator\",\n          \"match\": \"。|、\"\n        }\n      ]\n    },\n    \"variables\": {\n      \"name\": \"variable.other\",\n      \"begin\": \"「\",\n      \"end\": \"」\",\n      \"patterns\": [\n        {\n          \"name\": \"constant.character\",\n          \"match\": \"\\\\\\\\.\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/xml.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-xml/blob/master/grammars/xml.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-xml/commit/7bc75dfe779ad5b35d9bf4013d9181864358cb49\",\n  \"name\": \"xml\",\n  \"scopeName\": \"text.xml\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<\\\\?)\\\\s*([-_a-zA-Z0-9]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml\"\n        }\n      },\n      \"end\": \"(\\\\?>)\",\n      \"name\": \"meta.tag.preprocessor.xml\",\n      \"patterns\": [\n        {\n          \"match\": \" ([a-zA-Z-]+)\",\n          \"name\": \"entity.other.attribute-name.xml\"\n        },\n        {\n          \"include\": \"#doublequotedString\"\n        },\n        {\n          \"include\": \"#singlequotedString\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(<!)(DOCTYPE)\\\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.doctype.xml\"\n        },\n        \"3\": {\n          \"name\": \"variable.language.documentroot.xml\"\n        }\n      },\n      \"end\": \"\\\\s*(>)\",\n      \"name\": \"meta.tag.sgml.doctype.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#internalSubset\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#comments\"\n    },\n    {\n      \"begin\": \"(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\\\s[^>]*)?></\\\\2>)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.xml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.namespace.xml\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.xml\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.xml\"\n        }\n      },\n      \"end\": \"(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)\",\n      \"endCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.xml\"\n        },\n        \"4\": {\n          \"name\": \"entity.name.tag.namespace.xml\"\n        },\n        \"5\": {\n          \"name\": \"punctuation.separator.namespace.xml\"\n        },\n        \"6\": {\n          \"name\": \"entity.name.tag.localname.xml\"\n        },\n        \"7\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        }\n      },\n      \"name\": \"meta.tag.no-content.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#tagStuff\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"(</?)(?:([-\\\\w\\\\.]+)((:)))?([-\\\\w\\\\.:]+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.xml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.xml\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.xml\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.xml\"\n        }\n      },\n      \"end\": \"(/?>)\",\n      \"name\": \"meta.tag.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#tagStuff\"\n        }\n      ]\n    },\n    {\n      \"include\": \"#entity\"\n    },\n    {\n      \"include\": \"#bare-ampersand\"\n    },\n    {\n      \"begin\": \"<%@\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.xml\"\n        }\n      },\n      \"end\": \"%>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.xml\"\n        }\n      },\n      \"name\": \"source.java-props.embedded.xml\",\n      \"patterns\": [\n        {\n          \"match\": \"page|include|taglib\",\n          \"name\": \"keyword.other.page-props.xml\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<%[!=]?(?!--)\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.begin.xml\"\n        }\n      },\n      \"end\": \"(?!--)%>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.section.embedded.end.xml\"\n        }\n      },\n      \"name\": \"source.java.embedded.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"source.java\"\n        }\n      ]\n    },\n    {\n      \"begin\": \"<!\\\\[CDATA\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"end\": \"]]>\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.unquoted.cdata.xml\"\n    }\n  ],\n  \"repository\": {\n    \"EntityDecl\": {\n      \"begin\": \"(<!)(ENTITY)\\\\s+(%\\\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\\\s+(?:SYSTEM|PUBLIC)\\\\s+)?\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"keyword.other.entity.xml\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.entity.xml\"\n        },\n        \"4\": {\n          \"name\": \"variable.language.entity.xml\"\n        },\n        \"5\": {\n          \"name\": \"keyword.other.entitytype.xml\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"patterns\": [\n        {\n          \"include\": \"#doublequotedString\"\n        },\n        {\n          \"include\": \"#singlequotedString\"\n        }\n      ]\n    },\n    \"bare-ampersand\": {\n      \"match\": \"&\",\n      \"name\": \"invalid.illegal.bad-ampersand.xml\"\n    },\n    \"doublequotedString\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.double.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#entity\"\n        },\n        {\n          \"include\": \"#bare-ampersand\"\n        }\n      ]\n    },\n    \"entity\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        }\n      },\n      \"match\": \"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n      \"name\": \"constant.character.entity.xml\"\n    },\n    \"internalSubset\": {\n      \"begin\": \"(\\\\[)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        }\n      },\n      \"end\": \"(\\\\])\",\n      \"name\": \"meta.internalsubset.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#EntityDecl\"\n        },\n        {\n          \"include\": \"#parameterEntity\"\n        },\n        {\n          \"include\": \"#comments\"\n        }\n      ]\n    },\n    \"parameterEntity\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        },\n        \"3\": {\n          \"name\": \"punctuation.definition.constant.xml\"\n        }\n      },\n      \"match\": \"(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)\",\n      \"name\": \"constant.character.parameter-entity.xml\"\n    },\n    \"singlequotedString\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.single.xml\",\n      \"patterns\": [\n        {\n          \"include\": \"#entity\"\n        },\n        {\n          \"include\": \"#bare-ampersand\"\n        }\n      ]\n    },\n    \"tagStuff\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.namespace.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.xml\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.xml\"\n            }\n          },\n          \"match\": \"(?:^|\\\\s+)(?:([-\\\\w.]+)((:)))?([-\\\\w.:]+)\\\\s*=\"\n        },\n        {\n          \"include\": \"#doublequotedString\"\n        },\n        {\n          \"include\": \"#singlequotedString\"\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"begin\": \"<%--\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.xml\"\n            },\n            \"end\": \"--%>\",\n            \"name\": \"comment.block.xml\"\n          }\n        },\n        {\n          \"begin\": \"<!--\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.xml\"\n            }\n          },\n          \"end\": \"-->\",\n          \"name\": \"comment.block.xml\",\n          \"patterns\": [\n            {\n              \"begin\": \"--(?!>)\",\n              \"captures\": {\n                \"0\": {\n                  \"name\": \"invalid.illegal.bad-comments-or-CDATA.xml\"\n                }\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/xsl.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/atom/language-xml/blob/master/grammars/xsl.cson\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/atom/language-xml/commit/507de2ee7daca60cf02e9e21fbeb92bbae73e280\",\n  \"name\": \"xsl\",\n  \"scopeName\": \"text.xml.xsl\",\n  \"patterns\": [\n    {\n      \"begin\": \"(<)(xsl)((:))(template)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"punctuation.definition.tag.xml\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.tag.namespace.xml\"\n        },\n        \"3\": {\n          \"name\": \"entity.name.tag.xml\"\n        },\n        \"4\": {\n          \"name\": \"punctuation.separator.namespace.xml\"\n        },\n        \"5\": {\n          \"name\": \"entity.name.tag.localname.xml\"\n        }\n      },\n      \"end\": \"(>)\",\n      \"name\": \"meta.tag.xml.template\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"entity.other.attribute-name.namespace.xml\"\n            },\n            \"2\": {\n              \"name\": \"entity.other.attribute-name.xml\"\n            },\n            \"3\": {\n              \"name\": \"punctuation.separator.namespace.xml\"\n            },\n            \"4\": {\n              \"name\": \"entity.other.attribute-name.localname.xml\"\n            }\n          },\n          \"match\": \" (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+)\"\n        },\n        {\n          \"include\": \"#doublequotedString\"\n        },\n        {\n          \"include\": \"#singlequotedString\"\n        }\n      ]\n    },\n    {\n      \"include\": \"text.xml\"\n    }\n  ],\n  \"repository\": {\n    \"doublequotedString\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.double.xml\"\n    },\n    \"singlequotedString\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.xml\"\n        }\n      },\n      \"end\": \"'\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.xml\"\n        }\n      },\n      \"name\": \"string.quoted.single.xml\"\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/yaml.tmLanguage.json",
    "content": "{\n  \"information_for_contributors\": [\n    \"This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage\",\n    \"If you want to provide a fix or improvement, please create a pull request against the original repository.\",\n    \"Once accepted there, we are happy to receive an update request.\"\n  ],\n  \"version\": \"https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46\",\n  \"name\": \"yaml\",\n  \"scopeName\": \"source.yaml\",\n  \"patterns\": [\n    {\n      \"include\": \"#comment\"\n    },\n    {\n      \"include\": \"#property\"\n    },\n    {\n      \"include\": \"#directive\"\n    },\n    {\n      \"match\": \"^---\",\n      \"name\": \"entity.other.document.begin.yaml\"\n    },\n    {\n      \"match\": \"^\\\\.{3}\",\n      \"name\": \"entity.other.document.end.yaml\"\n    },\n    {\n      \"include\": \"#node\"\n    }\n  ],\n  \"repository\": {\n    \"block-collection\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-sequence\"\n        },\n        {\n          \"include\": \"#block-mapping\"\n        }\n      ]\n    },\n    \"block-mapping\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-pair\"\n        }\n      ]\n    },\n    \"block-node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"include\": \"#block-scalar\"\n        },\n        {\n          \"include\": \"#block-collection\"\n        },\n        {\n          \"include\": \"#flow-scalar-plain-out\"\n        },\n        {\n          \"include\": \"#flow-node\"\n        }\n      ]\n    },\n    \"block-pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.definition.key-value.begin.yaml\"\n            }\n          },\n          \"end\": \"(?=\\\\?)|^ *(:)|(:)\",\n          \"endCaptures\": {\n            \"1\": {\n              \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n            },\n            \"2\": {\n              \"name\": \"invalid.illegal.expected-newline.yaml\"\n            }\n          },\n          \"name\": \"meta.block-mapping.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#block-node\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n                        (?=\\n                            (?x:\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] \\\\S\\n                            )\\n                            (\\n                                  [^\\\\s:]\\n                                | : \\\\S\\n                                | \\\\s+ (?![#\\\\s])\\n                            )*\\n                            \\\\s*\\n                            :\\n\\t\\t\\t\\t\\t\\t\\t(\\\\s|$)\\n                        )\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                        )\\n                    \",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-scalar-plain-out-implicit-type\"\n            },\n            {\n              \"begin\": \"(?x)\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] \\\\S\\n                            \",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.yaml\"\n                }\n              },\n              \"contentName\": \"entity.name.tag.yaml\",\n              \"end\": \"(?x)\\n                                (?=\\n                                      \\\\s* $\\n                                    | \\\\s+ \\\\#\\n                                    | \\\\s* : (\\\\s|$)\\n                                )\\n                            \",\n              \"name\": \"string.unquoted.plain.out.yaml\"\n            }\n          ]\n        },\n        {\n          \"match\": \":(?=\\\\s|$)\",\n          \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n        }\n      ]\n    },\n    \"block-scalar\": {\n      \"begin\": \"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.block-scalar.literal.yaml\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.flow.block-scalar.folded.yaml\"\n        },\n        \"3\": {\n          \"name\": \"constant.numeric.indentation-indicator.yaml\"\n        },\n        \"4\": {\n          \"name\": \"storage.modifier.chomping-indicator.yaml\"\n        },\n        \"5\": {\n          \"patterns\": [\n            {\n              \"include\": \"#comment\"\n            },\n            {\n              \"match\": \".+\",\n              \"name\": \"invalid.illegal.expected-comment-or-newline.yaml\"\n            }\n          ]\n        }\n      },\n      \"end\": \"^(?=\\\\S)|(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"^([ ]+)(?! )\",\n          \"end\": \"^(?!\\\\1|\\\\s*$)\",\n          \"name\": \"string.unquoted.block.yaml\"\n        }\n      ]\n    },\n    \"block-sequence\": {\n      \"match\": \"(-)(?!\\\\S)\",\n      \"name\": \"punctuation.definition.block.sequence.item.yaml\"\n    },\n    \"comment\": {\n      \"begin\": \"(?:(^[ \\\\t]*)|[ \\\\t]+)(?=#\\\\p{Print}*$)\",\n      \"beginCaptures\": {\n        \"1\": {\n          \"name\": \"punctuation.whitespace.comment.leading.yaml\"\n        }\n      },\n      \"end\": \"(?!\\\\G)\",\n      \"patterns\": [\n        {\n          \"begin\": \"#\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.comment.yaml\"\n            }\n          },\n          \"end\": \"\\\\n\",\n          \"name\": \"comment.line.number-sign.yaml\"\n        }\n      ]\n    },\n    \"directive\": {\n      \"begin\": \"^%\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.directive.begin.yaml\"\n        }\n      },\n      \"end\": \"(?=$|[ \\\\t]+($|#))\",\n      \"name\": \"meta.directive.yaml\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.directive.yaml.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.numeric.yaml-version.yaml\"\n            }\n          },\n          \"match\": \"\\\\G(YAML)[ \\\\t]+(\\\\d+\\\\.\\\\d+)\"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.other.directive.tag.yaml\"\n            },\n            \"2\": {\n              \"name\": \"storage.type.tag-handle.yaml\"\n            },\n            \"3\": {\n              \"name\": \"support.type.tag-prefix.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        \\\\G\\n                        (TAG)\\n                        (?:[ \\\\t]+\\n                            ((?:!(?:[0-9A-Za-z\\\\-]*!)?))\\n                            (?:[ \\\\t]+ (\\n                                  !              (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )*\\n                                | (?![,!\\\\[\\\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )+\\n                                )\\n                            )?\\n                        )?\\n                    \"\n        },\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"support.other.directive.reserved.yaml\"\n            },\n            \"2\": {\n              \"name\": \"string.unquoted.directive-name.yaml\"\n            },\n            \"3\": {\n              \"name\": \"string.unquoted.directive-parameter.yaml\"\n            }\n          },\n          \"match\": \"(?x) \\\\G (\\\\w+) (?:[ \\\\t]+ (\\\\w+) (?:[ \\\\t]+ (\\\\w+))? )?\"\n        },\n        {\n          \"match\": \"\\\\S+\",\n          \"name\": \"invalid.illegal.unrecognized.yaml\"\n        }\n      ]\n    },\n    \"flow-alias\": {\n      \"captures\": {\n        \"1\": {\n          \"name\": \"keyword.control.flow.alias.yaml\"\n        },\n        \"2\": {\n          \"name\": \"punctuation.definition.alias.yaml\"\n        },\n        \"3\": {\n          \"name\": \"variable.other.alias.yaml\"\n        },\n        \"4\": {\n          \"name\": \"invalid.illegal.character.anchor.yaml\"\n        }\n      },\n      \"match\": \"((\\\\*))([^\\\\s\\\\[\\\\]/{/},]+)([^\\\\s\\\\]},]\\\\S*)?\"\n    },\n    \"flow-collection\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-sequence\"\n        },\n        {\n          \"include\": \"#flow-mapping\"\n        }\n      ]\n    },\n    \"flow-mapping\": {\n      \"begin\": \"\\\\{\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.mapping.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\\}\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.mapping.end.yaml\"\n        }\n      },\n      \"name\": \"meta.flow-mapping.yaml\",\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.mapping.yaml\"\n        },\n        {\n          \"include\": \"#flow-pair\"\n        }\n      ]\n    },\n    \"flow-node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"include\": \"#flow-alias\"\n        },\n        {\n          \"include\": \"#flow-collection\"\n        },\n        {\n          \"include\": \"#flow-scalar\"\n        }\n      ]\n    },\n    \"flow-pair\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\?\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.key-value.begin.yaml\"\n            }\n          },\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.explicit.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#prototype\"\n            },\n            {\n              \"include\": \"#flow-pair\"\n            },\n            {\n              \"include\": \"#flow-node\"\n            },\n            {\n              \"begin\": \":(?=\\\\s|$|[\\\\[\\\\]{},])\",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n                }\n              },\n              \"end\": \"(?=[},\\\\]])\",\n              \"patterns\": [\n                {\n                  \"include\": \"#flow-value\"\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"begin\": \"(?x)\\n                        (?=\\n                            (?:\\n                                [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                              | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                            )\\n                            (\\n                                  [^\\\\s:[\\\\[\\\\]{},]]\\n                                | : [^\\\\s[\\\\[\\\\]{},]]\\n                                | \\\\s+ (?![#\\\\s])\\n                            )*\\n                            \\\\s*\\n                            :\\n\\t\\t\\t\\t\\t\\t\\t(\\\\s|$)\\n                        )\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                            | \\\\s* : [\\\\[\\\\]{},]\\n                            | \\\\s* [\\\\[\\\\]{},]\\n                        )\\n                    \",\n          \"name\": \"meta.flow-pair.key.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-scalar-plain-in-implicit-type\"\n            },\n            {\n              \"begin\": \"(?x)\\n                                  [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                                | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                            \",\n              \"beginCaptures\": {\n                \"0\": {\n                  \"name\": \"entity.name.tag.yaml\"\n                }\n              },\n              \"contentName\": \"entity.name.tag.yaml\",\n              \"end\": \"(?x)\\n                                (?=\\n                                      \\\\s* $\\n                                    | \\\\s+ \\\\#\\n                                    | \\\\s* : (\\\\s|$)\\n                                    | \\\\s* : [\\\\[\\\\]{},]\\n                                    | \\\\s* [\\\\[\\\\]{},]\\n                                )\\n                            \",\n              \"name\": \"string.unquoted.plain.in.yaml\"\n            }\n          ]\n        },\n        {\n          \"include\": \"#flow-node\"\n        },\n        {\n          \"begin\": \":(?=\\\\s|$|[\\\\[\\\\]{},])\",\n          \"captures\": {\n            \"0\": {\n              \"name\": \"punctuation.separator.key-value.mapping.yaml\"\n            }\n          },\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-value\"\n            }\n          ]\n        }\n      ]\n    },\n    \"flow-scalar\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-double-quoted\"\n        },\n        {\n          \"include\": \"#flow-scalar-single-quoted\"\n        },\n        {\n          \"include\": \"#flow-scalar-plain-in\"\n        }\n      ]\n    },\n    \"flow-scalar-double-quoted\": {\n      \"begin\": \"\\\"\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\"\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.yaml\"\n        }\n      },\n      \"name\": \"string.quoted.double.yaml\",\n      \"patterns\": [\n        {\n          \"match\": \"\\\\\\\\([0abtnvfre \\\"/\\\\\\\\N_Lp]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})\",\n          \"name\": \"constant.character.escape.yaml\"\n        },\n        {\n          \"match\": \"\\\\\\\\\\\\n\",\n          \"name\": \"constant.character.escape.double-quoted.newline.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-in\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-plain-in-implicit-type\"\n        },\n        {\n          \"begin\": \"(?x)\\n                          [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                        | [?:-] [^\\\\s[\\\\[\\\\]{},]]\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                            | \\\\s* : [\\\\[\\\\]{},]\\n                            | \\\\s* [\\\\[\\\\]{},]\\n                        )\\n                    \",\n          \"name\": \"string.unquoted.plain.in.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-in-implicit-type\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.null.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.yaml\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.integer.yaml\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.float.yaml\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.timestamp.yaml\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.value.yaml\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.merge.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        (?x:\\n                              (null|Null|NULL|~)\\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\\n                            | (\\n                                (?:\\n                                      [-+]? 0b [0-1_]+ # (base 2)\\n                                    | [-+]? 0  [0-7_]+ # (base 8)\\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                      [-+]? (?: [0-9] [0-9_]*)? \\\\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\\\. [0-9_]* # (base 60)\\n                                    | [-+]? \\\\. (?: inf|Inf|INF) # (infinity)\\n                                    |       \\\\. (?: nan|NaN|NAN) # (not a number)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                    \\\\d{4} - \\\\d{2} - \\\\d{2}           # (y-m-d)\\n                                  | \\\\d{4}                           # (year)\\n                                    - \\\\d{1,2}                       # (month)\\n                                    - \\\\d{1,2}                       # (day)\\n                                    (?: [Tt] | [ \\\\t]+) \\\\d{1,2}      # (hour)\\n                                    : \\\\d{2}                         # (minute)\\n                                    : \\\\d{2}                         # (second)\\n                                    (?: \\\\.\\\\d*)?                     # (fraction)\\n                                    (?:\\n                                          (?:[ \\\\t]*) Z\\n                                        | [-+] \\\\d{1,2} (?: :\\\\d{1,2})?\\n                                    )?                              # (time zone)\\n                                )\\n                              )\\n                            | (=)\\n                            | (<<)\\n                        )\\n                        (?:\\n                            (?=\\n                                  \\\\s* $\\n                                | \\\\s+ \\\\#\\n                                | \\\\s* : (\\\\s|$)\\n                                | \\\\s* : [\\\\[\\\\]{},]\\n                                | \\\\s* [\\\\[\\\\]{},]\\n                            )\\n                        )\\n                    \"\n        }\n      ]\n    },\n    \"flow-scalar-plain-out\": {\n      \"patterns\": [\n        {\n          \"include\": \"#flow-scalar-plain-out-implicit-type\"\n        },\n        {\n          \"begin\": \"(?x)\\n                          [^\\\\s[-?:,\\\\[\\\\]{}#&*!|>'\\\"%@`]]\\n                        | [?:-] \\\\S\\n                    \",\n          \"end\": \"(?x)\\n                        (?=\\n                              \\\\s* $\\n                            | \\\\s+ \\\\#\\n                            | \\\\s* : (\\\\s|$)\\n                        )\\n                    \",\n          \"name\": \"string.unquoted.plain.out.yaml\"\n        }\n      ]\n    },\n    \"flow-scalar-plain-out-implicit-type\": {\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"constant.language.null.yaml\"\n            },\n            \"2\": {\n              \"name\": \"constant.language.boolean.yaml\"\n            },\n            \"3\": {\n              \"name\": \"constant.numeric.integer.yaml\"\n            },\n            \"4\": {\n              \"name\": \"constant.numeric.float.yaml\"\n            },\n            \"5\": {\n              \"name\": \"constant.other.timestamp.yaml\"\n            },\n            \"6\": {\n              \"name\": \"constant.language.value.yaml\"\n            },\n            \"7\": {\n              \"name\": \"constant.language.merge.yaml\"\n            }\n          },\n          \"match\": \"(?x)\\n                        (?x:\\n                              (null|Null|NULL|~)\\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\\n                            | (\\n                                (?:\\n                                      [-+]? 0b [0-1_]+ # (base 2)\\n                                    | [-+]? 0  [0-7_]+ # (base 8)\\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                      [-+]? (?: [0-9] [0-9_]*)? \\\\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\\\. [0-9_]* # (base 60)\\n                                    | [-+]? \\\\. (?: inf|Inf|INF) # (infinity)\\n                                    |       \\\\. (?: nan|NaN|NAN) # (not a number)\\n                                )\\n                              )\\n                            | (\\n                                (?x:\\n                                    \\\\d{4} - \\\\d{2} - \\\\d{2}           # (y-m-d)\\n                                  | \\\\d{4}                           # (year)\\n                                    - \\\\d{1,2}                       # (month)\\n                                    - \\\\d{1,2}                       # (day)\\n                                    (?: [Tt] | [ \\\\t]+) \\\\d{1,2}      # (hour)\\n                                    : \\\\d{2}                         # (minute)\\n                                    : \\\\d{2}                         # (second)\\n                                    (?: \\\\.\\\\d*)?                     # (fraction)\\n                                    (?:\\n                                          (?:[ \\\\t]*) Z\\n                                        | [-+] \\\\d{1,2} (?: :\\\\d{1,2})?\\n                                    )?                              # (time zone)\\n                                )\\n                              )\\n                            | (=)\\n                            | (<<)\\n                        )\\n                        (?x:\\n                            (?=\\n                                  \\\\s* $\\n                                | \\\\s+ \\\\#\\n                                | \\\\s* : (\\\\s|$)\\n                            )\\n                        )\\n                    \"\n        }\n      ]\n    },\n    \"flow-scalar-single-quoted\": {\n      \"begin\": \"'\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.begin.yaml\"\n        }\n      },\n      \"end\": \"'(?!')\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.string.end.yaml\"\n        }\n      },\n      \"name\": \"string.quoted.single.yaml\",\n      \"patterns\": [\n        {\n          \"match\": \"''\",\n          \"name\": \"constant.character.escape.single-quoted.yaml\"\n        }\n      ]\n    },\n    \"flow-sequence\": {\n      \"begin\": \"\\\\[\",\n      \"beginCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.sequence.begin.yaml\"\n        }\n      },\n      \"end\": \"\\\\]\",\n      \"endCaptures\": {\n        \"0\": {\n          \"name\": \"punctuation.definition.sequence.end.yaml\"\n        }\n      },\n      \"name\": \"meta.flow-sequence.yaml\",\n      \"patterns\": [\n        {\n          \"include\": \"#prototype\"\n        },\n        {\n          \"match\": \",\",\n          \"name\": \"punctuation.separator.sequence.yaml\"\n        },\n        {\n          \"include\": \"#flow-pair\"\n        },\n        {\n          \"include\": \"#flow-node\"\n        }\n      ]\n    },\n    \"flow-value\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\\G(?![},\\\\]])\",\n          \"end\": \"(?=[},\\\\]])\",\n          \"name\": \"meta.flow-pair.value.yaml\",\n          \"patterns\": [\n            {\n              \"include\": \"#flow-node\"\n            }\n          ]\n        }\n      ]\n    },\n    \"node\": {\n      \"patterns\": [\n        {\n          \"include\": \"#block-node\"\n        }\n      ]\n    },\n    \"property\": {\n      \"begin\": \"(?=!|&)\",\n      \"end\": \"(?!\\\\G)\",\n      \"name\": \"meta.property.yaml\",\n      \"patterns\": [\n        {\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.property.anchor.yaml\"\n            },\n            \"2\": {\n              \"name\": \"punctuation.definition.anchor.yaml\"\n            },\n            \"3\": {\n              \"name\": \"entity.name.type.anchor.yaml\"\n            },\n            \"4\": {\n              \"name\": \"invalid.illegal.character.anchor.yaml\"\n            }\n          },\n          \"match\": \"\\\\G((&))([^\\\\s\\\\[\\\\]/{/},]+)(\\\\S+)?\"\n        },\n        {\n          \"match\": \"(?x)\\n                        \\\\G\\n                        (?:\\n                            ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$,_.!~*'()\\\\[\\\\]] )+ >\\n                          | (?:!(?:[0-9A-Za-z\\\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\\\-#;/?:@&=+$_.~*'()] )+\\n                          | !\\n                        )\\n                        (?=\\\\ |\\\\t|$)\\n                    \",\n          \"name\": \"storage.type.tag-handle.yaml\"\n        },\n        {\n          \"match\": \"\\\\S+\",\n          \"name\": \"invalid.illegal.tag-handle.yaml\"\n        }\n      ]\n    },\n    \"prototype\": {\n      \"patterns\": [\n        {\n          \"include\": \"#comment\"\n        },\n        {\n          \"include\": \"#property\"\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/languages/zenscript.tmLanguage.json",
    "content": "{\n  \"fileTypes\": [\"zs\"],\n  \"name\": \"zenscript\",\n  \"patterns\": [\n    {\n      \"comment\": \"numbers\",\n      \"name\": \"constant.numeric.zenscript\",\n      \"match\": \"\\\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\\\.?[0-9]*)|(\\\\.[0-9]+))((e|E)(\\\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\\\\b\"\n    },\n    {\n      \"comment\": \"prefixedNumbers\",\n      \"name\": \"constant.numeric.zenscript\",\n      \"match\": \"\\\\b\\\\-?(0b|0x|0o|0B|0X|0O)(0|[1-9a-fA-F][0-9a-fA-F_]*)[a-zA-Z_]*\\\\b\"\n    },\n    {\n      \"include\": \"#code\"\n    },\n    {\n      \"comment\": \"arrays\",\n      \"name\": \"storage.type.object.array.zenscript\",\n      \"match\": \"\\\\b((?:[a-z]\\\\w*\\\\.)*[A-Z]+\\\\w*)(?=\\\\[)\"\n    }\n  ],\n  \"repository\": {\n    \"code\": {\n      \"patterns\": [\n        {\n          \"include\": \"#class\"\n        },\n        {\n          \"include\": \"#functions\"\n        },\n        {\n          \"include\": \"#dots\"\n        },\n        {\n          \"include\": \"#quotes\"\n        },\n        {\n          \"include\": \"#brackets\"\n        },\n        {\n          \"include\": \"#comments\"\n        },\n        {\n          \"include\": \"#var\"\n        },\n        {\n          \"include\": \"#keywords\"\n        },\n        {\n          \"include\": \"#constants\"\n        },\n        {\n          \"include\": \"#operators\"\n        }\n      ]\n    },\n    \"class\": {\n      \"comment\": \"class\",\n      \"name\": \"meta.class.zenscript\",\n      \"match\": \"(zenClass)\\\\s+(\\\\w+)\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.zenscript\"\n        },\n        \"2\": {\n          \"name\": \"entity.name.type.class.zenscript\"\n        }\n      }\n    },\n    \"functions\": {\n      \"comment\": \"functions\",\n      \"name\": \"meta.function.zenscript\",\n      \"match\": \"function\\\\s+([A-Za-z_$][\\\\w$]*)\\\\s*(?=\\\\()\",\n      \"captures\": {\n        \"0\": {\n          \"name\": \"storage.type.function.zenscript\"\n        },\n        \"1\": {\n          \"name\": \"entity.name.function.zenscript\"\n        }\n      }\n    },\n    \"dots\": {\n      \"comment\": \"dots\",\n      \"name\": \"plain.text.zenscript\",\n      \"match\": \"\\\\b(\\\\w+)(\\\\.)(\\\\w+)((\\\\.)(\\\\w+))*\",\n      \"captures\": {\n        \"1\": {\n          \"name\": \"storage.type.zenscript\"\n        },\n        \"2\": {\n          \"name\": \"keyword.control.zenscript\"\n        },\n        \"5\": {\n          \"name\": \"keyword.control.zenscript\"\n        }\n      }\n    },\n    \"quotes\": {\n      \"patterns\": [\n        {\n          \"begin\": \"\\\"\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.zenscript\"\n            }\n          },\n          \"end\": \"\\\"\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.zenscript\"\n            }\n          },\n          \"name\": \"string.quoted.double.zenscript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.zenscript\"\n            }\n          ]\n        },\n        {\n          \"begin\": \"'\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.begin.zenscript\"\n            }\n          },\n          \"end\": \"'\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"punctuation.definition.string.end.zenscript\"\n            }\n          },\n          \"name\": \"string.quoted.single.zenscript\",\n          \"patterns\": [\n            {\n              \"match\": \"\\\\\\\\.\",\n              \"name\": \"constant.character.escape.zenscript\"\n            }\n          ]\n        }\n      ]\n    },\n    \"brackets\": {\n      \"patterns\": [\n        {\n          \"comment\": \"items and blocks\",\n          \"name\": \"keyword.other.zenscript\",\n          \"match\": \"(<)\\\\b(.*?)(:(.*?(:(\\\\*|\\\\d+)?)?)?)(>)\",\n          \"captures\": {\n            \"1\": {\n              \"name\": \"keyword.control.zenscript\"\n            },\n            \"2\": {\n              \"name\": \"keyword.other.zenscript\"\n            },\n            \"3\": {\n              \"name\": \"keyword.control.zenscript\"\n            },\n            \"4\": {\n              \"name\": \"variable.other.zenscript\"\n            },\n            \"5\": {\n              \"name\": \"keyword.control.zenscript\"\n            },\n            \"6\": {\n              \"name\": \"constant.numeric.zenscript\"\n            },\n            \"7\": {\n              \"name\": \"keyword.control.zenscript\"\n            }\n          }\n        }\n      ]\n    },\n    \"comments\": {\n      \"patterns\": [\n        {\n          \"comment\": \"inline comments\",\n          \"name\": \"comment.line.double=slash\",\n          \"match\": \"//[^\\n]*\"\n        },\n        {\n          \"comment\": \"block comments\",\n          \"name\": \"comment.block\",\n          \"begin\": \"\\\\/\\\\*\",\n          \"beginCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block\"\n            }\n          },\n          \"end\": \"\\\\*\\\\/\",\n          \"endCaptures\": {\n            \"0\": {\n              \"name\": \"comment.block\"\n            }\n          }\n        }\n      ]\n    },\n    \"var\": {\n      \"comment\": \"var\",\n      \"match\": \"\\\\b(val|var)\\\\b\",\n      \"name\": \"storage.type\"\n    },\n    \"keywords\": {\n      \"patterns\": [\n        {\n          \"comment\": \"statement keywords\",\n          \"name\": \"keyword.control.zenscript\",\n          \"match\": \"\\\\b(instanceof|get|implements|set|import|function|override|const|if|else|do|while|for|throw|panic|lock|try|catch|finally|return|break|continue|switch|case|default|in|is|as|match|throws|super|new)\\\\b\"\n        },\n        {\n          \"comment\": \"storage keywords\",\n          \"name\": \"storage.type.zenscript\",\n          \"match\": \"\\\\b(zenClass|zenConstructor|alias|class|interface|enum|struct|expand|variant|set|void|bool|byte|sbyte|short|ushort|int|uint|long|ulong|usize|float|double|char|string)\\\\b\"\n        },\n        {\n          \"comment\": \"modifier keywords\",\n          \"name\": \"storage.modifier.zenscript\",\n          \"match\": \"\\\\b(variant|abstract|final|private|public|export|internal|static|protected|implicit|virtual|extern|immutable)\\\\b\"\n        },\n        {\n          \"comment\": \"annotation keywords\",\n          \"name\": \"entity.other.attribute-name\",\n          \"match\": \"\\\\b(Native|Precondition)\\\\b\"\n        },\n        {\n          \"comment\": \"language keywords\",\n          \"name\": \"constant.language\",\n          \"match\": \"\\\\b(null|true|false)\\\\b\"\n        }\n      ]\n    },\n    \"operators\": {\n      \"patterns\": [\n        {\n          \"comment\": \"math operators\",\n          \"name\": \"keyword.control\",\n          \"match\": \"\\\\b(\\\\.|\\\\.\\\\.|\\\\.\\\\.\\\\.|,|\\\\+|\\\\+=|\\\\+\\\\+|-|-=|--|~|~=|\\\\*|\\\\*=|/|/=|%|%=|\\\\||\\\\|=|\\\\|\\\\||&|&=|&&|\\\\^|\\\\^=|\\\\?|\\\\?\\\\.|\\\\?\\\\?|<|<=|<<|<<=|>|>=|>>|>>=|>>>|>>>=|=>|=|==|===|!|!=|!==|\\\\$|`)\\\\b\"\n        },\n        {\n          \"comment\": \"colons\",\n          \"name\": \"keyword.control\",\n          \"match\": \"\\\\b(;|:)\\\\b\"\n        }\n      ]\n    }\n  },\n  \"scopeName\": \"source.zenscript\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/css-variables.json",
    "content": "{\n  \"name\": \"css-variables\",\n  \"type\": \"css\",\n  \"colors\": {\n    \"editor.foreground\": \"#000001\",\n    \"editor.background\": \"#000002\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#000001\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.accessor\",\n        \"meta.group.braces.round.function.arguments\",\n        \"meta.template.expression\",\n        \"markup.fenced_code meta.embedded.block\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000001\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"markup.italic.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.link.inline.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"underline\",\n        \"foreground\": \"#000004\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n      \"settings\": {\n        \"foreground\": \"#000005\"\n      }\n    },\n    {\n      \"scope\": [\"comment\", \"string.quoted.docstring.multi\"],\n      \"settings\": {\n        \"foreground\": \"#000006\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.language\",\n        \"constant.other.placeholder\",\n        \"constant.character.format.placeholder\",\n        \"variable.language.this\",\n        \"variable.other.object\",\n        \"variable.other.class\",\n        \"variable.other.constant\",\n        \"meta.property-name\",\n        \"meta.property-value\",\n        \"support\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000004\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword\",\n        \"storage.modifier\",\n        \"storage.type\",\n        \"storage.control.clojure\",\n        \"entity.name.function.clojure\",\n        \"entity.name.tag.yaml\",\n        \"support.function.node\",\n        \"support.type.property-name.json\",\n        \"punctuation.separator.key-value\",\n        \"punctuation.definition.template-expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000007\"\n      }\n    },\n    {\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#000008\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.function\",\n        \"entity.name.type\",\n        \"entity.other.inherited-class\",\n        \"meta.function-call\",\n        \"meta.instance.constructor\",\n        \"entity.other.attribute-name\",\n        \"entity.name.function\",\n        \"constant.keyword.clojure\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000009\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.tag\",\n        \"string.quoted\",\n        \"string.regexp\",\n        \"string.interpolated\",\n        \"string.template\",\n        \"string.unquoted.plain.out.yaml\",\n        \"keyword.other.template\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000010\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.arguments\",\n        \"punctuation.definition.dict\",\n        \"punctuation.separator\",\n        \"meta.function-call.arguments\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000011\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown links\",\n      \"scope\": [\n        \"markup.underline.link\",\n        \"punctuation.definition.metadata.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000012\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown list\",\n      \"scope\": [\"beginning.punctuation.definition.list.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#000005\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown punctuation definition brackets\",\n      \"scope\": [\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\",\n        \"string.other.link.title.markdown\",\n        \"string.other.link.description.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000007\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/dark-plus.json",
    "content": "{\n  \"$schema\": \"vscode://schemas/color-theme\",\n  \"name\": \"dark-plus\",\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#D4D4D4\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.embedded\",\n        \"source.groovy.embedded\",\n        \"string meta.image.inline.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D4D4D4\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"strong\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"header\",\n      \"settings\": {\n        \"foreground\": \"#000080\"\n      }\n    },\n    {\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#6A9955\"\n      }\n    },\n    {\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"variable.other.enummember\",\n        \"keyword.operator.plus.exponent\",\n        \"keyword.operator.minus.exponent\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"constant.regexp\",\n      \"settings\": {\n        \"foreground\": \"#646695\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.tag.css\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name.class.css\",\n        \"entity.other.attribute-name.class.mixin.css\",\n        \"entity.other.attribute-name.id.css\",\n        \"entity.other.attribute-name.parent-selector.css\",\n        \"entity.other.attribute-name.pseudo-class.css\",\n        \"entity.other.attribute-name.pseudo-element.css\",\n        \"source.css.less entity.other.attribute-name.id\",\n        \"entity.other.attribute-name.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"scope\": \"markup.underline\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.quote.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#6A9955\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#6796e6\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"name\": \"brackets of XML/HTML tags\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#808080\"\n      }\n    },\n    {\n      \"scope\": [\"meta.preprocessor\", \"entity.name.function.preprocessor\"],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.string\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.numeric\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"meta.structure.dictionary.key.python\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": [\"storage.modifier\", \"keyword.operator.noexcept\"],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"meta.embedded.assembly\"],\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.tag\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.value\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#d16969\"\n      }\n    },\n    {\n      \"name\": \"String interpolation\",\n      \"scope\": [\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"name\": \"Reset JavaScript string interpolation expression\",\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.type.vendored.property-name\",\n        \"support.type.property-name\",\n        \"variable.css\",\n        \"variable.scss\",\n        \"variable.other.less\",\n        \"source.coffee.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.new\",\n        \"keyword.operator.expression\",\n        \"keyword.operator.cast\",\n        \"keyword.operator.sizeof\",\n        \"keyword.operator.alignof\",\n        \"keyword.operator.typeid\",\n        \"keyword.operator.alignas\",\n        \"keyword.operator.instanceof\",\n        \"keyword.operator.logical.python\",\n        \"keyword.operator.wordlike\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.other.unit\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.section.embedded.begin.php\",\n        \"punctuation.section.embedded.end.php\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"support.function.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"constant.sha.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"name\": \"coloring of the Java import and package identifiers\",\n      \"scope\": [\n        \"storage.modifier.import.java\",\n        \"variable.language.wildcard.java\",\n        \"storage.modifier.package.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"name\": \"this.self\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"name\": \"Function declarations\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"support.function\",\n        \"support.constant.handlebars\",\n        \"source.powershell variable.other.member\",\n        \"entity.name.operator.custom-literal\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#DCDCAA\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references\",\n      \"scope\": [\n        \"support.class\",\n        \"support.type\",\n        \"entity.name.type\",\n        \"entity.name.namespace\",\n        \"entity.other.attribute\",\n        \"entity.name.scope-resolution\",\n        \"entity.name.class\",\n        \"storage.type.numeric.go\",\n        \"storage.type.byte.go\",\n        \"storage.type.boolean.go\",\n        \"storage.type.string.go\",\n        \"storage.type.uintptr.go\",\n        \"storage.type.error.go\",\n        \"storage.type.rune.go\",\n        \"storage.type.cs\",\n        \"storage.type.generic.cs\",\n        \"storage.type.modifier.cs\",\n        \"storage.type.variable.cs\",\n        \"storage.type.annotation.java\",\n        \"storage.type.generic.java\",\n        \"storage.type.java\",\n        \"storage.type.object.array.java\",\n        \"storage.type.primitive.array.java\",\n        \"storage.type.primitive.java\",\n        \"storage.type.token.java\",\n        \"storage.type.groovy\",\n        \"storage.type.annotation.groovy\",\n        \"storage.type.parameters.groovy\",\n        \"storage.type.generic.groovy\",\n        \"storage.type.object.array.groovy\",\n        \"storage.type.primitive.array.groovy\",\n        \"storage.type.primitive.groovy\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#4EC9B0\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references, TS grammar specific\",\n      \"scope\": [\n        \"meta.type.cast.expr\",\n        \"meta.type.new.expr\",\n        \"support.constant.math\",\n        \"support.constant.dom\",\n        \"support.constant.json\",\n        \"entity.other.inherited-class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#4EC9B0\"\n      }\n    },\n    {\n      \"name\": \"Control flow / Special keywords\",\n      \"scope\": [\n        \"keyword.control\",\n        \"source.cpp keyword.operator.new\",\n        \"keyword.operator.delete\",\n        \"keyword.other.using\",\n        \"keyword.other.operator\",\n        \"entity.name.operator\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C586C0\"\n      }\n    },\n    {\n      \"name\": \"Variable and parameter name\",\n      \"scope\": [\n        \"variable\",\n        \"meta.definition.variable.name\",\n        \"support.variable\",\n        \"entity.name.variable\",\n        \"constant.other.placeholder\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9CDCFE\"\n      }\n    },\n    {\n      \"name\": \"Constants and enums\",\n      \"scope\": [\"variable.other.constant\", \"variable.other.enummember\"],\n      \"settings\": {\n        \"foreground\": \"#4FC1FF\"\n      }\n    },\n    {\n      \"name\": \"Object keys, TS grammar specific\",\n      \"scope\": [\"meta.object-literal.key\"],\n      \"settings\": {\n        \"foreground\": \"#9CDCFE\"\n      }\n    },\n    {\n      \"name\": \"CSS property value\",\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#CE9178\"\n      }\n    },\n    {\n      \"name\": \"Regular expression groups\",\n      \"scope\": [\n        \"punctuation.definition.group.regexp\",\n        \"punctuation.definition.group.assertion.regexp\",\n        \"punctuation.definition.character-class.regexp\",\n        \"punctuation.character.set.begin.regexp\",\n        \"punctuation.character.set.end.regexp\",\n        \"keyword.operator.negation.regexp\",\n        \"support.other.parenthesis.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#CE9178\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.character.character-class.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.other.character-class.regexp\",\n        \"constant.character.set.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d16969\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#DCDCAA\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator.quantifier.regexp\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"constant.character\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.label\",\n      \"settings\": {\n        \"foreground\": \"#C8C8C8\"\n      }\n    }\n  ],\n  \"semanticTokenColors\": {\n    \"newOperator\": \"#C586C0\",\n    \"stringLiteral\": \"#ce9178\",\n    \"customLiteral\": \"#DCDCAA\",\n    \"numberLiteral\": \"#b5cea8\"\n  },\n  \"colors\": {\n    \"editor.background\": \"#1E1E1E\",\n    \"editor.foreground\": \"#D4D4D4\",\n    \"editor.inactiveSelectionBackground\": \"#3A3D41\",\n    \"editorIndentGuide.background\": \"#404040\",\n    \"editorIndentGuide.activeBackground\": \"#707070\",\n    \"editor.selectionHighlightBackground\": \"#ADD6FF26\",\n    \"list.dropBackground\": \"#383B3D\",\n    \"activityBarBadge.background\": \"#007ACC\",\n    \"sideBarTitle.foreground\": \"#BBBBBB\",\n    \"input.placeholderForeground\": \"#A6A6A6\",\n    \"menu.background\": \"#303031\",\n    \"menu.foreground\": \"#CCCCCC\",\n    \"statusBarItem.remoteForeground\": \"#FFF\",\n    \"statusBarItem.remoteBackground\": \"#16825D\",\n    \"ports.iconRunningProcessForeground\": \"#369432\",\n    \"sideBarSectionHeader.background\": \"#0000\",\n    \"sideBarSectionHeader.border\": \"#ccc3\",\n    \"tab.lastPinnedBorder\": \"#ccc3\",\n    \"list.activeSelectionIconForeground\": \"#FFF\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/dracula-soft.json",
    "content": "{\n  \"$schema\": \"vscode://schemas/color-theme\",\n  \"name\": \"dracula-soft\",\n  \"author\": \"Zeno Rocha\",\n  \"maintainers\": [\"Derek P Sifford <dereksifford@gmail.com>\"],\n  \"semanticClass\": \"theme.dracula\",\n  \"semanticHighlighting\": true,\n  \"dracula\": {\n    \"base\": [\n      \"#282A36\",\n      \"#F8F8F2\",\n      \"#44475A\",\n      \"#6272A4\",\n      \"#8BE9FD\",\n      \"#50FA7B\",\n      \"#FFB86C\",\n      \"#FF79C6\",\n      \"#BD93F9\",\n      \"#FF5555\",\n      \"#F1FA8C\"\n    ],\n    \"ansi\": [\n      \"#21222C\",\n      \"#FF5555\",\n      \"#50FA7B\",\n      \"#F1FA8C\",\n      \"#BD93F9\",\n      \"#FF79C6\",\n      \"#8BE9FD\",\n      \"#F8F8F2\",\n      \"#6272A4\",\n      \"#FF6E6E\",\n      \"#69FF94\",\n      \"#FFFFA5\",\n      \"#D6ACFF\",\n      \"#FF92DF\",\n      \"#A4FFFF\",\n      \"#FFFFFF\"\n    ],\n    \"brightOther\": [\"#E9F284\", \"#8BE9FE\"],\n    \"other\": [\n      \"#44475A75\",\n      \"#FFFFFF1A\",\n      \"#FFFFFF\",\n      \"#44475A70\",\n      \"#424450\",\n      \"#343746\",\n      \"#21222C\",\n      \"#191A21\"\n    ]\n  },\n  \"colors\": {\n    \"terminal.background\": \"#282A36\",\n    \"terminal.foreground\": \"#f6f6f4\",\n    \"terminal.ansiBrightBlack\": \"#7b7f8b\",\n    \"terminal.ansiBrightRed\": \"#f07c7c\",\n    \"terminal.ansiBrightGreen\": \"#78f09a\",\n    \"terminal.ansiBrightYellow\": \"#f6f6ae\",\n    \"terminal.ansiBrightBlue\": \"#d6b4f7\",\n    \"terminal.ansiBrightMagenta\": \"#f49dda\",\n    \"terminal.ansiBrightCyan\": \"#adf6f6\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBlack\": \"#262626\",\n    \"terminal.ansiRed\": \"#ee6666\",\n    \"terminal.ansiGreen\": \"#62e884\",\n    \"terminal.ansiYellow\": \"#e7ee98\",\n    \"terminal.ansiBlue\": \"#bf9eee\",\n    \"terminal.ansiMagenta\": \"#f286c4\",\n    \"terminal.ansiCyan\": \"#97e1f1\",\n    \"terminal.ansiWhite\": \"#f6f6f4\",\n    \"focusBorder\": \"#7b7f8b\",\n    \"foreground\": \"#f6f6f4\",\n    \"selection.background\": \"#bf9eee\",\n    \"errorForeground\": \"#ee6666\",\n    \"button.background\": \"#44475A\",\n    \"button.foreground\": \"#f6f6f4\",\n    \"button.secondaryBackground\": \"#282A36\",\n    \"button.secondaryForeground\": \"#f6f6f4\",\n    \"button.secondaryHoverBackground\": \"#343746\",\n    \"dropdown.background\": \"#343746\",\n    \"dropdown.border\": \"#191A21\",\n    \"dropdown.foreground\": \"#f6f6f4\",\n    \"input.background\": \"#282A36\",\n    \"input.foreground\": \"#f6f6f4\",\n    \"input.border\": \"#191A21\",\n    \"input.placeholderForeground\": \"#7b7f8b\",\n    \"inputOption.activeBorder\": \"#bf9eee\",\n    \"inputValidation.infoBorder\": \"#f286c4\",\n    \"inputValidation.warningBorder\": \"#FFB86C\",\n    \"inputValidation.errorBorder\": \"#ee6666\",\n    \"badge.foreground\": \"#f6f6f4\",\n    \"badge.background\": \"#44475A\",\n    \"progressBar.background\": \"#f286c4\",\n    \"list.activeSelectionBackground\": \"#44475A\",\n    \"list.activeSelectionForeground\": \"#f6f6f4\",\n    \"list.dropBackground\": \"#44475A\",\n    \"list.focusBackground\": \"#44475A75\",\n    \"list.highlightForeground\": \"#97e1f1\",\n    \"list.hoverBackground\": \"#44475A75\",\n    \"list.inactiveSelectionBackground\": \"#44475A75\",\n    \"list.warningForeground\": \"#FFB86C\",\n    \"list.errorForeground\": \"#ee6666\",\n    \"activityBar.background\": \"#343746\",\n    \"activityBar.inactiveForeground\": \"#7b7f8b\",\n    \"activityBar.foreground\": \"#f6f6f4\",\n    \"activityBar.activeBorder\": \"#FF79C680\",\n    \"activityBar.activeBackground\": \"#BD93F910\",\n    \"activityBarBadge.background\": \"#f286c4\",\n    \"activityBarBadge.foreground\": \"#f6f6f4\",\n    \"sideBar.background\": \"#262626\",\n    \"sideBarTitle.foreground\": \"#f6f6f4\",\n    \"sideBarSectionHeader.background\": \"#282A36\",\n    \"sideBarSectionHeader.border\": \"#191A21\",\n    \"editorGroup.border\": \"#bf9eee\",\n    \"editorGroup.dropBackground\": \"#44475A70\",\n    \"editorGroupHeader.tabsBackground\": \"#191A21\",\n    \"tab.activeBackground\": \"#282A36\",\n    \"tab.activeForeground\": \"#f6f6f4\",\n    \"tab.border\": \"#191A21\",\n    \"tab.activeBorderTop\": \"#FF79C680\",\n    \"tab.inactiveBackground\": \"#262626\",\n    \"tab.inactiveForeground\": \"#7b7f8b\",\n    \"editor.foreground\": \"#f6f6f4\",\n    \"editor.background\": \"#282A36\",\n    \"editorLineNumber.foreground\": \"#7b7f8b\",\n    \"editor.selectionBackground\": \"#44475A\",\n    \"editor.selectionHighlightBackground\": \"#424450\",\n    \"editor.foldBackground\": \"#21222C80\",\n    \"editor.wordHighlightBackground\": \"#8BE9FD50\",\n    \"editor.wordHighlightStrongBackground\": \"#50FA7B50\",\n    \"editor.findMatchBackground\": \"#FFB86C80\",\n    \"editor.findMatchHighlightBackground\": \"#FFFFFF40\",\n    \"editor.findRangeHighlightBackground\": \"#44475A75\",\n    \"editor.hoverHighlightBackground\": \"#8BE9FD50\",\n    \"editor.lineHighlightBorder\": \"#44475A\",\n    \"editorLink.activeForeground\": \"#97e1f1\",\n    \"editor.rangeHighlightBackground\": \"#BD93F915\",\n    \"editor.snippetTabstopHighlightBackground\": \"#282A36\",\n    \"editor.snippetTabstopHighlightBorder\": \"#7b7f8b\",\n    \"editor.snippetFinalTabstopHighlightBackground\": \"#282A36\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#62e884\",\n    \"editorWhitespace.foreground\": \"#FFFFFF1A\",\n    \"editorIndentGuide.background\": \"#FFFFFF1A\",\n    \"editorIndentGuide.activeBackground\": \"#FFFFFF45\",\n    \"editorRuler.foreground\": \"#FFFFFF1A\",\n    \"editorCodeLens.foreground\": \"#7b7f8b\",\n    \"editorBracketHighlight.foreground1\": \"#f6f6f4\",\n    \"editorBracketHighlight.foreground2\": \"#f286c4\",\n    \"editorBracketHighlight.foreground3\": \"#97e1f1\",\n    \"editorBracketHighlight.foreground4\": \"#62e884\",\n    \"editorBracketHighlight.foreground5\": \"#bf9eee\",\n    \"editorBracketHighlight.foreground6\": \"#FFB86C\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#ee6666\",\n    \"editorOverviewRuler.border\": \"#191A21\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#FFB86C\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#97e1f1\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#62e884\",\n    \"editorOverviewRuler.modifiedForeground\": \"#8BE9FD80\",\n    \"editorOverviewRuler.addedForeground\": \"#50FA7B80\",\n    \"editorOverviewRuler.deletedForeground\": \"#FF555580\",\n    \"editorOverviewRuler.errorForeground\": \"#FF555580\",\n    \"editorOverviewRuler.warningForeground\": \"#FFB86C80\",\n    \"editorOverviewRuler.infoForeground\": \"#8BE9FD80\",\n    \"editorError.foreground\": \"#ee6666\",\n    \"editorWarning.foreground\": \"#97e1f1\",\n    \"editorGutter.modifiedBackground\": \"#8BE9FD80\",\n    \"editorGutter.addedBackground\": \"#50FA7B80\",\n    \"editorGutter.deletedBackground\": \"#FF555580\",\n    \"gitDecoration.modifiedResourceForeground\": \"#97e1f1\",\n    \"gitDecoration.deletedResourceForeground\": \"#ee6666\",\n    \"gitDecoration.untrackedResourceForeground\": \"#62e884\",\n    \"gitDecoration.ignoredResourceForeground\": \"#7b7f8b\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFB86C\",\n    \"diffEditor.insertedTextBackground\": \"#50FA7B20\",\n    \"diffEditor.removedTextBackground\": \"#FF555550\",\n    \"editorWidget.background\": \"#262626\",\n    \"editorSuggestWidget.background\": \"#262626\",\n    \"editorSuggestWidget.foreground\": \"#f6f6f4\",\n    \"editorSuggestWidget.selectedBackground\": \"#44475A\",\n    \"editorHoverWidget.background\": \"#282A36\",\n    \"editorHoverWidget.border\": \"#7b7f8b\",\n    \"editorMarkerNavigation.background\": \"#262626\",\n    \"peekView.border\": \"#44475A\",\n    \"peekViewEditor.background\": \"#282A36\",\n    \"peekViewEditor.matchHighlightBackground\": \"#F1FA8C80\",\n    \"peekViewResult.background\": \"#262626\",\n    \"peekViewResult.fileForeground\": \"#f6f6f4\",\n    \"peekViewResult.lineForeground\": \"#f6f6f4\",\n    \"peekViewResult.matchHighlightBackground\": \"#F1FA8C80\",\n    \"peekViewResult.selectionBackground\": \"#44475A\",\n    \"peekViewResult.selectionForeground\": \"#f6f6f4\",\n    \"peekViewTitle.background\": \"#191A21\",\n    \"peekViewTitleDescription.foreground\": \"#7b7f8b\",\n    \"peekViewTitleLabel.foreground\": \"#f6f6f4\",\n    \"merge.currentHeaderBackground\": \"#50FA7B90\",\n    \"merge.incomingHeaderBackground\": \"#BD93F990\",\n    \"editorOverviewRuler.currentContentForeground\": \"#62e884\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#bf9eee\",\n    \"panel.background\": \"#282A36\",\n    \"panel.border\": \"#bf9eee\",\n    \"panelTitle.activeBorder\": \"#f286c4\",\n    \"panelTitle.activeForeground\": \"#f6f6f4\",\n    \"panelTitle.inactiveForeground\": \"#7b7f8b\",\n    \"statusBar.background\": \"#191A21\",\n    \"statusBar.foreground\": \"#f6f6f4\",\n    \"statusBar.debuggingBackground\": \"#ee6666\",\n    \"statusBar.debuggingForeground\": \"#191A21\",\n    \"statusBar.noFolderBackground\": \"#191A21\",\n    \"statusBar.noFolderForeground\": \"#f6f6f4\",\n    \"statusBarItem.prominentBackground\": \"#ee6666\",\n    \"statusBarItem.prominentHoverBackground\": \"#FFB86C\",\n    \"statusBarItem.remoteForeground\": \"#282A36\",\n    \"statusBarItem.remoteBackground\": \"#bf9eee\",\n    \"titleBar.activeBackground\": \"#262626\",\n    \"titleBar.activeForeground\": \"#f6f6f4\",\n    \"titleBar.inactiveBackground\": \"#191A21\",\n    \"titleBar.inactiveForeground\": \"#7b7f8b\",\n    \"extensionButton.prominentForeground\": \"#f6f6f4\",\n    \"extensionButton.prominentBackground\": \"#50FA7B90\",\n    \"extensionButton.prominentHoverBackground\": \"#50FA7B60\",\n    \"pickerGroup.border\": \"#bf9eee\",\n    \"pickerGroup.foreground\": \"#97e1f1\",\n    \"debugToolBar.background\": \"#262626\",\n    \"walkThrough.embeddedEditorBackground\": \"#262626\",\n    \"settings.headerForeground\": \"#f6f6f4\",\n    \"settings.modifiedItemIndicator\": \"#FFB86C\",\n    \"settings.dropdownBackground\": \"#262626\",\n    \"settings.dropdownForeground\": \"#f6f6f4\",\n    \"settings.dropdownBorder\": \"#191A21\",\n    \"settings.checkboxBackground\": \"#262626\",\n    \"settings.checkboxForeground\": \"#f6f6f4\",\n    \"settings.checkboxBorder\": \"#191A21\",\n    \"settings.textInputBackground\": \"#262626\",\n    \"settings.textInputForeground\": \"#f6f6f4\",\n    \"settings.textInputBorder\": \"#191A21\",\n    \"settings.numberInputBackground\": \"#262626\",\n    \"settings.numberInputForeground\": \"#f6f6f4\",\n    \"settings.numberInputBorder\": \"#191A21\",\n    \"breadcrumb.foreground\": \"#7b7f8b\",\n    \"breadcrumb.background\": \"#282A36\",\n    \"breadcrumb.focusForeground\": \"#f6f6f4\",\n    \"breadcrumb.activeSelectionForeground\": \"#f6f6f4\",\n    \"breadcrumbPicker.background\": \"#191A21\",\n    \"listFilterWidget.background\": \"#343746\",\n    \"listFilterWidget.outline\": \"#424450\",\n    \"listFilterWidget.noMatchesOutline\": \"#ee6666\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"emphasis\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"strong\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"header\"],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"scope\": [\"meta.diff\", \"meta.diff.header\"],\n      \"settings\": {\n        \"foreground\": \"#7b7f8b\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#ee6666\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\"],\n      \"settings\": {\n        \"foreground\": \"#ee6666\",\n        \"fontStyle\": \"underline italic\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\",\n        \"fontStyle\": \"underline italic\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.filename\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"scope\": [\"markup.error\"],\n      \"settings\": {\n        \"foreground\": \"#ee6666\"\n      }\n    },\n    {\n      \"name\": \"Underlined markup\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Bold markup\",\n      \"scope\": [\"markup.bold\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Markup headings\",\n      \"scope\": [\"markup.heading\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Markup italic\",\n      \"scope\": [\"markup.italic\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Bullets, lists (prose)\",\n      \"scope\": [\n        \"beginning.punctuation.definition.list.markdown\",\n        \"beginning.punctuation.definition.quote.markdown\",\n        \"punctuation.definition.link.restructuredtext\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Inline code (prose)\",\n      \"scope\": [\"markup.inline.raw\", \"markup.raw.restructuredtext\"],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Links (prose)\",\n      \"scope\": [\"markup.underline.link\", \"markup.underline.link.image\"],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Link text, image alt text (prose)\",\n      \"scope\": [\n        \"meta.link.reference.def.restructuredtext\",\n        \"punctuation.definition.directive.restructuredtext\",\n        \"string.other.link.description\",\n        \"string.other.link.title\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Blockquotes (prose)\",\n      \"scope\": [\"entity.name.directive.restructuredtext\", \"markup.quote\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Horizontal rule (prose)\",\n      \"scope\": [\"meta.separator.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#7b7f8b\"\n      }\n    },\n    {\n      \"name\": \"Code blocks\",\n      \"scope\": [\n        \"fenced_code.block.language\",\n        \"markup.raw.inner.restructuredtext\",\n        \"markup.fenced_code.block.markdown punctuation.definition.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Prose constants\",\n      \"scope\": [\"punctuation.definition.constant.restructuredtext\"],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown headings\",\n      \"scope\": [\n        \"markup.heading.markdown punctuation.definition.string.begin\",\n        \"markup.heading.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown paragraphs\",\n      \"scope\": [\n        \"meta.paragraph.markdown punctuation.definition.string.begin\",\n        \"meta.paragraph.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown blockquotes\",\n      \"scope\": [\n        \"markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin\",\n        \"markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"User-defined class names\",\n      \"scope\": [\"entity.name.type.class\", \"entity.name.class\"],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\",\n        \"fontStyle\": \"normal\"\n      }\n    },\n    {\n      \"name\": \"this, super, self, etc.\",\n      \"scope\": [\n        \"keyword.expressions-and-types.swift\",\n        \"keyword.other.this\",\n        \"variable.language\",\n        \"variable.language punctuation.definition.variable.php\",\n        \"variable.other.readwrite.instance.ruby\",\n        \"variable.parameter.function.language.special\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Inherited classes\",\n      \"scope\": [\"entity.other.inherited-class\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Comments\",\n      \"scope\": [\n        \"comment\",\n        \"punctuation.definition.comment\",\n        \"unused.comment\",\n        \"wildcard.comment\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#7b7f8b\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style keywords\",\n      \"scope\": [\n        \"comment keyword.codetag.notation\",\n        \"comment.block.documentation keyword\",\n        \"comment.block.documentation storage.type.class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style types\",\n      \"scope\": [\"comment.block.documentation entity.name.type\"],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style type brackets\",\n      \"scope\": [\n        \"comment.block.documentation entity.name.type punctuation.definition.bracket\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style comment parameters\",\n      \"scope\": [\"comment.block.documentation variable\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Constants\",\n      \"scope\": [\"constant\", \"variable.other.constant\"],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Constant escape sequences\",\n      \"scope\": [\n        \"constant.character.escape\",\n        \"constant.character.string.escape\",\n        \"constant.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"HTML tags\",\n      \"scope\": [\"entity.name.tag\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"CSS attribute parent selectors ('&')\",\n      \"scope\": [\"entity.other.attribute-name.parent-selector\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"HTML/CSS attribute names\",\n      \"scope\": [\"entity.other.attribute-name\"],\n      \"settings\": {\n        \"foreground\": \"#62e884\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Function names\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"meta.function-call.object\",\n        \"meta.function-call.php\",\n        \"meta.function-call.static\",\n        \"meta.method-call.java meta.method\",\n        \"meta.method.groovy\",\n        \"support.function.any-method.lua\",\n        \"keyword.operator.function.infix\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Function parameters\",\n      \"scope\": [\n        \"entity.name.variable.parameter\",\n        \"meta.at-rule.function variable\",\n        \"meta.at-rule.mixin variable\",\n        \"meta.function.arguments variable.other.php\",\n        \"meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql\",\n        \"variable.parameter\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Decorators\",\n      \"scope\": [\n        \"meta.decorator variable.other.readwrite\",\n        \"meta.decorator variable.other.property\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#62e884\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Decorator Objects\",\n      \"scope\": [\"meta.decorator variable.other.object\"],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Keywords\",\n      \"scope\": [\"keyword\", \"punctuation.definition.keyword\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Keyword \\\"new\\\"\",\n      \"scope\": [\"keyword.control.new\", \"keyword.operator.new\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Generic selectors (CSS/SCSS/Less/Stylus)\",\n      \"scope\": [\"meta.selector\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Language Built-ins\",\n      \"scope\": [\"support\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Built-in magic functions and constants\",\n      \"scope\": [\n        \"support.function.magic\",\n        \"support.variable\",\n        \"variable.other.predefined\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"regular\",\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Built-in functions / properties\",\n      \"scope\": [\"support.function\", \"support.type.property-name\"],\n      \"settings\": {\n        \"fontStyle\": \"regular\"\n      }\n    },\n    {\n      \"name\": \"Separators (key/value, namespace, inheritance, pointer, hash, slice, etc)\",\n      \"scope\": [\n        \"constant.other.symbol.hashkey punctuation.definition.constant.ruby\",\n        \"entity.other.attribute-name.placeholder punctuation\",\n        \"entity.other.attribute-name.pseudo-class punctuation\",\n        \"entity.other.attribute-name.pseudo-element punctuation\",\n        \"meta.group.double.toml\",\n        \"meta.group.toml\",\n        \"meta.object-binding-pattern-variable punctuation.destructuring\",\n        \"punctuation.colon.graphql\",\n        \"punctuation.definition.block.scalar.folded.yaml\",\n        \"punctuation.definition.block.scalar.literal.yaml\",\n        \"punctuation.definition.block.sequence.item.yaml\",\n        \"punctuation.definition.entity.other.inherited-class\",\n        \"punctuation.function.swift\",\n        \"punctuation.separator.dictionary.key-value\",\n        \"punctuation.separator.hash\",\n        \"punctuation.separator.inheritance\",\n        \"punctuation.separator.key-value\",\n        \"punctuation.separator.key-value.mapping.yaml\",\n        \"punctuation.separator.namespace\",\n        \"punctuation.separator.pointer-access\",\n        \"punctuation.separator.slice\",\n        \"string.unquoted.heredoc punctuation.definition.string\",\n        \"support.other.chomping-indicator.yaml\",\n        \"punctuation.separator.annotation\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Brackets, braces, parens, etc.\",\n      \"scope\": [\n        \"keyword.operator.other.powershell\",\n        \"keyword.other.statement-separator.powershell\",\n        \"meta.brace.round\",\n        \"meta.function-call punctuation\",\n        \"punctuation.definition.arguments.begin\",\n        \"punctuation.definition.arguments.end\",\n        \"punctuation.definition.entity.begin\",\n        \"punctuation.definition.entity.end\",\n        \"punctuation.definition.tag.cs\",\n        \"punctuation.definition.type.begin\",\n        \"punctuation.definition.type.end\",\n        \"punctuation.section.scope.begin\",\n        \"punctuation.section.scope.end\",\n        \"punctuation.terminator.expression.php\",\n        \"storage.type.generic.java\",\n        \"string.template meta.brace\",\n        \"string.template punctuation.accessor\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"Variable interpolation operators\",\n      \"scope\": [\n        \"meta.string-contents.quoted.double punctuation.definition.variable\",\n        \"punctuation.definition.interpolation.begin\",\n        \"punctuation.definition.interpolation.end\",\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded.begin\",\n        \"punctuation.section.embedded.coffee\",\n        \"punctuation.section.embedded.end\",\n        \"punctuation.section.embedded.end source.php\",\n        \"punctuation.section.embedded.end source.ruby\",\n        \"punctuation.definition.variable.makefile\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Keys (serializable languages)\",\n      \"scope\": [\n        \"entity.name.function.target.makefile\",\n        \"entity.name.section.toml\",\n        \"entity.name.tag.yaml\",\n        \"variable.other.key.toml\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Dates / timestamps (serializable languages)\",\n      \"scope\": [\"constant.other.date\", \"constant.other.timestamp\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"YAML aliases\",\n      \"scope\": [\"variable.other.alias.yaml\"],\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": [\n        \"storage\",\n        \"meta.implementation storage.type.objc\",\n        \"meta.interface-or-protocol storage.type.objc\",\n        \"source.groovy storage.type.def\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"regular\",\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"Types\",\n      \"scope\": [\n        \"entity.name.type\",\n        \"keyword.primitive-datatypes.swift\",\n        \"keyword.type.cs\",\n        \"meta.protocol-list.objc\",\n        \"meta.return-type.objc\",\n        \"source.go storage.type\",\n        \"source.groovy storage.type\",\n        \"source.java storage.type\",\n        \"source.powershell entity.other.attribute-name\",\n        \"storage.class.std.rust\",\n        \"storage.type.attribute.swift\",\n        \"storage.type.c\",\n        \"storage.type.core.rust\",\n        \"storage.type.cs\",\n        \"storage.type.groovy\",\n        \"storage.type.objc\",\n        \"storage.type.php\",\n        \"storage.type.haskell\",\n        \"storage.type.ocaml\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Generics, templates, and mapped type declarations\",\n      \"scope\": [\n        \"entity.name.type.type-parameter\",\n        \"meta.indexer.mappedtype.declaration entity.name.type\",\n        \"meta.type.parameters entity.name.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Modifiers\",\n      \"scope\": [\"storage.modifier\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"RegExp string\",\n      \"scope\": [\n        \"string.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.character.escape.backslash.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"Non-capture operators\",\n      \"scope\": [\"punctuation.definition.group.capture.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#f286c4\"\n      }\n    },\n    {\n      \"name\": \"RegExp start and end characters\",\n      \"scope\": [\n        \"string.regexp punctuation.definition.string.begin\",\n        \"string.regexp punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ee6666\"\n      }\n    },\n    {\n      \"name\": \"Character group\",\n      \"scope\": [\"punctuation.definition.character-class.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Capture groups\",\n      \"scope\": [\"punctuation.definition.group.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Assertion operators\",\n      \"scope\": [\n        \"punctuation.definition.group.assertion.regexp\",\n        \"keyword.operator.negation.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ee6666\"\n      }\n    },\n    {\n      \"name\": \"Positive lookaheads\",\n      \"scope\": [\"meta.assertion.look-ahead.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#62e884\"\n      }\n    },\n    {\n      \"name\": \"Strings\",\n      \"scope\": [\"string\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"String quotes (temporary vscode fix)\",\n      \"scope\": [\n        \"punctuation.definition.string.begin\",\n        \"punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#dee492\"\n      }\n    },\n    {\n      \"name\": \"Property quotes (temporary vscode fix)\",\n      \"scope\": [\n        \"punctuation.support.type.property-name.begin\",\n        \"punctuation.support.type.property-name.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#97e2f2\"\n      }\n    },\n    {\n      \"name\": \"Docstrings\",\n      \"scope\": [\n        \"string.quoted.docstring.multi\",\n        \"string.quoted.docstring.multi.python punctuation.definition.string.begin\",\n        \"string.quoted.docstring.multi.python punctuation.definition.string.end\",\n        \"string.quoted.docstring.multi.python constant.character.escape\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#7b7f8b\"\n      }\n    },\n    {\n      \"name\": \"Variables and object properties\",\n      \"scope\": [\n        \"variable\",\n        \"constant.other.key.perl\",\n        \"support.variable.property\",\n        \"variable.other.constant.js\",\n        \"variable.other.constant.ts\",\n        \"variable.other.constant.tsx\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"Destructuring / aliasing reference name (LHS)\",\n      \"scope\": [\n        \"meta.import variable.other.readwrite\",\n        \"meta.variable.assignment.destructured.object.coffee variable\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Destructuring / aliasing variable name (RHS)\",\n      \"scope\": [\n        \"meta.import variable.other.readwrite.alias\",\n        \"meta.export variable.other.readwrite.alias\",\n        \"meta.variable.assignment.destructured.object.coffee variable variable\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"normal\",\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"GraphQL keys\",\n      \"scope\": [\"meta.selectionset.graphql variable\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"GraphQL function arguments\",\n      \"scope\": [\"meta.selectionset.graphql meta.arguments variable\"],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"GraphQL fragment name (definition)\",\n      \"scope\": [\"entity.name.fragment.graphql\", \"variable.fragment.graphql\"],\n      \"settings\": {\n        \"foreground\": \"#97e1f1\"\n      }\n    },\n    {\n      \"name\": \"Edge cases (foreground color resets)\",\n      \"scope\": [\n        \"constant.other.symbol.hashkey.ruby\",\n        \"keyword.operator.dereference.java\",\n        \"keyword.operator.navigation.groovy\",\n        \"meta.scope.for-loop.shell punctuation.definition.string.begin\",\n        \"meta.scope.for-loop.shell punctuation.definition.string.end\",\n        \"meta.scope.for-loop.shell string\",\n        \"storage.modifier.import\",\n        \"punctuation.section.embedded.begin.tsx\",\n        \"punctuation.section.embedded.end.tsx\",\n        \"punctuation.section.embedded.begin.jsx\",\n        \"punctuation.section.embedded.end.jsx\",\n        \"punctuation.separator.list.comma.css\",\n        \"constant.language.empty-list.haskell\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"Shell variables prefixed with \\\"$\\\" (edge case)\",\n      \"scope\": [\"source.shell variable.other\"],\n      \"settings\": {\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Powershell constants mistakenly scoped to `support`, rather than `constant` (edge)\",\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"fontStyle\": \"normal\",\n        \"foreground\": \"#bf9eee\"\n      }\n    },\n    {\n      \"name\": \"Makefile prerequisite names\",\n      \"scope\": [\"meta.scope.prerequisites.makefile\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"SCSS attibute selector strings\",\n      \"scope\": [\"meta.attribute-selector.scss\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\"\n      }\n    },\n    {\n      \"name\": \"SCSS attribute selector brackets\",\n      \"scope\": [\n        \"punctuation.definition.attribute-selector.end.bracket.square.scss\",\n        \"punctuation.definition.attribute-selector.begin.bracket.square.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f6f6f4\"\n      }\n    },\n    {\n      \"name\": \"Haskell Pragmas\",\n      \"scope\": [\"meta.preprocessor.haskell\"],\n      \"settings\": {\n        \"foreground\": \"#7b7f8b\"\n      }\n    },\n    {\n      \"name\": \"Log file error\",\n      \"scope\": [\"log.error\"],\n      \"settings\": {\n        \"foreground\": \"#ee6666\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Log file warning\",\n      \"scope\": [\"log.warning\"],\n      \"settings\": {\n        \"foreground\": \"#e7ee98\",\n        \"fontStyle\": \"bold\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/dracula.json",
    "content": "{\n  \"$schema\": \"vscode://schemas/color-theme\",\n  \"name\": \"dracula\",\n  \"author\": \"Zeno Rocha\",\n  \"maintainers\": [\"Derek P Sifford <dereksifford@gmail.com>\"],\n  \"semanticClass\": \"theme.dracula\",\n  \"semanticHighlighting\": true,\n  \"dracula\": {\n    \"base\": [\n      \"#282A36\",\n      \"#F8F8F2\",\n      \"#44475A\",\n      \"#6272A4\",\n      \"#8BE9FD\",\n      \"#50FA7B\",\n      \"#FFB86C\",\n      \"#FF79C6\",\n      \"#BD93F9\",\n      \"#FF5555\",\n      \"#F1FA8C\"\n    ],\n    \"ansi\": [\n      \"#21222C\",\n      \"#FF5555\",\n      \"#50FA7B\",\n      \"#F1FA8C\",\n      \"#BD93F9\",\n      \"#FF79C6\",\n      \"#8BE9FD\",\n      \"#F8F8F2\",\n      \"#6272A4\",\n      \"#FF6E6E\",\n      \"#69FF94\",\n      \"#FFFFA5\",\n      \"#D6ACFF\",\n      \"#FF92DF\",\n      \"#A4FFFF\",\n      \"#FFFFFF\"\n    ],\n    \"brightOther\": [\"#E9F284\", \"#8BE9FE\"],\n    \"other\": [\n      \"#44475A75\",\n      \"#FFFFFF1A\",\n      \"#FFFFFF\",\n      \"#44475A70\",\n      \"#424450\",\n      \"#343746\",\n      \"#21222C\",\n      \"#191A21\"\n    ]\n  },\n  \"colors\": {\n    \"terminal.background\": \"#282A36\",\n    \"terminal.foreground\": \"#F8F8F2\",\n    \"terminal.ansiBrightBlack\": \"#6272A4\",\n    \"terminal.ansiBrightRed\": \"#FF6E6E\",\n    \"terminal.ansiBrightGreen\": \"#69FF94\",\n    \"terminal.ansiBrightYellow\": \"#FFFFA5\",\n    \"terminal.ansiBrightBlue\": \"#D6ACFF\",\n    \"terminal.ansiBrightMagenta\": \"#FF92DF\",\n    \"terminal.ansiBrightCyan\": \"#A4FFFF\",\n    \"terminal.ansiBrightWhite\": \"#FFFFFF\",\n    \"terminal.ansiBlack\": \"#21222C\",\n    \"terminal.ansiRed\": \"#FF5555\",\n    \"terminal.ansiGreen\": \"#50FA7B\",\n    \"terminal.ansiYellow\": \"#F1FA8C\",\n    \"terminal.ansiBlue\": \"#BD93F9\",\n    \"terminal.ansiMagenta\": \"#FF79C6\",\n    \"terminal.ansiCyan\": \"#8BE9FD\",\n    \"terminal.ansiWhite\": \"#F8F8F2\",\n    \"focusBorder\": \"#6272A4\",\n    \"foreground\": \"#F8F8F2\",\n    \"selection.background\": \"#BD93F9\",\n    \"errorForeground\": \"#FF5555\",\n    \"button.background\": \"#44475A\",\n    \"button.foreground\": \"#F8F8F2\",\n    \"button.secondaryBackground\": \"#282A36\",\n    \"button.secondaryForeground\": \"#F8F8F2\",\n    \"button.secondaryHoverBackground\": \"#343746\",\n    \"dropdown.background\": \"#343746\",\n    \"dropdown.border\": \"#191A21\",\n    \"dropdown.foreground\": \"#F8F8F2\",\n    \"input.background\": \"#282A36\",\n    \"input.foreground\": \"#F8F8F2\",\n    \"input.border\": \"#191A21\",\n    \"input.placeholderForeground\": \"#6272A4\",\n    \"inputOption.activeBorder\": \"#BD93F9\",\n    \"inputValidation.infoBorder\": \"#FF79C6\",\n    \"inputValidation.warningBorder\": \"#FFB86C\",\n    \"inputValidation.errorBorder\": \"#FF5555\",\n    \"badge.foreground\": \"#F8F8F2\",\n    \"badge.background\": \"#44475A\",\n    \"progressBar.background\": \"#FF79C6\",\n    \"list.activeSelectionBackground\": \"#44475A\",\n    \"list.activeSelectionForeground\": \"#F8F8F2\",\n    \"list.dropBackground\": \"#44475A\",\n    \"list.focusBackground\": \"#44475A75\",\n    \"list.highlightForeground\": \"#8BE9FD\",\n    \"list.hoverBackground\": \"#44475A75\",\n    \"list.inactiveSelectionBackground\": \"#44475A75\",\n    \"list.warningForeground\": \"#FFB86C\",\n    \"list.errorForeground\": \"#FF5555\",\n    \"activityBar.background\": \"#343746\",\n    \"activityBar.inactiveForeground\": \"#6272A4\",\n    \"activityBar.foreground\": \"#F8F8F2\",\n    \"activityBar.activeBorder\": \"#FF79C680\",\n    \"activityBar.activeBackground\": \"#BD93F910\",\n    \"activityBarBadge.background\": \"#FF79C6\",\n    \"activityBarBadge.foreground\": \"#F8F8F2\",\n    \"sideBar.background\": \"#21222C\",\n    \"sideBarTitle.foreground\": \"#F8F8F2\",\n    \"sideBarSectionHeader.background\": \"#282A36\",\n    \"sideBarSectionHeader.border\": \"#191A21\",\n    \"editorGroup.border\": \"#BD93F9\",\n    \"editorGroup.dropBackground\": \"#44475A70\",\n    \"editorGroupHeader.tabsBackground\": \"#191A21\",\n    \"tab.activeBackground\": \"#282A36\",\n    \"tab.activeForeground\": \"#F8F8F2\",\n    \"tab.border\": \"#191A21\",\n    \"tab.activeBorderTop\": \"#FF79C680\",\n    \"tab.inactiveBackground\": \"#21222C\",\n    \"tab.inactiveForeground\": \"#6272A4\",\n    \"editor.foreground\": \"#F8F8F2\",\n    \"editor.background\": \"#282A36\",\n    \"editorLineNumber.foreground\": \"#6272A4\",\n    \"editor.selectionBackground\": \"#44475A\",\n    \"editor.selectionHighlightBackground\": \"#424450\",\n    \"editor.foldBackground\": \"#21222C80\",\n    \"editor.wordHighlightBackground\": \"#8BE9FD50\",\n    \"editor.wordHighlightStrongBackground\": \"#50FA7B50\",\n    \"editor.findMatchBackground\": \"#FFB86C80\",\n    \"editor.findMatchHighlightBackground\": \"#FFFFFF40\",\n    \"editor.findRangeHighlightBackground\": \"#44475A75\",\n    \"editor.hoverHighlightBackground\": \"#8BE9FD50\",\n    \"editor.lineHighlightBorder\": \"#44475A\",\n    \"editorLink.activeForeground\": \"#8BE9FD\",\n    \"editor.rangeHighlightBackground\": \"#BD93F915\",\n    \"editor.snippetTabstopHighlightBackground\": \"#282A36\",\n    \"editor.snippetTabstopHighlightBorder\": \"#6272A4\",\n    \"editor.snippetFinalTabstopHighlightBackground\": \"#282A36\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#50FA7B\",\n    \"editorWhitespace.foreground\": \"#FFFFFF1A\",\n    \"editorIndentGuide.background\": \"#FFFFFF1A\",\n    \"editorIndentGuide.activeBackground\": \"#FFFFFF45\",\n    \"editorRuler.foreground\": \"#FFFFFF1A\",\n    \"editorCodeLens.foreground\": \"#6272A4\",\n    \"editorBracketHighlight.foreground1\": \"#F8F8F2\",\n    \"editorBracketHighlight.foreground2\": \"#FF79C6\",\n    \"editorBracketHighlight.foreground3\": \"#8BE9FD\",\n    \"editorBracketHighlight.foreground4\": \"#50FA7B\",\n    \"editorBracketHighlight.foreground5\": \"#BD93F9\",\n    \"editorBracketHighlight.foreground6\": \"#FFB86C\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#FF5555\",\n    \"editorOverviewRuler.border\": \"#191A21\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#FFB86C\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#8BE9FD\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#50FA7B\",\n    \"editorOverviewRuler.modifiedForeground\": \"#8BE9FD80\",\n    \"editorOverviewRuler.addedForeground\": \"#50FA7B80\",\n    \"editorOverviewRuler.deletedForeground\": \"#FF555580\",\n    \"editorOverviewRuler.errorForeground\": \"#FF555580\",\n    \"editorOverviewRuler.warningForeground\": \"#FFB86C80\",\n    \"editorOverviewRuler.infoForeground\": \"#8BE9FD80\",\n    \"editorError.foreground\": \"#FF5555\",\n    \"editorWarning.foreground\": \"#8BE9FD\",\n    \"editorGutter.modifiedBackground\": \"#8BE9FD80\",\n    \"editorGutter.addedBackground\": \"#50FA7B80\",\n    \"editorGutter.deletedBackground\": \"#FF555580\",\n    \"gitDecoration.modifiedResourceForeground\": \"#8BE9FD\",\n    \"gitDecoration.deletedResourceForeground\": \"#FF5555\",\n    \"gitDecoration.untrackedResourceForeground\": \"#50FA7B\",\n    \"gitDecoration.ignoredResourceForeground\": \"#6272A4\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFB86C\",\n    \"diffEditor.insertedTextBackground\": \"#50FA7B20\",\n    \"diffEditor.removedTextBackground\": \"#FF555550\",\n    \"editorWidget.background\": \"#21222C\",\n    \"editorSuggestWidget.background\": \"#21222C\",\n    \"editorSuggestWidget.foreground\": \"#F8F8F2\",\n    \"editorSuggestWidget.selectedBackground\": \"#44475A\",\n    \"editorHoverWidget.background\": \"#282A36\",\n    \"editorHoverWidget.border\": \"#6272A4\",\n    \"editorMarkerNavigation.background\": \"#21222C\",\n    \"peekView.border\": \"#44475A\",\n    \"peekViewEditor.background\": \"#282A36\",\n    \"peekViewEditor.matchHighlightBackground\": \"#F1FA8C80\",\n    \"peekViewResult.background\": \"#21222C\",\n    \"peekViewResult.fileForeground\": \"#F8F8F2\",\n    \"peekViewResult.lineForeground\": \"#F8F8F2\",\n    \"peekViewResult.matchHighlightBackground\": \"#F1FA8C80\",\n    \"peekViewResult.selectionBackground\": \"#44475A\",\n    \"peekViewResult.selectionForeground\": \"#F8F8F2\",\n    \"peekViewTitle.background\": \"#191A21\",\n    \"peekViewTitleDescription.foreground\": \"#6272A4\",\n    \"peekViewTitleLabel.foreground\": \"#F8F8F2\",\n    \"merge.currentHeaderBackground\": \"#50FA7B90\",\n    \"merge.incomingHeaderBackground\": \"#BD93F990\",\n    \"editorOverviewRuler.currentContentForeground\": \"#50FA7B\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#BD93F9\",\n    \"panel.background\": \"#282A36\",\n    \"panel.border\": \"#BD93F9\",\n    \"panelTitle.activeBorder\": \"#FF79C6\",\n    \"panelTitle.activeForeground\": \"#F8F8F2\",\n    \"panelTitle.inactiveForeground\": \"#6272A4\",\n    \"statusBar.background\": \"#191A21\",\n    \"statusBar.foreground\": \"#F8F8F2\",\n    \"statusBar.debuggingBackground\": \"#FF5555\",\n    \"statusBar.debuggingForeground\": \"#191A21\",\n    \"statusBar.noFolderBackground\": \"#191A21\",\n    \"statusBar.noFolderForeground\": \"#F8F8F2\",\n    \"statusBarItem.prominentBackground\": \"#FF5555\",\n    \"statusBarItem.prominentHoverBackground\": \"#FFB86C\",\n    \"statusBarItem.remoteForeground\": \"#282A36\",\n    \"statusBarItem.remoteBackground\": \"#BD93F9\",\n    \"titleBar.activeBackground\": \"#21222C\",\n    \"titleBar.activeForeground\": \"#F8F8F2\",\n    \"titleBar.inactiveBackground\": \"#191A21\",\n    \"titleBar.inactiveForeground\": \"#6272A4\",\n    \"extensionButton.prominentForeground\": \"#F8F8F2\",\n    \"extensionButton.prominentBackground\": \"#50FA7B90\",\n    \"extensionButton.prominentHoverBackground\": \"#50FA7B60\",\n    \"pickerGroup.border\": \"#BD93F9\",\n    \"pickerGroup.foreground\": \"#8BE9FD\",\n    \"debugToolBar.background\": \"#21222C\",\n    \"walkThrough.embeddedEditorBackground\": \"#21222C\",\n    \"settings.headerForeground\": \"#F8F8F2\",\n    \"settings.modifiedItemIndicator\": \"#FFB86C\",\n    \"settings.dropdownBackground\": \"#21222C\",\n    \"settings.dropdownForeground\": \"#F8F8F2\",\n    \"settings.dropdownBorder\": \"#191A21\",\n    \"settings.checkboxBackground\": \"#21222C\",\n    \"settings.checkboxForeground\": \"#F8F8F2\",\n    \"settings.checkboxBorder\": \"#191A21\",\n    \"settings.textInputBackground\": \"#21222C\",\n    \"settings.textInputForeground\": \"#F8F8F2\",\n    \"settings.textInputBorder\": \"#191A21\",\n    \"settings.numberInputBackground\": \"#21222C\",\n    \"settings.numberInputForeground\": \"#F8F8F2\",\n    \"settings.numberInputBorder\": \"#191A21\",\n    \"breadcrumb.foreground\": \"#6272A4\",\n    \"breadcrumb.background\": \"#282A36\",\n    \"breadcrumb.focusForeground\": \"#F8F8F2\",\n    \"breadcrumb.activeSelectionForeground\": \"#F8F8F2\",\n    \"breadcrumbPicker.background\": \"#191A21\",\n    \"listFilterWidget.background\": \"#343746\",\n    \"listFilterWidget.outline\": \"#424450\",\n    \"listFilterWidget.noMatchesOutline\": \"#FF5555\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"emphasis\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"strong\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"header\"],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"scope\": [\"meta.diff\", \"meta.diff.header\"],\n      \"settings\": {\n        \"foreground\": \"#6272A4\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#FF5555\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\"],\n      \"settings\": {\n        \"foreground\": \"#FF5555\",\n        \"fontStyle\": \"underline italic\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\",\n        \"fontStyle\": \"underline italic\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.filename\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"scope\": [\"markup.error\"],\n      \"settings\": {\n        \"foreground\": \"#FF5555\"\n      }\n    },\n    {\n      \"name\": \"Underlined markup\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Bold markup\",\n      \"scope\": [\"markup.bold\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Markup headings\",\n      \"scope\": [\"markup.heading\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Markup italic\",\n      \"scope\": [\"markup.italic\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Bullets, lists (prose)\",\n      \"scope\": [\n        \"beginning.punctuation.definition.list.markdown\",\n        \"beginning.punctuation.definition.quote.markdown\",\n        \"punctuation.definition.link.restructuredtext\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Inline code (prose)\",\n      \"scope\": [\"markup.inline.raw\", \"markup.raw.restructuredtext\"],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Links (prose)\",\n      \"scope\": [\"markup.underline.link\", \"markup.underline.link.image\"],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Link text, image alt text (prose)\",\n      \"scope\": [\n        \"meta.link.reference.def.restructuredtext\",\n        \"punctuation.definition.directive.restructuredtext\",\n        \"string.other.link.description\",\n        \"string.other.link.title\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Blockquotes (prose)\",\n      \"scope\": [\"entity.name.directive.restructuredtext\", \"markup.quote\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Horizontal rule (prose)\",\n      \"scope\": [\"meta.separator.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#6272A4\"\n      }\n    },\n    {\n      \"name\": \"Code blocks\",\n      \"scope\": [\n        \"fenced_code.block.language\",\n        \"markup.raw.inner.restructuredtext\",\n        \"markup.fenced_code.block.markdown punctuation.definition.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Prose constants\",\n      \"scope\": [\"punctuation.definition.constant.restructuredtext\"],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown headings\",\n      \"scope\": [\n        \"markup.heading.markdown punctuation.definition.string.begin\",\n        \"markup.heading.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown paragraphs\",\n      \"scope\": [\n        \"meta.paragraph.markdown punctuation.definition.string.begin\",\n        \"meta.paragraph.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Braces in markdown blockquotes\",\n      \"scope\": [\n        \"markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin\",\n        \"markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"User-defined class names\",\n      \"scope\": [\"entity.name.type.class\", \"entity.name.class\"],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\",\n        \"fontStyle\": \"normal\"\n      }\n    },\n    {\n      \"name\": \"this, super, self, etc.\",\n      \"scope\": [\n        \"keyword.expressions-and-types.swift\",\n        \"keyword.other.this\",\n        \"variable.language\",\n        \"variable.language punctuation.definition.variable.php\",\n        \"variable.other.readwrite.instance.ruby\",\n        \"variable.parameter.function.language.special\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Inherited classes\",\n      \"scope\": [\"entity.other.inherited-class\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Comments\",\n      \"scope\": [\n        \"comment\",\n        \"punctuation.definition.comment\",\n        \"unused.comment\",\n        \"wildcard.comment\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#6272A4\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style keywords\",\n      \"scope\": [\n        \"comment keyword.codetag.notation\",\n        \"comment.block.documentation keyword\",\n        \"comment.block.documentation storage.type.class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style types\",\n      \"scope\": [\"comment.block.documentation entity.name.type\"],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style type brackets\",\n      \"scope\": [\n        \"comment.block.documentation entity.name.type punctuation.definition.bracket\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"JSDoc-style comment parameters\",\n      \"scope\": [\"comment.block.documentation variable\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Constants\",\n      \"scope\": [\"constant\", \"variable.other.constant\"],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Constant escape sequences\",\n      \"scope\": [\n        \"constant.character.escape\",\n        \"constant.character.string.escape\",\n        \"constant.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"HTML tags\",\n      \"scope\": [\"entity.name.tag\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"CSS attribute parent selectors ('&')\",\n      \"scope\": [\"entity.other.attribute-name.parent-selector\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"HTML/CSS attribute names\",\n      \"scope\": [\"entity.other.attribute-name\"],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Function names\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"meta.function-call.object\",\n        \"meta.function-call.php\",\n        \"meta.function-call.static\",\n        \"meta.method-call.java meta.method\",\n        \"meta.method.groovy\",\n        \"support.function.any-method.lua\",\n        \"keyword.operator.function.infix\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Function parameters\",\n      \"scope\": [\n        \"entity.name.variable.parameter\",\n        \"meta.at-rule.function variable\",\n        \"meta.at-rule.mixin variable\",\n        \"meta.function.arguments variable.other.php\",\n        \"meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql\",\n        \"variable.parameter\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Decorators\",\n      \"scope\": [\n        \"meta.decorator variable.other.readwrite\",\n        \"meta.decorator variable.other.property\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Decorator Objects\",\n      \"scope\": [\"meta.decorator variable.other.object\"],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Keywords\",\n      \"scope\": [\"keyword\", \"punctuation.definition.keyword\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Keyword \\\"new\\\"\",\n      \"scope\": [\"keyword.control.new\", \"keyword.operator.new\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Generic selectors (CSS/SCSS/Less/Stylus)\",\n      \"scope\": [\"meta.selector\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Language Built-ins\",\n      \"scope\": [\"support\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Built-in magic functions and constants\",\n      \"scope\": [\n        \"support.function.magic\",\n        \"support.variable\",\n        \"variable.other.predefined\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"regular\",\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Built-in functions / properties\",\n      \"scope\": [\"support.function\", \"support.type.property-name\"],\n      \"settings\": {\n        \"fontStyle\": \"regular\"\n      }\n    },\n    {\n      \"name\": \"Separators (key/value, namespace, inheritance, pointer, hash, slice, etc)\",\n      \"scope\": [\n        \"constant.other.symbol.hashkey punctuation.definition.constant.ruby\",\n        \"entity.other.attribute-name.placeholder punctuation\",\n        \"entity.other.attribute-name.pseudo-class punctuation\",\n        \"entity.other.attribute-name.pseudo-element punctuation\",\n        \"meta.group.double.toml\",\n        \"meta.group.toml\",\n        \"meta.object-binding-pattern-variable punctuation.destructuring\",\n        \"punctuation.colon.graphql\",\n        \"punctuation.definition.block.scalar.folded.yaml\",\n        \"punctuation.definition.block.scalar.literal.yaml\",\n        \"punctuation.definition.block.sequence.item.yaml\",\n        \"punctuation.definition.entity.other.inherited-class\",\n        \"punctuation.function.swift\",\n        \"punctuation.separator.dictionary.key-value\",\n        \"punctuation.separator.hash\",\n        \"punctuation.separator.inheritance\",\n        \"punctuation.separator.key-value\",\n        \"punctuation.separator.key-value.mapping.yaml\",\n        \"punctuation.separator.namespace\",\n        \"punctuation.separator.pointer-access\",\n        \"punctuation.separator.slice\",\n        \"string.unquoted.heredoc punctuation.definition.string\",\n        \"support.other.chomping-indicator.yaml\",\n        \"punctuation.separator.annotation\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Brackets, braces, parens, etc.\",\n      \"scope\": [\n        \"keyword.operator.other.powershell\",\n        \"keyword.other.statement-separator.powershell\",\n        \"meta.brace.round\",\n        \"meta.function-call punctuation\",\n        \"punctuation.definition.arguments.begin\",\n        \"punctuation.definition.arguments.end\",\n        \"punctuation.definition.entity.begin\",\n        \"punctuation.definition.entity.end\",\n        \"punctuation.definition.tag.cs\",\n        \"punctuation.definition.type.begin\",\n        \"punctuation.definition.type.end\",\n        \"punctuation.section.scope.begin\",\n        \"punctuation.section.scope.end\",\n        \"punctuation.terminator.expression.php\",\n        \"storage.type.generic.java\",\n        \"string.template meta.brace\",\n        \"string.template punctuation.accessor\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Variable interpolation operators\",\n      \"scope\": [\n        \"meta.string-contents.quoted.double punctuation.definition.variable\",\n        \"punctuation.definition.interpolation.begin\",\n        \"punctuation.definition.interpolation.end\",\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded.begin\",\n        \"punctuation.section.embedded.coffee\",\n        \"punctuation.section.embedded.end\",\n        \"punctuation.section.embedded.end source.php\",\n        \"punctuation.section.embedded.end source.ruby\",\n        \"punctuation.definition.variable.makefile\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Keys (serializable languages)\",\n      \"scope\": [\n        \"entity.name.function.target.makefile\",\n        \"entity.name.section.toml\",\n        \"entity.name.tag.yaml\",\n        \"variable.other.key.toml\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Dates / timestamps (serializable languages)\",\n      \"scope\": [\"constant.other.date\", \"constant.other.timestamp\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"YAML aliases\",\n      \"scope\": [\"variable.other.alias.yaml\"],\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": [\n        \"storage\",\n        \"meta.implementation storage.type.objc\",\n        \"meta.interface-or-protocol storage.type.objc\",\n        \"source.groovy storage.type.def\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"regular\",\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"Types\",\n      \"scope\": [\n        \"entity.name.type\",\n        \"keyword.primitive-datatypes.swift\",\n        \"keyword.type.cs\",\n        \"meta.protocol-list.objc\",\n        \"meta.return-type.objc\",\n        \"source.go storage.type\",\n        \"source.groovy storage.type\",\n        \"source.java storage.type\",\n        \"source.powershell entity.other.attribute-name\",\n        \"storage.class.std.rust\",\n        \"storage.type.attribute.swift\",\n        \"storage.type.c\",\n        \"storage.type.core.rust\",\n        \"storage.type.cs\",\n        \"storage.type.groovy\",\n        \"storage.type.objc\",\n        \"storage.type.php\",\n        \"storage.type.haskell\",\n        \"storage.type.ocaml\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Generics, templates, and mapped type declarations\",\n      \"scope\": [\n        \"entity.name.type.type-parameter\",\n        \"meta.indexer.mappedtype.declaration entity.name.type\",\n        \"meta.type.parameters entity.name.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Modifiers\",\n      \"scope\": [\"storage.modifier\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"RegExp string\",\n      \"scope\": [\n        \"string.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.character.escape.backslash.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"Non-capture operators\",\n      \"scope\": [\"punctuation.definition.group.capture.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#FF79C6\"\n      }\n    },\n    {\n      \"name\": \"RegExp start and end characters\",\n      \"scope\": [\n        \"string.regexp punctuation.definition.string.begin\",\n        \"string.regexp punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF5555\"\n      }\n    },\n    {\n      \"name\": \"Character group\",\n      \"scope\": [\"punctuation.definition.character-class.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Capture groups\",\n      \"scope\": [\"punctuation.definition.group.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Assertion operators\",\n      \"scope\": [\n        \"punctuation.definition.group.assertion.regexp\",\n        \"keyword.operator.negation.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF5555\"\n      }\n    },\n    {\n      \"name\": \"Positive lookaheads\",\n      \"scope\": [\"meta.assertion.look-ahead.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#50FA7B\"\n      }\n    },\n    {\n      \"name\": \"Strings\",\n      \"scope\": [\"string\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"String quotes (temporary vscode fix)\",\n      \"scope\": [\n        \"punctuation.definition.string.begin\",\n        \"punctuation.definition.string.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#E9F284\"\n      }\n    },\n    {\n      \"name\": \"Property quotes (temporary vscode fix)\",\n      \"scope\": [\n        \"punctuation.support.type.property-name.begin\",\n        \"punctuation.support.type.property-name.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8BE9FE\"\n      }\n    },\n    {\n      \"name\": \"Docstrings\",\n      \"scope\": [\n        \"string.quoted.docstring.multi\",\n        \"string.quoted.docstring.multi.python punctuation.definition.string.begin\",\n        \"string.quoted.docstring.multi.python punctuation.definition.string.end\",\n        \"string.quoted.docstring.multi.python constant.character.escape\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#6272A4\"\n      }\n    },\n    {\n      \"name\": \"Variables and object properties\",\n      \"scope\": [\n        \"variable\",\n        \"constant.other.key.perl\",\n        \"support.variable.property\",\n        \"variable.other.constant.js\",\n        \"variable.other.constant.ts\",\n        \"variable.other.constant.tsx\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Destructuring / aliasing reference name (LHS)\",\n      \"scope\": [\n        \"meta.import variable.other.readwrite\",\n        \"meta.variable.assignment.destructured.object.coffee variable\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#FFB86C\"\n      }\n    },\n    {\n      \"name\": \"Destructuring / aliasing variable name (RHS)\",\n      \"scope\": [\n        \"meta.import variable.other.readwrite.alias\",\n        \"meta.export variable.other.readwrite.alias\",\n        \"meta.variable.assignment.destructured.object.coffee variable variable\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"normal\",\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"GraphQL keys\",\n      \"scope\": [\"meta.selectionset.graphql variable\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"GraphQL function arguments\",\n      \"scope\": [\"meta.selectionset.graphql meta.arguments variable\"],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"GraphQL fragment name (definition)\",\n      \"scope\": [\"entity.name.fragment.graphql\", \"variable.fragment.graphql\"],\n      \"settings\": {\n        \"foreground\": \"#8BE9FD\"\n      }\n    },\n    {\n      \"name\": \"Edge cases (foreground color resets)\",\n      \"scope\": [\n        \"constant.other.symbol.hashkey.ruby\",\n        \"keyword.operator.dereference.java\",\n        \"keyword.operator.navigation.groovy\",\n        \"meta.scope.for-loop.shell punctuation.definition.string.begin\",\n        \"meta.scope.for-loop.shell punctuation.definition.string.end\",\n        \"meta.scope.for-loop.shell string\",\n        \"storage.modifier.import\",\n        \"punctuation.section.embedded.begin.tsx\",\n        \"punctuation.section.embedded.end.tsx\",\n        \"punctuation.section.embedded.begin.jsx\",\n        \"punctuation.section.embedded.end.jsx\",\n        \"punctuation.separator.list.comma.css\",\n        \"constant.language.empty-list.haskell\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Shell variables prefixed with \\\"$\\\" (edge case)\",\n      \"scope\": [\"source.shell variable.other\"],\n      \"settings\": {\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Powershell constants mistakenly scoped to `support`, rather than `constant` (edge)\",\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"fontStyle\": \"normal\",\n        \"foreground\": \"#BD93F9\"\n      }\n    },\n    {\n      \"name\": \"Makefile prerequisite names\",\n      \"scope\": [\"meta.scope.prerequisites.makefile\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"SCSS attibute selector strings\",\n      \"scope\": [\"meta.attribute-selector.scss\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\"\n      }\n    },\n    {\n      \"name\": \"SCSS attribute selector brackets\",\n      \"scope\": [\n        \"punctuation.definition.attribute-selector.end.bracket.square.scss\",\n        \"punctuation.definition.attribute-selector.begin.bracket.square.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Haskell Pragmas\",\n      \"scope\": [\"meta.preprocessor.haskell\"],\n      \"settings\": {\n        \"foreground\": \"#6272A4\"\n      }\n    },\n    {\n      \"name\": \"Log file error\",\n      \"scope\": [\"log.error\"],\n      \"settings\": {\n        \"foreground\": \"#FF5555\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Log file warning\",\n      \"scope\": [\"log.warning\"],\n      \"settings\": {\n        \"foreground\": \"#F1FA8C\",\n        \"fontStyle\": \"bold\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/github-dark-dimmed.json",
    "content": "{\n  \"name\": \"github-dark-dimmed\",\n  \"colors\": {\n    \"focusBorder\": \"#316dca\",\n    \"foreground\": \"#adbac7\",\n    \"descriptionForeground\": \"#768390\",\n    \"errorForeground\": \"#e5534b\",\n    \"textLink.foreground\": \"#539bf5\",\n    \"textLink.activeForeground\": \"#539bf5\",\n    \"textBlockQuote.background\": \"#1c2128\",\n    \"textBlockQuote.border\": \"#444c56\",\n    \"textCodeBlock.background\": \"#636e7b66\",\n    \"textPreformat.foreground\": \"#768390\",\n    \"textSeparator.foreground\": \"#373e47\",\n    \"icon.foreground\": \"#768390\",\n    \"keybindingLabel.foreground\": \"#adbac7\",\n    \"button.background\": \"#347d39\",\n    \"button.foreground\": \"#ffffff\",\n    \"button.hoverBackground\": \"#46954a\",\n    \"button.secondaryBackground\": \"#3d444d\",\n    \"button.secondaryForeground\": \"#adbac7\",\n    \"button.secondaryHoverBackground\": \"#444c56\",\n    \"checkbox.background\": \"#2d333b\",\n    \"checkbox.border\": \"#444c56\",\n    \"dropdown.background\": \"#2d333b\",\n    \"dropdown.border\": \"#444c56\",\n    \"dropdown.foreground\": \"#adbac7\",\n    \"dropdown.listBackground\": \"#2d333b\",\n    \"input.background\": \"#22272e\",\n    \"input.border\": \"#444c56\",\n    \"input.foreground\": \"#adbac7\",\n    \"input.placeholderForeground\": \"#545d68\",\n    \"badge.foreground\": \"#cdd9e5\",\n    \"badge.background\": \"#316dca\",\n    \"progressBar.background\": \"#316dca\",\n    \"titleBar.activeForeground\": \"#768390\",\n    \"titleBar.activeBackground\": \"#22272e\",\n    \"titleBar.inactiveForeground\": \"#768390\",\n    \"titleBar.inactiveBackground\": \"#1c2128\",\n    \"titleBar.border\": \"#444c56\",\n    \"activityBar.foreground\": \"#adbac7\",\n    \"activityBar.inactiveForeground\": \"#768390\",\n    \"activityBar.background\": \"#22272e\",\n    \"activityBarBadge.foreground\": \"#cdd9e5\",\n    \"activityBarBadge.background\": \"#316dca\",\n    \"activityBar.activeBorder\": \"#ec775c\",\n    \"activityBar.border\": \"#444c56\",\n    \"sideBar.foreground\": \"#adbac7\",\n    \"sideBar.background\": \"#1c2128\",\n    \"sideBar.border\": \"#444c56\",\n    \"sideBarTitle.foreground\": \"#adbac7\",\n    \"sideBarSectionHeader.foreground\": \"#adbac7\",\n    \"sideBarSectionHeader.background\": \"#1c2128\",\n    \"sideBarSectionHeader.border\": \"#444c56\",\n    \"list.hoverForeground\": \"#adbac7\",\n    \"list.inactiveSelectionForeground\": \"#adbac7\",\n    \"list.activeSelectionForeground\": \"#adbac7\",\n    \"list.hoverBackground\": \"#636e7b1a\",\n    \"list.inactiveSelectionBackground\": \"#636e7b66\",\n    \"list.activeSelectionBackground\": \"#636e7b66\",\n    \"list.focusForeground\": \"#adbac7\",\n    \"list.focusBackground\": \"#4184e426\",\n    \"list.inactiveFocusBackground\": \"#4184e426\",\n    \"list.highlightForeground\": \"#539bf5\",\n    \"tree.indentGuidesStroke\": \"#373e47\",\n    \"notificationCenterHeader.foreground\": \"#768390\",\n    \"notificationCenterHeader.background\": \"#2d333b\",\n    \"notifications.foreground\": \"#adbac7\",\n    \"notifications.background\": \"#2d333b\",\n    \"notifications.border\": \"#444c56\",\n    \"notificationsErrorIcon.foreground\": \"#e5534b\",\n    \"notificationsWarningIcon.foreground\": \"#c69026\",\n    \"notificationsInfoIcon.foreground\": \"#539bf5\",\n    \"pickerGroup.border\": \"#444c56\",\n    \"pickerGroup.foreground\": \"#768390\",\n    \"quickInput.background\": \"#2d333b\",\n    \"quickInput.foreground\": \"#adbac7\",\n    \"statusBar.foreground\": \"#768390\",\n    \"statusBar.background\": \"#22272e\",\n    \"statusBar.border\": \"#444c56\",\n    \"statusBar.focusBorder\": \"#316dca80\",\n    \"statusBar.noFolderBackground\": \"#22272e\",\n    \"statusBar.debuggingForeground\": \"#cdd9e5\",\n    \"statusBar.debuggingBackground\": \"#c93c37\",\n    \"statusBarItem.prominentBackground\": \"#636e7b66\",\n    \"statusBarItem.remoteForeground\": \"#adbac7\",\n    \"statusBarItem.remoteBackground\": \"#444c56\",\n    \"statusBarItem.hoverBackground\": \"#adbac714\",\n    \"statusBarItem.activeBackground\": \"#adbac71f\",\n    \"statusBarItem.focusBorder\": \"#316dca\",\n    \"editorGroupHeader.tabsBackground\": \"#1c2128\",\n    \"editorGroupHeader.tabsBorder\": \"#444c56\",\n    \"editorGroup.border\": \"#444c56\",\n    \"tab.activeForeground\": \"#adbac7\",\n    \"tab.inactiveForeground\": \"#768390\",\n    \"tab.inactiveBackground\": \"#1c2128\",\n    \"tab.activeBackground\": \"#22272e\",\n    \"tab.hoverBackground\": \"#22272e\",\n    \"tab.unfocusedHoverBackground\": \"#636e7b1a\",\n    \"tab.border\": \"#444c56\",\n    \"tab.unfocusedActiveBorderTop\": \"#444c56\",\n    \"tab.activeBorder\": \"#22272e\",\n    \"tab.unfocusedActiveBorder\": \"#22272e\",\n    \"tab.activeBorderTop\": \"#ec775c\",\n    \"breadcrumb.foreground\": \"#768390\",\n    \"breadcrumb.focusForeground\": \"#adbac7\",\n    \"breadcrumb.activeSelectionForeground\": \"#768390\",\n    \"breadcrumbPicker.background\": \"#2d333b\",\n    \"editor.foreground\": \"#adbac7\",\n    \"editor.background\": \"#22272e\",\n    \"editorWidget.background\": \"#2d333b\",\n    \"editor.foldBackground\": \"#636e7b1a\",\n    \"editor.lineHighlightBackground\": \"#636e7b1a\",\n    \"editorLineNumber.foreground\": \"#636e7b\",\n    \"editorLineNumber.activeForeground\": \"#adbac7\",\n    \"editorIndentGuide.background\": \"#adbac71f\",\n    \"editorIndentGuide.activeBackground\": \"#adbac73d\",\n    \"editorWhitespace.foreground\": \"#545d68\",\n    \"editorCursor.foreground\": \"#539bf5\",\n    \"editor.findMatchBackground\": \"#966600\",\n    \"editor.findMatchHighlightBackground\": \"#eac55f80\",\n    \"editor.linkedEditingBackground\": \"#539bf512\",\n    \"editor.selectionHighlightBackground\": \"#57ab5a40\",\n    \"editor.wordHighlightBackground\": \"#636e7b80\",\n    \"editor.wordHighlightBorder\": \"#636e7b99\",\n    \"editor.wordHighlightStrongBackground\": \"#636e7b4d\",\n    \"editor.wordHighlightStrongBorder\": \"#636e7b99\",\n    \"editorBracketMatch.background\": \"#57ab5a40\",\n    \"editorBracketMatch.border\": \"#57ab5a99\",\n    \"editorInlayHint.background\": \"#76839033\",\n    \"editorInlayHint.foreground\": \"#768390\",\n    \"editorInlayHint.typeBackground\": \"#76839033\",\n    \"editorInlayHint.typeForeground\": \"#768390\",\n    \"editorInlayHint.paramBackground\": \"#76839033\",\n    \"editorInlayHint.paramForeground\": \"#768390\",\n    \"editorGutter.modifiedBackground\": \"#ae7c1466\",\n    \"editorGutter.addedBackground\": \"#46954a66\",\n    \"editorGutter.deletedBackground\": \"#e5534b66\",\n    \"diffEditor.insertedLineBackground\": \"#347d3933\",\n    \"diffEditor.insertedTextBackground\": \"#347d394d\",\n    \"diffEditor.removedLineBackground\": \"#c93c3733\",\n    \"diffEditor.removedTextBackground\": \"#c93c374d\",\n    \"scrollbar.shadow\": \"#545d6833\",\n    \"scrollbarSlider.background\": \"#636e7b33\",\n    \"scrollbarSlider.hoverBackground\": \"#636e7b45\",\n    \"scrollbarSlider.activeBackground\": \"#636e7b87\",\n    \"editorOverviewRuler.border\": \"#1c2128\",\n    \"panel.background\": \"#1c2128\",\n    \"panel.border\": \"#444c56\",\n    \"panelTitle.activeBorder\": \"#ec775c\",\n    \"panelTitle.activeForeground\": \"#adbac7\",\n    \"panelTitle.inactiveForeground\": \"#768390\",\n    \"panelInput.border\": \"#444c56\",\n    \"debugIcon.breakpointForeground\": \"#e5534b\",\n    \"debugConsole.infoForeground\": \"#768390\",\n    \"debugConsole.warningForeground\": \"#c69026\",\n    \"debugConsole.errorForeground\": \"#ff938a\",\n    \"debugConsole.sourceForeground\": \"#daaa3f\",\n    \"debugConsoleInputIcon.foreground\": \"#b083f0\",\n    \"debugTokenExpression.name\": \"#6cb6ff\",\n    \"debugTokenExpression.value\": \"#96d0ff\",\n    \"debugTokenExpression.string\": \"#96d0ff\",\n    \"debugTokenExpression.boolean\": \"#6bc46d\",\n    \"debugTokenExpression.number\": \"#6bc46d\",\n    \"debugTokenExpression.error\": \"#ff938a\",\n    \"symbolIcon.arrayForeground\": \"#e0823d\",\n    \"symbolIcon.booleanForeground\": \"#539bf5\",\n    \"symbolIcon.classForeground\": \"#e0823d\",\n    \"symbolIcon.colorForeground\": \"#6cb6ff\",\n    \"symbolIcon.constructorForeground\": \"#dcbdfb\",\n    \"symbolIcon.enumeratorForeground\": \"#e0823d\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#539bf5\",\n    \"symbolIcon.eventForeground\": \"#636e7b\",\n    \"symbolIcon.fieldForeground\": \"#e0823d\",\n    \"symbolIcon.fileForeground\": \"#c69026\",\n    \"symbolIcon.folderForeground\": \"#c69026\",\n    \"symbolIcon.functionForeground\": \"#b083f0\",\n    \"symbolIcon.interfaceForeground\": \"#e0823d\",\n    \"symbolIcon.keyForeground\": \"#539bf5\",\n    \"symbolIcon.keywordForeground\": \"#f47067\",\n    \"symbolIcon.methodForeground\": \"#b083f0\",\n    \"symbolIcon.moduleForeground\": \"#f47067\",\n    \"symbolIcon.namespaceForeground\": \"#f47067\",\n    \"symbolIcon.nullForeground\": \"#539bf5\",\n    \"symbolIcon.numberForeground\": \"#57ab5a\",\n    \"symbolIcon.objectForeground\": \"#e0823d\",\n    \"symbolIcon.operatorForeground\": \"#6cb6ff\",\n    \"symbolIcon.packageForeground\": \"#e0823d\",\n    \"symbolIcon.propertyForeground\": \"#e0823d\",\n    \"symbolIcon.referenceForeground\": \"#539bf5\",\n    \"symbolIcon.snippetForeground\": \"#539bf5\",\n    \"symbolIcon.stringForeground\": \"#6cb6ff\",\n    \"symbolIcon.structForeground\": \"#e0823d\",\n    \"symbolIcon.textForeground\": \"#6cb6ff\",\n    \"symbolIcon.typeParameterForeground\": \"#6cb6ff\",\n    \"symbolIcon.unitForeground\": \"#539bf5\",\n    \"symbolIcon.variableForeground\": \"#e0823d\",\n    \"symbolIcon.constantForeground\": [\n      \"#b4f1b4\",\n      \"#8ddb8c\",\n      \"#6bc46d\",\n      \"#57ab5a\",\n      \"#46954a\",\n      \"#347d39\",\n      \"#2b6a30\",\n      \"#245829\",\n      \"#1b4721\",\n      \"#113417\"\n    ],\n    \"terminal.foreground\": \"#adbac7\",\n    \"terminal.ansiBlack\": \"#545d68\",\n    \"terminal.ansiRed\": \"#f47067\",\n    \"terminal.ansiGreen\": \"#57ab5a\",\n    \"terminal.ansiYellow\": \"#c69026\",\n    \"terminal.ansiBlue\": \"#539bf5\",\n    \"terminal.ansiMagenta\": \"#b083f0\",\n    \"terminal.ansiCyan\": \"#39c5cf\",\n    \"terminal.ansiWhite\": \"#909dab\",\n    \"terminal.ansiBrightBlack\": \"#636e7b\",\n    \"terminal.ansiBrightRed\": \"#ff938a\",\n    \"terminal.ansiBrightGreen\": \"#6bc46d\",\n    \"terminal.ansiBrightYellow\": \"#daaa3f\",\n    \"terminal.ansiBrightBlue\": \"#6cb6ff\",\n    \"terminal.ansiBrightMagenta\": \"#dcbdfb\",\n    \"terminal.ansiBrightCyan\": \"#56d4dd\",\n    \"terminal.ansiBrightWhite\": \"#cdd9e5\",\n    \"editorBracketHighlight.foreground1\": \"#6cb6ff\",\n    \"editorBracketHighlight.foreground2\": \"#6bc46d\",\n    \"editorBracketHighlight.foreground3\": \"#daaa3f\",\n    \"editorBracketHighlight.foreground4\": \"#ff938a\",\n    \"editorBracketHighlight.foreground5\": \"#fc8dc7\",\n    \"editorBracketHighlight.foreground6\": \"#dcbdfb\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#768390\",\n    \"gitDecoration.addedResourceForeground\": \"#57ab5a\",\n    \"gitDecoration.modifiedResourceForeground\": \"#c69026\",\n    \"gitDecoration.deletedResourceForeground\": \"#e5534b\",\n    \"gitDecoration.untrackedResourceForeground\": \"#57ab5a\",\n    \"gitDecoration.ignoredResourceForeground\": \"#545d68\",\n    \"gitDecoration.conflictingResourceForeground\": \"#cc6b2c\",\n    \"gitDecoration.submoduleResourceForeground\": \"#768390\",\n    \"debugToolBar.background\": \"#2d333b\",\n    \"editor.stackFrameHighlightBackground\": \"#ae7c1466\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#46954a66\",\n    \"peekViewEditor.matchHighlightBackground\": \"#ae7c1466\",\n    \"peekViewResult.matchHighlightBackground\": \"#ae7c1466\",\n    \"peekViewEditor.background\": \"#636e7b1a\",\n    \"peekViewResult.background\": \"#22272e\",\n    \"settings.headerForeground\": \"#768390\",\n    \"settings.modifiedItemIndicator\": \"#ae7c1466\",\n    \"welcomePage.buttonBackground\": \"#373e47\",\n    \"welcomePage.buttonHoverBackground\": \"#444c56\"\n  },\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\", \"string.comment\"],\n      \"settings\": {\n        \"foreground\": \"#768390\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant\",\n        \"entity.name.constant\",\n        \"variable.other.constant\",\n        \"variable.other.enummember\",\n        \"variable.language\",\n        \"entity\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name\",\n        \"meta.export.default\",\n        \"meta.definition.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f69d50\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.parameter.function\",\n        \"meta.jsx.children\",\n        \"meta.block\",\n        \"meta.tag.attributes\",\n        \"entity.name.constant\",\n        \"meta.object.member\",\n        \"meta.embedded.expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#adbac7\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#dcbdfb\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.tag\", \"support.class.component\"],\n      \"settings\": {\n        \"foreground\": \"#8ddb8c\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#f47067\"\n      }\n    },\n    {\n      \"scope\": [\"storage\", \"storage.type\"],\n      \"settings\": {\n        \"foreground\": \"#f47067\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.package\",\n        \"storage.modifier.import\",\n        \"storage.type.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#adbac7\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"string punctuation.section.embedded source\"],\n      \"settings\": {\n        \"foreground\": \"#96d0ff\"\n      }\n    },\n    {\n      \"scope\": \"support\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"foreground\": \"#f69d50\"\n      }\n    },\n    {\n      \"scope\": \"variable.other\",\n      \"settings\": {\n        \"foreground\": \"#adbac7\"\n      }\n    },\n    {\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": \"carriage-return\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"background\": \"#f47067\",\n        \"foreground\": \"#cdd9e5\",\n        \"content\": \"^M\"\n      }\n    },\n    {\n      \"scope\": \"message.error\",\n      \"settings\": {\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": \"string variable\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": [\"source.regexp\", \"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#96d0ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.regexp.character-class\",\n        \"string.regexp constant.character.escape\",\n        \"string.regexp source.ruby.embedded\",\n        \"string.regexp string.regexp.arbitrary-repitition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#96d0ff\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp constant.character.escape\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#8ddb8c\"\n      }\n    },\n    {\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"support.variable\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#8ddb8c\"\n      }\n    },\n    {\n      \"scope\": \"meta.module-reference\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#f69d50\"\n      }\n    },\n    {\n      \"scope\": [\"markup.heading\", \"markup.heading entity.name\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#8ddb8c\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#adbac7\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#adbac7\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"markup.strikethrough\"],\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.deleted\",\n        \"meta.diff.header.from-file\",\n        \"punctuation.definition.deleted\"\n      ],\n      \"settings\": {\n        \"background\": \"#5d0f12\",\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.section.embedded\"],\n      \"settings\": {\n        \"foreground\": \"#f47067\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inserted\",\n        \"meta.diff.header.to-file\",\n        \"punctuation.definition.inserted\"\n      ],\n      \"settings\": {\n        \"background\": \"#113417\",\n        \"foreground\": \"#8ddb8c\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\", \"punctuation.definition.changed\"],\n      \"settings\": {\n        \"background\": \"#682d0f\",\n        \"foreground\": \"#f69d50\"\n      }\n    },\n    {\n      \"scope\": [\"markup.ignored\", \"markup.untracked\"],\n      \"settings\": {\n        \"foreground\": \"#2d333b\",\n        \"background\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.range\",\n      \"settings\": {\n        \"foreground\": \"#dcbdfb\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.output\",\n      \"settings\": {\n        \"foreground\": \"#6cb6ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"brackethighlighter.tag\",\n        \"brackethighlighter.curly\",\n        \"brackethighlighter.round\",\n        \"brackethighlighter.square\",\n        \"brackethighlighter.angle\",\n        \"brackethighlighter.quote\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#768390\"\n      }\n    },\n    {\n      \"scope\": \"brackethighlighter.unmatched\",\n      \"settings\": {\n        \"foreground\": \"#ff938a\"\n      }\n    },\n    {\n      \"scope\": [\"constant.other.reference.link\", \"string.other.link\"],\n      \"settings\": {\n        \"foreground\": \"#96d0ff\",\n        \"fontStyle\": \"underline\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/github-dark.json",
    "content": "{\n  \"name\": \"github-dark\",\n  \"colors\": {\n    \"focusBorder\": \"#1f6feb\",\n    \"foreground\": \"#c9d1d9\",\n    \"descriptionForeground\": \"#8b949e\",\n    \"errorForeground\": \"#f85149\",\n    \"textLink.foreground\": \"#58a6ff\",\n    \"textLink.activeForeground\": \"#58a6ff\",\n    \"textBlockQuote.background\": \"#010409\",\n    \"textBlockQuote.border\": \"#30363d\",\n    \"textCodeBlock.background\": \"#6e768166\",\n    \"textPreformat.foreground\": \"#8b949e\",\n    \"textSeparator.foreground\": \"#21262d\",\n    \"icon.foreground\": \"#8b949e\",\n    \"keybindingLabel.foreground\": \"#c9d1d9\",\n    \"button.background\": \"#238636\",\n    \"button.foreground\": \"#ffffff\",\n    \"button.hoverBackground\": \"#2ea043\",\n    \"button.secondaryBackground\": \"#282e33\",\n    \"button.secondaryForeground\": \"#c9d1d9\",\n    \"button.secondaryHoverBackground\": \"#30363d\",\n    \"checkbox.background\": \"#161b22\",\n    \"checkbox.border\": \"#30363d\",\n    \"dropdown.background\": \"#161b22\",\n    \"dropdown.border\": \"#30363d\",\n    \"dropdown.foreground\": \"#c9d1d9\",\n    \"dropdown.listBackground\": \"#161b22\",\n    \"input.background\": \"#0d1117\",\n    \"input.border\": \"#30363d\",\n    \"input.foreground\": \"#c9d1d9\",\n    \"input.placeholderForeground\": \"#484f58\",\n    \"badge.foreground\": \"#f0f6fc\",\n    \"badge.background\": \"#1f6feb\",\n    \"progressBar.background\": \"#1f6feb\",\n    \"titleBar.activeForeground\": \"#8b949e\",\n    \"titleBar.activeBackground\": \"#0d1117\",\n    \"titleBar.inactiveForeground\": \"#8b949e\",\n    \"titleBar.inactiveBackground\": \"#010409\",\n    \"titleBar.border\": \"#30363d\",\n    \"activityBar.foreground\": \"#c9d1d9\",\n    \"activityBar.inactiveForeground\": \"#8b949e\",\n    \"activityBar.background\": \"#0d1117\",\n    \"activityBarBadge.foreground\": \"#f0f6fc\",\n    \"activityBarBadge.background\": \"#1f6feb\",\n    \"activityBar.activeBorder\": \"#f78166\",\n    \"activityBar.border\": \"#30363d\",\n    \"sideBar.foreground\": \"#c9d1d9\",\n    \"sideBar.background\": \"#010409\",\n    \"sideBar.border\": \"#30363d\",\n    \"sideBarTitle.foreground\": \"#c9d1d9\",\n    \"sideBarSectionHeader.foreground\": \"#c9d1d9\",\n    \"sideBarSectionHeader.background\": \"#010409\",\n    \"sideBarSectionHeader.border\": \"#30363d\",\n    \"list.hoverForeground\": \"#c9d1d9\",\n    \"list.inactiveSelectionForeground\": \"#c9d1d9\",\n    \"list.activeSelectionForeground\": \"#c9d1d9\",\n    \"list.hoverBackground\": \"#6e76811a\",\n    \"list.inactiveSelectionBackground\": \"#6e768166\",\n    \"list.activeSelectionBackground\": \"#6e768166\",\n    \"list.focusForeground\": \"#c9d1d9\",\n    \"list.focusBackground\": \"#388bfd26\",\n    \"list.inactiveFocusBackground\": \"#388bfd26\",\n    \"list.highlightForeground\": \"#58a6ff\",\n    \"tree.indentGuidesStroke\": \"#21262d\",\n    \"notificationCenterHeader.foreground\": \"#8b949e\",\n    \"notificationCenterHeader.background\": \"#161b22\",\n    \"notifications.foreground\": \"#c9d1d9\",\n    \"notifications.background\": \"#161b22\",\n    \"notifications.border\": \"#30363d\",\n    \"notificationsErrorIcon.foreground\": \"#f85149\",\n    \"notificationsWarningIcon.foreground\": \"#d29922\",\n    \"notificationsInfoIcon.foreground\": \"#58a6ff\",\n    \"pickerGroup.border\": \"#30363d\",\n    \"pickerGroup.foreground\": \"#8b949e\",\n    \"quickInput.background\": \"#161b22\",\n    \"quickInput.foreground\": \"#c9d1d9\",\n    \"statusBar.foreground\": \"#8b949e\",\n    \"statusBar.background\": \"#0d1117\",\n    \"statusBar.border\": \"#30363d\",\n    \"statusBar.focusBorder\": \"#1f6feb80\",\n    \"statusBar.noFolderBackground\": \"#0d1117\",\n    \"statusBar.debuggingForeground\": \"#f0f6fc\",\n    \"statusBar.debuggingBackground\": \"#da3633\",\n    \"statusBarItem.prominentBackground\": \"#6e768166\",\n    \"statusBarItem.remoteForeground\": \"#c9d1d9\",\n    \"statusBarItem.remoteBackground\": \"#30363d\",\n    \"statusBarItem.hoverBackground\": \"#c9d1d914\",\n    \"statusBarItem.activeBackground\": \"#c9d1d91f\",\n    \"statusBarItem.focusBorder\": \"#1f6feb\",\n    \"editorGroupHeader.tabsBackground\": \"#010409\",\n    \"editorGroupHeader.tabsBorder\": \"#30363d\",\n    \"editorGroup.border\": \"#30363d\",\n    \"tab.activeForeground\": \"#c9d1d9\",\n    \"tab.inactiveForeground\": \"#8b949e\",\n    \"tab.inactiveBackground\": \"#010409\",\n    \"tab.activeBackground\": \"#0d1117\",\n    \"tab.hoverBackground\": \"#0d1117\",\n    \"tab.unfocusedHoverBackground\": \"#6e76811a\",\n    \"tab.border\": \"#30363d\",\n    \"tab.unfocusedActiveBorderTop\": \"#30363d\",\n    \"tab.activeBorder\": \"#0d1117\",\n    \"tab.unfocusedActiveBorder\": \"#0d1117\",\n    \"tab.activeBorderTop\": \"#f78166\",\n    \"breadcrumb.foreground\": \"#8b949e\",\n    \"breadcrumb.focusForeground\": \"#c9d1d9\",\n    \"breadcrumb.activeSelectionForeground\": \"#8b949e\",\n    \"breadcrumbPicker.background\": \"#161b22\",\n    \"editor.foreground\": \"#c9d1d9\",\n    \"editor.background\": \"#0d1117\",\n    \"editorWidget.background\": \"#161b22\",\n    \"editor.foldBackground\": \"#6e76811a\",\n    \"editor.lineHighlightBackground\": \"#6e76811a\",\n    \"editorLineNumber.foreground\": \"#6e7681\",\n    \"editorLineNumber.activeForeground\": \"#c9d1d9\",\n    \"editorIndentGuide.background\": \"#c9d1d91f\",\n    \"editorIndentGuide.activeBackground\": \"#c9d1d93d\",\n    \"editorWhitespace.foreground\": \"#484f58\",\n    \"editorCursor.foreground\": \"#58a6ff\",\n    \"editor.findMatchBackground\": \"#9e6a03\",\n    \"editor.findMatchHighlightBackground\": \"#f2cc6080\",\n    \"editor.linkedEditingBackground\": \"#58a6ff12\",\n    \"editor.selectionHighlightBackground\": \"#3fb95040\",\n    \"editor.wordHighlightBackground\": \"#6e768180\",\n    \"editor.wordHighlightBorder\": \"#6e768199\",\n    \"editor.wordHighlightStrongBackground\": \"#6e76814d\",\n    \"editor.wordHighlightStrongBorder\": \"#6e768199\",\n    \"editorBracketMatch.background\": \"#3fb95040\",\n    \"editorBracketMatch.border\": \"#3fb95099\",\n    \"editorInlayHint.background\": \"#8b949e33\",\n    \"editorInlayHint.foreground\": \"#8b949e\",\n    \"editorInlayHint.typeBackground\": \"#8b949e33\",\n    \"editorInlayHint.typeForeground\": \"#8b949e\",\n    \"editorInlayHint.paramBackground\": \"#8b949e33\",\n    \"editorInlayHint.paramForeground\": \"#8b949e\",\n    \"editorGutter.modifiedBackground\": \"#bb800966\",\n    \"editorGutter.addedBackground\": \"#2ea04366\",\n    \"editorGutter.deletedBackground\": \"#f8514966\",\n    \"diffEditor.insertedLineBackground\": \"#23863633\",\n    \"diffEditor.insertedTextBackground\": \"#2386364d\",\n    \"diffEditor.removedLineBackground\": \"#da363333\",\n    \"diffEditor.removedTextBackground\": \"#da36334d\",\n    \"scrollbar.shadow\": \"#484f5833\",\n    \"scrollbarSlider.background\": \"#6e768133\",\n    \"scrollbarSlider.hoverBackground\": \"#6e768145\",\n    \"scrollbarSlider.activeBackground\": \"#6e768187\",\n    \"editorOverviewRuler.border\": \"#010409\",\n    \"panel.background\": \"#010409\",\n    \"panel.border\": \"#30363d\",\n    \"panelTitle.activeBorder\": \"#f78166\",\n    \"panelTitle.activeForeground\": \"#c9d1d9\",\n    \"panelTitle.inactiveForeground\": \"#8b949e\",\n    \"panelInput.border\": \"#30363d\",\n    \"debugIcon.breakpointForeground\": \"#f85149\",\n    \"debugConsole.infoForeground\": \"#8b949e\",\n    \"debugConsole.warningForeground\": \"#d29922\",\n    \"debugConsole.errorForeground\": \"#ffa198\",\n    \"debugConsole.sourceForeground\": \"#e3b341\",\n    \"debugConsoleInputIcon.foreground\": \"#bc8cff\",\n    \"debugTokenExpression.name\": \"#79c0ff\",\n    \"debugTokenExpression.value\": \"#a5d6ff\",\n    \"debugTokenExpression.string\": \"#a5d6ff\",\n    \"debugTokenExpression.boolean\": \"#56d364\",\n    \"debugTokenExpression.number\": \"#56d364\",\n    \"debugTokenExpression.error\": \"#ffa198\",\n    \"symbolIcon.arrayForeground\": \"#f0883e\",\n    \"symbolIcon.booleanForeground\": \"#58a6ff\",\n    \"symbolIcon.classForeground\": \"#f0883e\",\n    \"symbolIcon.colorForeground\": \"#79c0ff\",\n    \"symbolIcon.constructorForeground\": \"#d2a8ff\",\n    \"symbolIcon.enumeratorForeground\": \"#f0883e\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#58a6ff\",\n    \"symbolIcon.eventForeground\": \"#6e7681\",\n    \"symbolIcon.fieldForeground\": \"#f0883e\",\n    \"symbolIcon.fileForeground\": \"#d29922\",\n    \"symbolIcon.folderForeground\": \"#d29922\",\n    \"symbolIcon.functionForeground\": \"#bc8cff\",\n    \"symbolIcon.interfaceForeground\": \"#f0883e\",\n    \"symbolIcon.keyForeground\": \"#58a6ff\",\n    \"symbolIcon.keywordForeground\": \"#ff7b72\",\n    \"symbolIcon.methodForeground\": \"#bc8cff\",\n    \"symbolIcon.moduleForeground\": \"#ff7b72\",\n    \"symbolIcon.namespaceForeground\": \"#ff7b72\",\n    \"symbolIcon.nullForeground\": \"#58a6ff\",\n    \"symbolIcon.numberForeground\": \"#3fb950\",\n    \"symbolIcon.objectForeground\": \"#f0883e\",\n    \"symbolIcon.operatorForeground\": \"#79c0ff\",\n    \"symbolIcon.packageForeground\": \"#f0883e\",\n    \"symbolIcon.propertyForeground\": \"#f0883e\",\n    \"symbolIcon.referenceForeground\": \"#58a6ff\",\n    \"symbolIcon.snippetForeground\": \"#58a6ff\",\n    \"symbolIcon.stringForeground\": \"#79c0ff\",\n    \"symbolIcon.structForeground\": \"#f0883e\",\n    \"symbolIcon.textForeground\": \"#79c0ff\",\n    \"symbolIcon.typeParameterForeground\": \"#79c0ff\",\n    \"symbolIcon.unitForeground\": \"#58a6ff\",\n    \"symbolIcon.variableForeground\": \"#f0883e\",\n    \"symbolIcon.constantForeground\": [\n      \"#aff5b4\",\n      \"#7ee787\",\n      \"#56d364\",\n      \"#3fb950\",\n      \"#2ea043\",\n      \"#238636\",\n      \"#196c2e\",\n      \"#0f5323\",\n      \"#033a16\",\n      \"#04260f\"\n    ],\n    \"terminal.foreground\": \"#c9d1d9\",\n    \"terminal.ansiBlack\": \"#484f58\",\n    \"terminal.ansiRed\": \"#ff7b72\",\n    \"terminal.ansiGreen\": \"#3fb950\",\n    \"terminal.ansiYellow\": \"#d29922\",\n    \"terminal.ansiBlue\": \"#58a6ff\",\n    \"terminal.ansiMagenta\": \"#bc8cff\",\n    \"terminal.ansiCyan\": \"#39c5cf\",\n    \"terminal.ansiWhite\": \"#b1bac4\",\n    \"terminal.ansiBrightBlack\": \"#6e7681\",\n    \"terminal.ansiBrightRed\": \"#ffa198\",\n    \"terminal.ansiBrightGreen\": \"#56d364\",\n    \"terminal.ansiBrightYellow\": \"#e3b341\",\n    \"terminal.ansiBrightBlue\": \"#79c0ff\",\n    \"terminal.ansiBrightMagenta\": \"#d2a8ff\",\n    \"terminal.ansiBrightCyan\": \"#56d4dd\",\n    \"terminal.ansiBrightWhite\": \"#f0f6fc\",\n    \"editorBracketHighlight.foreground1\": \"#79c0ff\",\n    \"editorBracketHighlight.foreground2\": \"#56d364\",\n    \"editorBracketHighlight.foreground3\": \"#e3b341\",\n    \"editorBracketHighlight.foreground4\": \"#ffa198\",\n    \"editorBracketHighlight.foreground5\": \"#ff9bce\",\n    \"editorBracketHighlight.foreground6\": \"#d2a8ff\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#8b949e\",\n    \"gitDecoration.addedResourceForeground\": \"#3fb950\",\n    \"gitDecoration.modifiedResourceForeground\": \"#d29922\",\n    \"gitDecoration.deletedResourceForeground\": \"#f85149\",\n    \"gitDecoration.untrackedResourceForeground\": \"#3fb950\",\n    \"gitDecoration.ignoredResourceForeground\": \"#484f58\",\n    \"gitDecoration.conflictingResourceForeground\": \"#db6d28\",\n    \"gitDecoration.submoduleResourceForeground\": \"#8b949e\",\n    \"debugToolBar.background\": \"#161b22\",\n    \"editor.stackFrameHighlightBackground\": \"#bb800966\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#2ea04366\",\n    \"peekViewEditor.matchHighlightBackground\": \"#bb800966\",\n    \"peekViewResult.matchHighlightBackground\": \"#bb800966\",\n    \"peekViewEditor.background\": \"#6e76811a\",\n    \"peekViewResult.background\": \"#0d1117\",\n    \"settings.headerForeground\": \"#8b949e\",\n    \"settings.modifiedItemIndicator\": \"#bb800966\",\n    \"welcomePage.buttonBackground\": \"#21262d\",\n    \"welcomePage.buttonHoverBackground\": \"#30363d\"\n  },\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\", \"string.comment\"],\n      \"settings\": {\n        \"foreground\": \"#8b949e\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant\",\n        \"entity.name.constant\",\n        \"variable.other.constant\",\n        \"variable.other.enummember\",\n        \"variable.language\",\n        \"entity\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name\",\n        \"meta.export.default\",\n        \"meta.definition.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ffa657\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.parameter.function\",\n        \"meta.jsx.children\",\n        \"meta.block\",\n        \"meta.tag.attributes\",\n        \"entity.name.constant\",\n        \"meta.object.member\",\n        \"meta.embedded.expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c9d1d9\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#d2a8ff\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.tag\", \"support.class.component\"],\n      \"settings\": {\n        \"foreground\": \"#7ee787\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#ff7b72\"\n      }\n    },\n    {\n      \"scope\": [\"storage\", \"storage.type\"],\n      \"settings\": {\n        \"foreground\": \"#ff7b72\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.package\",\n        \"storage.modifier.import\",\n        \"storage.type.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c9d1d9\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"string punctuation.section.embedded source\"],\n      \"settings\": {\n        \"foreground\": \"#a5d6ff\"\n      }\n    },\n    {\n      \"scope\": \"support\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"foreground\": \"#ffa657\"\n      }\n    },\n    {\n      \"scope\": \"variable.other\",\n      \"settings\": {\n        \"foreground\": \"#c9d1d9\"\n      }\n    },\n    {\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": \"carriage-return\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"background\": \"#ff7b72\",\n        \"foreground\": \"#f0f6fc\",\n        \"content\": \"^M\"\n      }\n    },\n    {\n      \"scope\": \"message.error\",\n      \"settings\": {\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": \"string variable\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": [\"source.regexp\", \"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#a5d6ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.regexp.character-class\",\n        \"string.regexp constant.character.escape\",\n        \"string.regexp source.ruby.embedded\",\n        \"string.regexp string.regexp.arbitrary-repitition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#a5d6ff\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp constant.character.escape\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#7ee787\"\n      }\n    },\n    {\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"support.variable\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#7ee787\"\n      }\n    },\n    {\n      \"scope\": \"meta.module-reference\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#ffa657\"\n      }\n    },\n    {\n      \"scope\": [\"markup.heading\", \"markup.heading entity.name\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#7ee787\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#c9d1d9\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#c9d1d9\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"markup.strikethrough\"],\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.deleted\",\n        \"meta.diff.header.from-file\",\n        \"punctuation.definition.deleted\"\n      ],\n      \"settings\": {\n        \"background\": \"#490202\",\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.section.embedded\"],\n      \"settings\": {\n        \"foreground\": \"#ff7b72\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inserted\",\n        \"meta.diff.header.to-file\",\n        \"punctuation.definition.inserted\"\n      ],\n      \"settings\": {\n        \"background\": \"#04260f\",\n        \"foreground\": \"#7ee787\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\", \"punctuation.definition.changed\"],\n      \"settings\": {\n        \"background\": \"#5a1e02\",\n        \"foreground\": \"#ffa657\"\n      }\n    },\n    {\n      \"scope\": [\"markup.ignored\", \"markup.untracked\"],\n      \"settings\": {\n        \"foreground\": \"#161b22\",\n        \"background\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.range\",\n      \"settings\": {\n        \"foreground\": \"#d2a8ff\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.output\",\n      \"settings\": {\n        \"foreground\": \"#79c0ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"brackethighlighter.tag\",\n        \"brackethighlighter.curly\",\n        \"brackethighlighter.round\",\n        \"brackethighlighter.square\",\n        \"brackethighlighter.angle\",\n        \"brackethighlighter.quote\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8b949e\"\n      }\n    },\n    {\n      \"scope\": \"brackethighlighter.unmatched\",\n      \"settings\": {\n        \"foreground\": \"#ffa198\"\n      }\n    },\n    {\n      \"scope\": [\"constant.other.reference.link\", \"string.other.link\"],\n      \"settings\": {\n        \"foreground\": \"#a5d6ff\",\n        \"fontStyle\": \"underline\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/github-light.json",
    "content": "{\n  \"name\": \"github-light\",\n  \"colors\": {\n    \"focusBorder\": \"#0969da\",\n    \"foreground\": \"#24292f\",\n    \"descriptionForeground\": \"#57606a\",\n    \"errorForeground\": \"#cf222e\",\n    \"textLink.foreground\": \"#0969da\",\n    \"textLink.activeForeground\": \"#0969da\",\n    \"textBlockQuote.background\": \"#f6f8fa\",\n    \"textBlockQuote.border\": \"#d0d7de\",\n    \"textCodeBlock.background\": \"#afb8c133\",\n    \"textPreformat.foreground\": \"#57606a\",\n    \"textSeparator.foreground\": \"#d8dee4\",\n    \"icon.foreground\": \"#57606a\",\n    \"keybindingLabel.foreground\": \"#24292f\",\n    \"button.background\": \"#2da44e\",\n    \"button.foreground\": \"#ffffff\",\n    \"button.hoverBackground\": \"#2c974b\",\n    \"button.secondaryBackground\": \"#ebecf0\",\n    \"button.secondaryForeground\": \"#24292f\",\n    \"button.secondaryHoverBackground\": \"#f3f4f6\",\n    \"checkbox.background\": \"#f6f8fa\",\n    \"checkbox.border\": \"#d0d7de\",\n    \"dropdown.background\": \"#ffffff\",\n    \"dropdown.border\": \"#d0d7de\",\n    \"dropdown.foreground\": \"#24292f\",\n    \"dropdown.listBackground\": \"#ffffff\",\n    \"input.background\": \"#ffffff\",\n    \"input.border\": \"#d0d7de\",\n    \"input.foreground\": \"#24292f\",\n    \"input.placeholderForeground\": \"#6e7781\",\n    \"badge.foreground\": \"#ffffff\",\n    \"badge.background\": \"#0969da\",\n    \"progressBar.background\": \"#0969da\",\n    \"titleBar.activeForeground\": \"#57606a\",\n    \"titleBar.activeBackground\": \"#ffffff\",\n    \"titleBar.inactiveForeground\": \"#57606a\",\n    \"titleBar.inactiveBackground\": \"#f6f8fa\",\n    \"titleBar.border\": \"#d0d7de\",\n    \"activityBar.foreground\": \"#24292f\",\n    \"activityBar.inactiveForeground\": \"#57606a\",\n    \"activityBar.background\": \"#ffffff\",\n    \"activityBarBadge.foreground\": \"#ffffff\",\n    \"activityBarBadge.background\": \"#0969da\",\n    \"activityBar.activeBorder\": \"#fd8c73\",\n    \"activityBar.border\": \"#d0d7de\",\n    \"sideBar.foreground\": \"#24292f\",\n    \"sideBar.background\": \"#f6f8fa\",\n    \"sideBar.border\": \"#d0d7de\",\n    \"sideBarTitle.foreground\": \"#24292f\",\n    \"sideBarSectionHeader.foreground\": \"#24292f\",\n    \"sideBarSectionHeader.background\": \"#f6f8fa\",\n    \"sideBarSectionHeader.border\": \"#d0d7de\",\n    \"list.hoverForeground\": \"#24292f\",\n    \"list.inactiveSelectionForeground\": \"#24292f\",\n    \"list.activeSelectionForeground\": \"#24292f\",\n    \"list.hoverBackground\": \"#eaeef280\",\n    \"list.inactiveSelectionBackground\": \"#afb8c133\",\n    \"list.activeSelectionBackground\": \"#afb8c133\",\n    \"list.focusForeground\": \"#24292f\",\n    \"list.focusBackground\": \"#ddf4ff\",\n    \"list.inactiveFocusBackground\": \"#ddf4ff\",\n    \"list.highlightForeground\": \"#0969da\",\n    \"tree.indentGuidesStroke\": \"#d8dee4\",\n    \"notificationCenterHeader.foreground\": \"#57606a\",\n    \"notificationCenterHeader.background\": \"#f6f8fa\",\n    \"notifications.foreground\": \"#24292f\",\n    \"notifications.background\": \"#ffffff\",\n    \"notifications.border\": \"#d0d7de\",\n    \"notificationsErrorIcon.foreground\": \"#cf222e\",\n    \"notificationsWarningIcon.foreground\": \"#9a6700\",\n    \"notificationsInfoIcon.foreground\": \"#0969da\",\n    \"pickerGroup.border\": \"#d0d7de\",\n    \"pickerGroup.foreground\": \"#57606a\",\n    \"quickInput.background\": \"#ffffff\",\n    \"quickInput.foreground\": \"#24292f\",\n    \"statusBar.foreground\": \"#57606a\",\n    \"statusBar.background\": \"#ffffff\",\n    \"statusBar.border\": \"#d0d7de\",\n    \"statusBar.focusBorder\": \"#0969da80\",\n    \"statusBar.noFolderBackground\": \"#ffffff\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.debuggingBackground\": \"#cf222e\",\n    \"statusBarItem.prominentBackground\": \"#afb8c133\",\n    \"statusBarItem.remoteForeground\": \"#24292f\",\n    \"statusBarItem.remoteBackground\": \"#eaeef2\",\n    \"statusBarItem.hoverBackground\": \"#24292f14\",\n    \"statusBarItem.activeBackground\": \"#24292f1f\",\n    \"statusBarItem.focusBorder\": \"#0969da\",\n    \"editorGroupHeader.tabsBackground\": \"#f6f8fa\",\n    \"editorGroupHeader.tabsBorder\": \"#d0d7de\",\n    \"editorGroup.border\": \"#d0d7de\",\n    \"tab.activeForeground\": \"#24292f\",\n    \"tab.inactiveForeground\": \"#57606a\",\n    \"tab.inactiveBackground\": \"#f6f8fa\",\n    \"tab.activeBackground\": \"#ffffff\",\n    \"tab.hoverBackground\": \"#ffffff\",\n    \"tab.unfocusedHoverBackground\": \"#eaeef280\",\n    \"tab.border\": \"#d0d7de\",\n    \"tab.unfocusedActiveBorderTop\": \"#d0d7de\",\n    \"tab.activeBorder\": \"#ffffff\",\n    \"tab.unfocusedActiveBorder\": \"#ffffff\",\n    \"tab.activeBorderTop\": \"#fd8c73\",\n    \"breadcrumb.foreground\": \"#57606a\",\n    \"breadcrumb.focusForeground\": \"#24292f\",\n    \"breadcrumb.activeSelectionForeground\": \"#57606a\",\n    \"breadcrumbPicker.background\": \"#ffffff\",\n    \"editor.foreground\": \"#24292f\",\n    \"editor.background\": \"#ffffff\",\n    \"editorWidget.background\": \"#ffffff\",\n    \"editor.foldBackground\": \"#6e77811a\",\n    \"editor.lineHighlightBackground\": \"#eaeef280\",\n    \"editorLineNumber.foreground\": \"#8c959f\",\n    \"editorLineNumber.activeForeground\": \"#24292f\",\n    \"editorIndentGuide.background\": \"#24292f1f\",\n    \"editorIndentGuide.activeBackground\": \"#24292f3d\",\n    \"editorWhitespace.foreground\": \"#afb8c1\",\n    \"editorCursor.foreground\": \"#0969da\",\n    \"editor.findMatchBackground\": \"#bf8700\",\n    \"editor.findMatchHighlightBackground\": \"#fae17d80\",\n    \"editor.linkedEditingBackground\": \"#0969da12\",\n    \"editor.selectionHighlightBackground\": \"#4ac26b40\",\n    \"editor.wordHighlightBackground\": \"#eaeef280\",\n    \"editor.wordHighlightBorder\": \"#afb8c199\",\n    \"editor.wordHighlightStrongBackground\": \"#afb8c14d\",\n    \"editor.wordHighlightStrongBorder\": \"#afb8c199\",\n    \"editorBracketMatch.background\": \"#4ac26b40\",\n    \"editorBracketMatch.border\": \"#4ac26b99\",\n    \"editorInlayHint.background\": \"#afb8c133\",\n    \"editorInlayHint.foreground\": \"#57606a\",\n    \"editorInlayHint.typeBackground\": \"#afb8c133\",\n    \"editorInlayHint.typeForeground\": \"#57606a\",\n    \"editorInlayHint.paramBackground\": \"#afb8c133\",\n    \"editorInlayHint.paramForeground\": \"#57606a\",\n    \"editorGutter.modifiedBackground\": \"#d4a72c66\",\n    \"editorGutter.addedBackground\": \"#4ac26b66\",\n    \"editorGutter.deletedBackground\": \"#ff818266\",\n    \"diffEditor.insertedLineBackground\": \"#aceebb4d\",\n    \"diffEditor.insertedTextBackground\": \"#6fdd8b66\",\n    \"diffEditor.removedLineBackground\": \"#ffcecb4d\",\n    \"diffEditor.removedTextBackground\": \"#ffaba866\",\n    \"scrollbar.shadow\": \"#6e778133\",\n    \"scrollbarSlider.background\": \"#8c959f33\",\n    \"scrollbarSlider.hoverBackground\": \"#8c959f45\",\n    \"scrollbarSlider.activeBackground\": \"#8c959f87\",\n    \"editorOverviewRuler.border\": \"#ffffff\",\n    \"panel.background\": \"#f6f8fa\",\n    \"panel.border\": \"#d0d7de\",\n    \"panelTitle.activeBorder\": \"#fd8c73\",\n    \"panelTitle.activeForeground\": \"#24292f\",\n    \"panelTitle.inactiveForeground\": \"#57606a\",\n    \"panelInput.border\": \"#d0d7de\",\n    \"debugIcon.breakpointForeground\": \"#cf222e\",\n    \"debugConsole.infoForeground\": \"#57606a\",\n    \"debugConsole.warningForeground\": \"#7d4e00\",\n    \"debugConsole.errorForeground\": \"#cf222e\",\n    \"debugConsole.sourceForeground\": \"#9a6700\",\n    \"debugConsoleInputIcon.foreground\": \"#6639ba\",\n    \"debugTokenExpression.name\": \"#0550ae\",\n    \"debugTokenExpression.value\": \"#0a3069\",\n    \"debugTokenExpression.string\": \"#0a3069\",\n    \"debugTokenExpression.boolean\": \"#116329\",\n    \"debugTokenExpression.number\": \"#116329\",\n    \"debugTokenExpression.error\": \"#a40e26\",\n    \"symbolIcon.arrayForeground\": \"#953800\",\n    \"symbolIcon.booleanForeground\": \"#0550ae\",\n    \"symbolIcon.classForeground\": \"#953800\",\n    \"symbolIcon.colorForeground\": \"#0a3069\",\n    \"symbolIcon.constructorForeground\": \"#3e1f79\",\n    \"symbolIcon.enumeratorForeground\": \"#953800\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#0550ae\",\n    \"symbolIcon.eventForeground\": \"#57606a\",\n    \"symbolIcon.fieldForeground\": \"#953800\",\n    \"symbolIcon.fileForeground\": \"#7d4e00\",\n    \"symbolIcon.folderForeground\": \"#7d4e00\",\n    \"symbolIcon.functionForeground\": \"#6639ba\",\n    \"symbolIcon.interfaceForeground\": \"#953800\",\n    \"symbolIcon.keyForeground\": \"#0550ae\",\n    \"symbolIcon.keywordForeground\": \"#a40e26\",\n    \"symbolIcon.methodForeground\": \"#6639ba\",\n    \"symbolIcon.moduleForeground\": \"#a40e26\",\n    \"symbolIcon.namespaceForeground\": \"#a40e26\",\n    \"symbolIcon.nullForeground\": \"#0550ae\",\n    \"symbolIcon.numberForeground\": \"#116329\",\n    \"symbolIcon.objectForeground\": \"#953800\",\n    \"symbolIcon.operatorForeground\": \"#0a3069\",\n    \"symbolIcon.packageForeground\": \"#953800\",\n    \"symbolIcon.propertyForeground\": \"#953800\",\n    \"symbolIcon.referenceForeground\": \"#0550ae\",\n    \"symbolIcon.snippetForeground\": \"#0550ae\",\n    \"symbolIcon.stringForeground\": \"#0a3069\",\n    \"symbolIcon.structForeground\": \"#953800\",\n    \"symbolIcon.textForeground\": \"#0a3069\",\n    \"symbolIcon.typeParameterForeground\": \"#0a3069\",\n    \"symbolIcon.unitForeground\": \"#0550ae\",\n    \"symbolIcon.variableForeground\": \"#953800\",\n    \"symbolIcon.constantForeground\": \"#116329\",\n    \"terminal.foreground\": \"#24292f\",\n    \"terminal.ansiBlack\": \"#24292f\",\n    \"terminal.ansiRed\": \"#cf222e\",\n    \"terminal.ansiGreen\": \"#116329\",\n    \"terminal.ansiYellow\": \"#4d2d00\",\n    \"terminal.ansiBlue\": \"#0969da\",\n    \"terminal.ansiMagenta\": \"#8250df\",\n    \"terminal.ansiCyan\": \"#1b7c83\",\n    \"terminal.ansiWhite\": \"#6e7781\",\n    \"terminal.ansiBrightBlack\": \"#57606a\",\n    \"terminal.ansiBrightRed\": \"#a40e26\",\n    \"terminal.ansiBrightGreen\": \"#1a7f37\",\n    \"terminal.ansiBrightYellow\": \"#633c01\",\n    \"terminal.ansiBrightBlue\": \"#218bff\",\n    \"terminal.ansiBrightMagenta\": \"#a475f9\",\n    \"terminal.ansiBrightCyan\": \"#3192aa\",\n    \"terminal.ansiBrightWhite\": \"#8c959f\",\n    \"editorBracketHighlight.foreground1\": \"#0969da\",\n    \"editorBracketHighlight.foreground2\": \"#1a7f37\",\n    \"editorBracketHighlight.foreground3\": \"#9a6700\",\n    \"editorBracketHighlight.foreground4\": \"#cf222e\",\n    \"editorBracketHighlight.foreground5\": \"#bf3989\",\n    \"editorBracketHighlight.foreground6\": \"#8250df\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#57606a\",\n    \"gitDecoration.addedResourceForeground\": \"#1a7f37\",\n    \"gitDecoration.modifiedResourceForeground\": \"#9a6700\",\n    \"gitDecoration.deletedResourceForeground\": \"#cf222e\",\n    \"gitDecoration.untrackedResourceForeground\": \"#1a7f37\",\n    \"gitDecoration.ignoredResourceForeground\": \"#6e7781\",\n    \"gitDecoration.conflictingResourceForeground\": \"#bc4c00\",\n    \"gitDecoration.submoduleResourceForeground\": \"#57606a\",\n    \"debugToolBar.background\": \"#ffffff\",\n    \"editor.stackFrameHighlightBackground\": \"#d4a72c66\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#4ac26b66\",\n    \"settings.headerForeground\": \"#57606a\",\n    \"settings.modifiedItemIndicator\": \"#d4a72c66\",\n    \"welcomePage.buttonBackground\": \"#f6f8fa\",\n    \"welcomePage.buttonHoverBackground\": \"#f3f4f6\"\n  },\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\", \"string.comment\"],\n      \"settings\": {\n        \"foreground\": \"#6e7781\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant\",\n        \"entity.name.constant\",\n        \"variable.other.constant\",\n        \"variable.other.enummember\",\n        \"variable.language\",\n        \"entity\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name\",\n        \"meta.export.default\",\n        \"meta.definition.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#953800\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.parameter.function\",\n        \"meta.jsx.children\",\n        \"meta.block\",\n        \"meta.tag.attributes\",\n        \"entity.name.constant\",\n        \"meta.object.member\",\n        \"meta.embedded.expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#24292f\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#8250df\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.tag\", \"support.class.component\"],\n      \"settings\": {\n        \"foreground\": \"#116329\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#cf222e\"\n      }\n    },\n    {\n      \"scope\": [\"storage\", \"storage.type\"],\n      \"settings\": {\n        \"foreground\": \"#cf222e\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.package\",\n        \"storage.modifier.import\",\n        \"storage.type.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#24292f\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"string punctuation.section.embedded source\"],\n      \"settings\": {\n        \"foreground\": \"#0a3069\"\n      }\n    },\n    {\n      \"scope\": \"support\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"foreground\": \"#953800\"\n      }\n    },\n    {\n      \"scope\": \"variable.other\",\n      \"settings\": {\n        \"foreground\": \"#24292f\"\n      }\n    },\n    {\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": \"carriage-return\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"background\": \"#cf222e\",\n        \"foreground\": \"#f6f8fa\",\n        \"content\": \"^M\"\n      }\n    },\n    {\n      \"scope\": \"message.error\",\n      \"settings\": {\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": \"string variable\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": [\"source.regexp\", \"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#0a3069\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.regexp.character-class\",\n        \"string.regexp constant.character.escape\",\n        \"string.regexp source.ruby.embedded\",\n        \"string.regexp string.regexp.arbitrary-repitition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0a3069\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp constant.character.escape\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#116329\"\n      }\n    },\n    {\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"support.variable\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#116329\"\n      }\n    },\n    {\n      \"scope\": \"meta.module-reference\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#953800\"\n      }\n    },\n    {\n      \"scope\": [\"markup.heading\", \"markup.heading entity.name\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#116329\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#24292f\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#24292f\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"markup.strikethrough\"],\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.deleted\",\n        \"meta.diff.header.from-file\",\n        \"punctuation.definition.deleted\"\n      ],\n      \"settings\": {\n        \"background\": \"#ffebe9\",\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.section.embedded\"],\n      \"settings\": {\n        \"foreground\": \"#cf222e\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inserted\",\n        \"meta.diff.header.to-file\",\n        \"punctuation.definition.inserted\"\n      ],\n      \"settings\": {\n        \"background\": \"#dafbe1\",\n        \"foreground\": \"#116329\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\", \"punctuation.definition.changed\"],\n      \"settings\": {\n        \"background\": \"#ffd8b5\",\n        \"foreground\": \"#953800\"\n      }\n    },\n    {\n      \"scope\": [\"markup.ignored\", \"markup.untracked\"],\n      \"settings\": {\n        \"foreground\": \"#eaeef2\",\n        \"background\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.range\",\n      \"settings\": {\n        \"foreground\": \"#8250df\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": \"meta.output\",\n      \"settings\": {\n        \"foreground\": \"#0550ae\"\n      }\n    },\n    {\n      \"scope\": [\n        \"brackethighlighter.tag\",\n        \"brackethighlighter.curly\",\n        \"brackethighlighter.round\",\n        \"brackethighlighter.square\",\n        \"brackethighlighter.angle\",\n        \"brackethighlighter.quote\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#57606a\"\n      }\n    },\n    {\n      \"scope\": \"brackethighlighter.unmatched\",\n      \"settings\": {\n        \"foreground\": \"#82071e\"\n      }\n    },\n    {\n      \"scope\": [\"constant.other.reference.link\", \"string.other.link\"],\n      \"settings\": {\n        \"foreground\": \"#0a3069\",\n        \"fontStyle\": \"underline\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/hc_light.json",
    "content": "{\n  \"$schema\": \"vscode://schemas/color-theme\",\n  \"name\": \"hc_light\",\n  \"tokenColors\": [\n    {\n      \"scope\": [\"meta.embedded\", \"source.groovy.embedded\"],\n      \"settings\": {\n        \"foreground\": \"#292929\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"strong\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#062F4A\"\n      }\n    },\n    {\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#515151\"\n      }\n    },\n    {\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"variable.other.enummember\",\n        \"keyword.operator.plus.exponent\",\n        \"keyword.operator.minus.exponent\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#096d48\"\n      }\n    },\n    {\n      \"scope\": \"constant.regexp\",\n      \"settings\": {\n        \"foreground\": \"#811F3F\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.selector\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#264F78\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name.class.css\",\n        \"entity.other.attribute-name.class.mixin.css\",\n        \"entity.other.attribute-name.id.css\",\n        \"entity.other.attribute-name.parent-selector.css\",\n        \"entity.other.attribute-name.pseudo-class.css\",\n        \"entity.other.attribute-name.pseudo-element.css\",\n        \"source.css.less entity.other.attribute-name.id\",\n        \"entity.other.attribute-name.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#B5200D\"\n      }\n    },\n    {\n      \"scope\": \"markup.underline\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#000080\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#096d48\"\n      }\n    },\n    {\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#5A5A5A\"\n      }\n    },\n    {\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.quote.begin.markdown\",\n        \"punctuation.definition.list.begin.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\"meta.preprocessor\", \"entity.name.function.preprocessor\"],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.string\",\n      \"settings\": {\n        \"foreground\": \"#b5200d\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.numeric\",\n      \"settings\": {\n        \"foreground\": \"#096d48\"\n      }\n    },\n    {\n      \"scope\": \"meta.structure.dictionary.key.python\",\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\"storage.modifier\", \"keyword.operator.noexcept\"],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"meta.embedded.assembly\"],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.comment.buffered.block.pug\",\n        \"string.quoted.pug\",\n        \"string.interpolated.pug\",\n        \"string.unquoted.plain.in.yaml\",\n        \"string.unquoted.plain.out.yaml\",\n        \"string.unquoted.block.yaml\",\n        \"string.quoted.single.yaml\",\n        \"string.quoted.double.xml\",\n        \"string.quoted.single.xml\",\n        \"string.unquoted.cdata.xml\",\n        \"string.quoted.double.html\",\n        \"string.quoted.single.html\",\n        \"string.unquoted.html\",\n        \"string.quoted.single.handlebars\",\n        \"string.quoted.double.handlebars\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#811F3F\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.type.vendored.property-name\",\n        \"support.type.property-name\",\n        \"variable.css\",\n        \"variable.scss\",\n        \"variable.other.less\",\n        \"source.coffee.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#264F78\"\n      }\n    },\n    {\n      \"scope\": [\"support.type.property-name.json\"],\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.new\",\n        \"keyword.operator.expression\",\n        \"keyword.operator.cast\",\n        \"keyword.operator.sizeof\",\n        \"keyword.operator.alignof\",\n        \"keyword.operator.typeid\",\n        \"keyword.operator.alignas\",\n        \"keyword.operator.instanceof\",\n        \"keyword.operator.logical.python\",\n        \"keyword.operator.wordlike\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"keyword.other.unit\",\n      \"settings\": {\n        \"foreground\": \"#096d48\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.section.embedded.begin.php\",\n        \"punctuation.section.embedded.end.php\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"support.function.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": \"constant.sha.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#096d48\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.import.java\",\n        \"variable.language.wildcard.java\",\n        \"storage.modifier.package.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.function\",\n        \"support.function\",\n        \"support.constant.handlebars\",\n        \"source.powershell variable.other.member\",\n        \"entity.name.operator.custom-literal\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5e2cbc\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.class\",\n        \"support.type\",\n        \"entity.name.type\",\n        \"entity.name.namespace\",\n        \"entity.other.attribute\",\n        \"entity.name.scope-resolution\",\n        \"entity.name.class\",\n        \"storage.type.numeric.go\",\n        \"storage.type.byte.go\",\n        \"storage.type.boolean.go\",\n        \"storage.type.string.go\",\n        \"storage.type.uintptr.go\",\n        \"storage.type.error.go\",\n        \"storage.type.rune.go\",\n        \"storage.type.cs\",\n        \"storage.type.generic.cs\",\n        \"storage.type.modifier.cs\",\n        \"storage.type.variable.cs\",\n        \"storage.type.annotation.java\",\n        \"storage.type.generic.java\",\n        \"storage.type.java\",\n        \"storage.type.object.array.java\",\n        \"storage.type.primitive.array.java\",\n        \"storage.type.primitive.java\",\n        \"storage.type.token.java\",\n        \"storage.type.groovy\",\n        \"storage.type.annotation.groovy\",\n        \"storage.type.parameters.groovy\",\n        \"storage.type.generic.groovy\",\n        \"storage.type.object.array.groovy\",\n        \"storage.type.primitive.array.groovy\",\n        \"storage.type.primitive.groovy\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#185E73\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.type.cast.expr\",\n        \"meta.type.new.expr\",\n        \"support.constant.math\",\n        \"support.constant.dom\",\n        \"support.constant.json\",\n        \"entity.other.inherited-class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#185E73\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.control\",\n        \"source.cpp keyword.operator.new\",\n        \"source.cpp keyword.operator.delete\",\n        \"keyword.other.using\",\n        \"keyword.other.operator\",\n        \"entity.name.operator\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b5200d\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable\",\n        \"meta.definition.variable.name\",\n        \"support.variable\",\n        \"entity.name.variable\",\n        \"constant.other.placeholder\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#001080\"\n      }\n    },\n    {\n      \"scope\": [\"variable.other.constant\", \"variable.other.enummember\"],\n      \"settings\": {\n        \"foreground\": \"#02715D\"\n      }\n    },\n    {\n      \"scope\": [\"meta.object-literal.key\"],\n      \"settings\": {\n        \"foreground\": \"#001080\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451A5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.group.regexp\",\n        \"punctuation.definition.group.assertion.regexp\",\n        \"punctuation.definition.character-class.regexp\",\n        \"punctuation.character.set.begin.regexp\",\n        \"punctuation.character.set.end.regexp\",\n        \"keyword.operator.negation.regexp\",\n        \"support.other.parenthesis.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D16969\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.character.character-class.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.other.character-class.regexp\",\n        \"constant.character.set.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#811F3F\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator.quantifier.regexp\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#EE0000\"\n      }\n    },\n    {\n      \"scope\": \"constant.character\",\n      \"settings\": {\n        \"foreground\": \"#0F4A85\"\n      }\n    },\n    {\n      \"scope\": \"constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#EE0000\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.label\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#316BCD\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#CD9731\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#CD3131\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#800080\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/light-plus.json",
    "content": "{\n  \"$schema\": \"vscode://schemas/color-theme\",\n  \"name\": \"light-plus\",\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.embedded\",\n        \"source.groovy.embedded\",\n        \"string meta.image.inline.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000000ff\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"strong\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#000080\"\n      }\n    },\n    {\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#008000\"\n      }\n    },\n    {\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"variable.other.enummember\",\n        \"keyword.operator.plus.exponent\",\n        \"keyword.operator.minus.exponent\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#098658\"\n      }\n    },\n    {\n      \"scope\": \"constant.regexp\",\n      \"settings\": {\n        \"foreground\": \"#811f3f\"\n      }\n    },\n    {\n      \"name\": \"css tags in selectors, xml tags\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.selector\",\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#ff0000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name.class.css\",\n        \"entity.other.attribute-name.class.mixin.css\",\n        \"entity.other.attribute-name.id.css\",\n        \"entity.other.attribute-name.parent-selector.css\",\n        \"entity.other.attribute-name.pseudo-class.css\",\n        \"entity.other.attribute-name.pseudo-element.css\",\n        \"source.css.less entity.other.attribute-name.id\",\n        \"entity.other.attribute-name.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#cd3131\"\n      }\n    },\n    {\n      \"scope\": \"markup.underline\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#000080\"\n      }\n    },\n    {\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#098658\"\n      }\n    },\n    {\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#a31515\"\n      }\n    },\n    {\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.quote.begin.markdown\",\n        \"punctuation.definition.list.begin.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"name\": \"brackets of XML/HTML tags\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": [\"meta.preprocessor\", \"entity.name.function.preprocessor\"],\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.string\",\n      \"settings\": {\n        \"foreground\": \"#a31515\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.numeric\",\n      \"settings\": {\n        \"foreground\": \"#098658\"\n      }\n    },\n    {\n      \"scope\": \"meta.structure.dictionary.key.python\",\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": [\"storage.modifier\", \"keyword.operator.noexcept\"],\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"meta.embedded.assembly\"],\n      \"settings\": {\n        \"foreground\": \"#a31515\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.comment.buffered.block.pug\",\n        \"string.quoted.pug\",\n        \"string.interpolated.pug\",\n        \"string.unquoted.plain.in.yaml\",\n        \"string.unquoted.plain.out.yaml\",\n        \"string.unquoted.block.yaml\",\n        \"string.quoted.single.yaml\",\n        \"string.quoted.double.xml\",\n        \"string.quoted.single.xml\",\n        \"string.unquoted.cdata.xml\",\n        \"string.quoted.double.html\",\n        \"string.quoted.single.html\",\n        \"string.unquoted.html\",\n        \"string.quoted.single.handlebars\",\n        \"string.quoted.double.handlebars\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#811f3f\"\n      }\n    },\n    {\n      \"name\": \"String interpolation\",\n      \"scope\": [\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"name\": \"Reset JavaScript string interpolation expression\",\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.type.vendored.property-name\",\n        \"support.type.property-name\",\n        \"variable.css\",\n        \"variable.scss\",\n        \"variable.other.less\",\n        \"source.coffee.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ff0000\"\n      }\n    },\n    {\n      \"scope\": [\"support.type.property-name.json\"],\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.new\",\n        \"keyword.operator.expression\",\n        \"keyword.operator.cast\",\n        \"keyword.operator.sizeof\",\n        \"keyword.operator.alignof\",\n        \"keyword.operator.typeid\",\n        \"keyword.operator.alignas\",\n        \"keyword.operator.instanceof\",\n        \"keyword.operator.logical.python\",\n        \"keyword.operator.wordlike\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"keyword.other.unit\",\n      \"settings\": {\n        \"foreground\": \"#098658\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.section.embedded.begin.php\",\n        \"punctuation.section.embedded.end.php\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#800000\"\n      }\n    },\n    {\n      \"scope\": \"support.function.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"scope\": \"constant.sha.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#098658\"\n      }\n    },\n    {\n      \"name\": \"coloring of the Java import and package identifiers\",\n      \"scope\": [\n        \"storage.modifier.import.java\",\n        \"variable.language.wildcard.java\",\n        \"storage.modifier.package.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"name\": \"this.self\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"name\": \"Function declarations\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"support.function\",\n        \"support.constant.handlebars\",\n        \"source.powershell variable.other.member\",\n        \"entity.name.operator.custom-literal\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#795E26\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references\",\n      \"scope\": [\n        \"support.class\",\n        \"support.type\",\n        \"entity.name.type\",\n        \"entity.name.namespace\",\n        \"entity.other.attribute\",\n        \"entity.name.scope-resolution\",\n        \"entity.name.class\",\n        \"storage.type.numeric.go\",\n        \"storage.type.byte.go\",\n        \"storage.type.boolean.go\",\n        \"storage.type.string.go\",\n        \"storage.type.uintptr.go\",\n        \"storage.type.error.go\",\n        \"storage.type.rune.go\",\n        \"storage.type.cs\",\n        \"storage.type.generic.cs\",\n        \"storage.type.modifier.cs\",\n        \"storage.type.variable.cs\",\n        \"storage.type.annotation.java\",\n        \"storage.type.generic.java\",\n        \"storage.type.java\",\n        \"storage.type.object.array.java\",\n        \"storage.type.primitive.array.java\",\n        \"storage.type.primitive.java\",\n        \"storage.type.token.java\",\n        \"storage.type.groovy\",\n        \"storage.type.annotation.groovy\",\n        \"storage.type.parameters.groovy\",\n        \"storage.type.generic.groovy\",\n        \"storage.type.object.array.groovy\",\n        \"storage.type.primitive.array.groovy\",\n        \"storage.type.primitive.groovy\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#267f99\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references, TS grammar specific\",\n      \"scope\": [\n        \"meta.type.cast.expr\",\n        \"meta.type.new.expr\",\n        \"support.constant.math\",\n        \"support.constant.dom\",\n        \"support.constant.json\",\n        \"entity.other.inherited-class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#267f99\"\n      }\n    },\n    {\n      \"name\": \"Control flow / Special keywords\",\n      \"scope\": [\n        \"keyword.control\",\n        \"source.cpp keyword.operator.new\",\n        \"source.cpp keyword.operator.delete\",\n        \"keyword.other.using\",\n        \"keyword.other.operator\",\n        \"entity.name.operator\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#AF00DB\"\n      }\n    },\n    {\n      \"name\": \"Variable and parameter name\",\n      \"scope\": [\n        \"variable\",\n        \"meta.definition.variable.name\",\n        \"support.variable\",\n        \"entity.name.variable\",\n        \"constant.other.placeholder\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#001080\"\n      }\n    },\n    {\n      \"name\": \"Constants and enums\",\n      \"scope\": [\"variable.other.constant\", \"variable.other.enummember\"],\n      \"settings\": {\n        \"foreground\": \"#0070C1\"\n      }\n    },\n    {\n      \"name\": \"Object keys, TS grammar specific\",\n      \"scope\": [\"meta.object-literal.key\"],\n      \"settings\": {\n        \"foreground\": \"#001080\"\n      }\n    },\n    {\n      \"name\": \"CSS property value\",\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#0451a5\"\n      }\n    },\n    {\n      \"name\": \"Regular expression groups\",\n      \"scope\": [\n        \"punctuation.definition.group.regexp\",\n        \"punctuation.definition.group.assertion.regexp\",\n        \"punctuation.definition.character-class.regexp\",\n        \"punctuation.character.set.begin.regexp\",\n        \"punctuation.character.set.end.regexp\",\n        \"keyword.operator.negation.regexp\",\n        \"support.other.parenthesis.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d16969\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.character.character-class.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.other.character-class.regexp\",\n        \"constant.character.set.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#811f3f\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator.quantifier.regexp\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#EE0000\"\n      }\n    },\n    {\n      \"scope\": \"constant.character\",\n      \"settings\": {\n        \"foreground\": \"#0000ff\"\n      }\n    },\n    {\n      \"scope\": \"constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#EE0000\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.label\",\n      \"settings\": {\n        \"foreground\": \"#000000\"\n      }\n    }\n  ],\n  \"semanticHighlighting\": true,\n  \"semanticTokenColors\": {\n    \"newOperator\": \"#AF00DB\",\n    \"stringLiteral\": \"#a31515\",\n    \"customLiteral\": \"#795E26\",\n    \"numberLiteral\": \"#098658\"\n  },\n  \"colors\": {\n    \"editor.background\": \"#FFFFFF\",\n    \"editor.foreground\": \"#000000\",\n    \"editor.inactiveSelectionBackground\": \"#E5EBF1\",\n    \"editorIndentGuide.background\": \"#D3D3D3\",\n    \"editorIndentGuide.activeBackground\": \"#939393\",\n    \"editor.selectionHighlightBackground\": \"#ADD6FF80\",\n    \"editorSuggestWidget.background\": \"#F3F3F3\",\n    \"activityBarBadge.background\": \"#007ACC\",\n    \"sideBarTitle.foreground\": \"#6F6F6F\",\n    \"list.hoverBackground\": \"#E8E8E8\",\n    \"input.placeholderForeground\": \"#767676\",\n    \"searchEditor.textInputBorder\": \"#CECECE\",\n    \"settings.textInputBorder\": \"#CECECE\",\n    \"settings.numberInputBorder\": \"#CECECE\",\n    \"statusBarItem.remoteForeground\": \"#FFF\",\n    \"statusBarItem.remoteBackground\": \"#16825D\",\n    \"ports.iconRunningProcessForeground\": \"#369432\",\n    \"sideBarSectionHeader.background\": \"#0000\",\n    \"sideBarSectionHeader.border\": \"#61616130\",\n    \"tab.lastPinnedBorder\": \"#61616130\",\n    \"notebook.cellBorderColor\": \"#E8E8E8\",\n    \"notebook.selectedCellBackground\": \"#c8ddf150\",\n    \"statusBarItem.errorBackground\": \"#c72e0f\",\n    \"list.activeSelectionIconForeground\": \"#FFF\",\n    \"list.focusAndSelectionOutline\": \"#90C2F9\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/material-darker.json",
    "content": "{\n  \"name\": \"material-darker\",\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#212121\",\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation, constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"String Escape\",\n      \"scope\": \"constant.character.escape, text.html constant.character.entity.named\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Boolean\",\n      \"scope\": \"constant.language.boolean\",\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Other Keyword\",\n      \"scope\": \"keyword.other\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword, modifier, variable.language.this, support.type.object, constant.language\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Function call\",\n      \"scope\": \"entity.name.function, support.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage.type, storage.modifier, storage.control\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"Modules\",\n      \"scope\": \"support.module, support.node\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"support.type, constant.other.key\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"entity.name.type, entity.other.inherited-class, entity.other\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#545454\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment punctuation.definition.comment, string.quoted.docstring\",\n      \"settings\": {\n        \"foreground\": \"#545454\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Class\",\n      \"scope\": \"entity.name, entity.name.type.class, support.type, support.class, meta.use\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Class variable\",\n      \"scope\": \"variable.object.property, meta.field.declaration entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Class method\",\n      \"scope\": \"meta.definition.method entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function definition\",\n      \"scope\": \"meta.function entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Template expression\",\n      \"scope\": \"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Reset embedded/template expression colors\",\n      \"scope\": \"meta.embedded, source.groovy.embedded, meta.template.expression\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"YAML key\",\n      \"scope\": \"entity.name.tag.yaml\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON key\",\n      \"scope\": \"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON constant\",\n      \"scope\": \"constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"CSS class\",\n      \"scope\": \"entity.other.attribute-name.class\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS ID\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"CSS tag\",\n      \"scope\": \"source.css entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS properties\",\n      \"scope\": \"support.type.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#B2CCD6\"\n      }\n    },\n    {\n      \"name\": \"HTML tag outer\",\n      \"scope\": \"meta.tag, punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"HTML tag inner\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"HTML tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"HTML entities\",\n      \"scope\": \"punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown link text\",\n      \"scope\": \"text.html.markdown meta.link.inline, meta.link.reference\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markdown list item\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown italic\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold italic\",\n      \"scope\": \"markup.bold markup.italic, markup.italic markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown code block\",\n      \"scope\": \"markup.fenced_code.block.markdown punctuation.definition.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markdown inline code\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"INI property name\",\n      \"scope\": \"keyword.other.definition.ini\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"INI section title\",\n      \"scope\": \"entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"C# class\",\n      \"scope\": \"source.cs meta.class.identifier storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# class method\",\n      \"scope\": \"source.cs meta.method.identifier entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"C# function call\",\n      \"scope\": \"source.cs meta.method-call meta.method, source.cs entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"C# type\",\n      \"scope\": \"source.cs storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# return type\",\n      \"scope\": \"source.cs meta.method.return-type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# preprocessor\",\n      \"scope\": \"source.cs meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#545454\"\n      }\n    },\n    {\n      \"name\": \"C# namespace\",\n      \"scope\": \"source.cs entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"JSX Text\",\n      \"scope\": \"meta.jsx.children, SXNested\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"JSX Components name\",\n      \"scope\": \"support.class.component\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C-related Block Level Variables\",\n      \"scope\": \"source.cpp meta.block variable.other\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Member Access Meta\",\n      \"scope\": \"source.python meta.member.access.python\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"source.python meta.function-call.python, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Blocks\",\n      \"scope\": \"meta.block\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"entity.name.function.call\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"source.php support.other.namespace, source.php meta.use support.class\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Constant keywords\",\n      \"scope\": \"constant.keyword\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Entity name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#212121\",\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markup Underline\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": [\"keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Parameter\",\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Self Parameter\",\n      \"scope\": [\"variable.parameter.function.language.special.self.python\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Format Placeholder\",\n      \"scope\": [\"constant.character.format.placeholder.other.python\"],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote\",\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Fenced Language\",\n      \"scope\": [\"markup.fenced_code.block\"],\n      \"settings\": {\n        \"foreground\": \"#EEFFFF90\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote Punctuation\",\n      \"scope\": [\"punctuation.definition.quote\"],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 0\",\n      \"scope\": [\n        \"meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 1\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 2\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 3\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 4\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#916b53\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 5\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 6\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 7\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 8\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#FFFFFF00\",\n    \"foreground\": \"#EEFFFF\",\n    \"button.background\": \"#61616150\",\n    \"button.foreground\": \"#ffffff\",\n    \"dropdown.background\": \"#212121\",\n    \"input.background\": \"#2B2B2B\",\n    \"inputOption.activeBorder\": \"#EEFFFF30\",\n    \"list.activeSelectionBackground\": \"#212121\",\n    \"list.activeSelectionForeground\": \"#80CBC4\",\n    \"list.dropBackground\": \"#f0717880\",\n    \"list.focusBackground\": \"#EEFFFF20\",\n    \"list.focusForeground\": \"#EEFFFF\",\n    \"list.highlightForeground\": \"#80CBC4\",\n    \"list.hoverBackground\": \"#212121\",\n    \"list.inactiveSelectionBackground\": \"#00000030\",\n    \"activityBar.background\": \"#212121\",\n    \"activityBar.dropBackground\": \"#f0717880\",\n    \"activityBarBadge.background\": \"#80CBC4\",\n    \"activityBarBadge.foreground\": \"#000000\",\n    \"badge.background\": \"#00000030\",\n    \"badge.foreground\": \"#545454\",\n    \"sideBar.background\": \"#212121\",\n    \"sideBarSectionHeader.background\": \"#212121\",\n    \"editorGroup.dropBackground\": \"#f0717880\",\n    \"editorGroup.focusedEmptyBorder\": \"#f07178\",\n    \"editorGroupHeader.tabsBackground\": \"#212121\",\n    \"tab.border\": \"#212121\",\n    \"tab.activeBorder\": \"#80CBC4\",\n    \"tab.inactiveBackground\": \"#212121\",\n    \"tab.activeModifiedBorder\": \"#616161\",\n    \"tab.inactiveModifiedBorder\": \"#904348\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#c05a60\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#904348\",\n    \"editor.background\": \"#212121\",\n    \"editor.foreground\": \"#EEFFFF\",\n    \"editorLineNumber.foreground\": \"#424242\",\n    \"editorLineNumber.activeForeground\": \"#616161\",\n    \"editorCursor.foreground\": \"#FFCC00\",\n    \"editor.selectionBackground\": \"#61616150\",\n    \"editor.selectionHighlightBackground\": \"#FFCC0020\",\n    \"editor.wordHighlightBackground\": \"#ff9cac30\",\n    \"editor.wordHighlightStrongBackground\": \"#C3E88D30\",\n    \"editor.findMatchHighlight\": \"#EEFFFF\",\n    \"editor.findRangeHighlightBackground\": \"#FFCB6B30\",\n    \"editor.lineHighlightBorder\": \"#00000000\",\n    \"editor.rangeHighlightBackground\": \"#FFFFFF0d\",\n    \"editorWhitespace.foreground\": \"#EEFFFF40\",\n    \"editorWidget.background\": \"#212121\",\n    \"editorHoverWidget.background\": \"#212121\",\n    \"editorMarkerNavigation.background\": \"#EEFFFF05\",\n    \"peekView.border\": \"#00000030\",\n    \"peekViewEditor.background\": \"#EEFFFF05\",\n    \"peekViewResult.background\": \"#EEFFFF05\",\n    \"peekViewTitle.background\": \"#EEFFFF05\",\n    \"panel.background\": \"#212121\",\n    \"panel.border\": \"#21212160\",\n    \"panelTitle.activeBorder\": \"#80CBC4\",\n    \"panelTitle.inactiveForeground\": \"#EEFFFF\",\n    \"statusBar.background\": \"#212121\",\n    \"statusBar.debuggingBackground\": \"#C792EA\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.noFolderBackground\": \"#212121\",\n    \"statusBarItem.activeBackground\": \"#f0717880\",\n    \"statusBarItem.hoverBackground\": \"#54545420\",\n    \"statusBarItem.remoteBackground\": \"#80CBC4\",\n    \"statusBarItem.remoteForeground\": \"#000000\",\n    \"titleBar.activeBackground\": \"#212121\",\n    \"pickerGroup.border\": \"#FFFFFF1a\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightBlack\": \"#545454\",\n    \"terminal.ansiBrightBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightCyan\": \"#89DDFF\",\n    \"terminal.ansiBrightGreen\": \"#C3E88D\",\n    \"terminal.ansiBrightMagenta\": \"#C792EA\",\n    \"terminal.ansiBrightRed\": \"#f07178\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#FFCB6B\",\n    \"terminal.ansiCyan\": \"#89DDFF\",\n    \"terminal.ansiGreen\": \"#C3E88D\",\n    \"terminal.ansiMagenta\": \"#C792EA\",\n    \"terminal.ansiRed\": \"#f07178\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#FFCB6B\",\n    \"debugToolBar.background\": \"#212121\",\n    \"debugConsole.errorForeground\": \"#f07178\",\n    \"debugConsole.infoForeground\": \"#89DDFF\",\n    \"debugConsole.warningForeground\": \"#FFCB6B\",\n    \"selection.background\": \"#00000080\",\n    \"editorRuler.foreground\": \"#424242\",\n    \"widget.shadow\": \"#00000030\",\n    \"scrollbar.shadow\": \"#00000030\",\n    \"editorLink.activeForeground\": \"#EEFFFF\",\n    \"progressBar.background\": \"#80CBC4\",\n    \"pickerGroup.foreground\": \"#80CBC4\",\n    \"tree.indentGuidesStroke\": \"#424242\",\n    \"terminalCursor.foreground\": \"#FFCB6B\",\n    \"terminalCursor.background\": \"#000000\",\n    \"inputOption.activeBackground\": \"#EEFFFF30\",\n    \"textLink.foreground\": \"#80CBC4\",\n    \"textLink.activeForeground\": \"#EEFFFF\",\n    \"sideBar.foreground\": \"#616161\",\n    \"sideBar.border\": \"#21212160\",\n    \"sideBarTitle.foreground\": \"#EEFFFF\",\n    \"sideBarSectionHeader.border\": \"#21212160\",\n    \"panel.dropBackground\": \"#EEFFFF\",\n    \"panelTitle.activeForeground\": \"#FFFFFF\",\n    \"editor.lineHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBackground\": \"#000000\",\n    \"editor.findMatchHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBorder\": \"#80CBC4\",\n    \"editor.findMatchHighlightBorder\": \"#ffffff30\",\n    \"editorIndentGuide.background\": \"#42424270\",\n    \"editorIndentGuide.activeBackground\": \"#424242\",\n    \"editorGroup.border\": \"#00000030\",\n    \"editorGutter.modifiedBackground\": \"#82AAFF60\",\n    \"editorGutter.addedBackground\": \"#C3E88D60\",\n    \"editorGutter.deletedBackground\": \"#f0717860\",\n    \"activityBar.border\": \"#21212160\",\n    \"activityBar.foreground\": \"#EEFFFF\",\n    \"activityBar.activeBorder\": \"#80CBC4\",\n    \"extensionBadge.remoteForeground\": \"#EEFFFF\",\n    \"scrollbarSlider.background\": \"#EEFFFF20\",\n    \"scrollbarSlider.hoverBackground\": \"#EEFFFF10\",\n    \"scrollbarSlider.activeBackground\": \"#80CBC4\",\n    \"tab.unfocusedActiveBorder\": \"#545454\",\n    \"tab.activeForeground\": \"#FFFFFF\",\n    \"tab.inactiveForeground\": \"#616161\",\n    \"tab.activeBackground\": \"#212121\",\n    \"tab.unfocusedActiveForeground\": \"#EEFFFF\",\n    \"editorWidget.resizeBorder\": \"#80CBC4\",\n    \"editorWidget.border\": \"#80CBC4\",\n    \"notebook.focusedCellBorder\": \"#80CBC4\",\n    \"notebook.inactiveFocusedCellBorder\": \"#80CBC450\",\n    \"statusBar.border\": \"#21212160\",\n    \"statusBar.foreground\": \"#616161\",\n    \"editorBracketMatch.border\": \"#FFCC0050\",\n    \"editorBracketMatch.background\": \"#212121\",\n    \"editorOverviewRuler.findMatchForeground\": \"#80CBC4\",\n    \"editorOverviewRuler.border\": \"#212121\",\n    \"editorOverviewRuler.errorForeground\": \"#f0717840\",\n    \"editorOverviewRuler.infoForeground\": \"#82AAFF40\",\n    \"editorOverviewRuler.warningForeground\": \"#FFCB6B40\",\n    \"editorInfo.foreground\": \"#82AAFF70\",\n    \"editorWarning.foreground\": \"#FFCB6B70\",\n    \"editorError.foreground\": \"#f0717870\",\n    \"editorHoverWidget.border\": \"#FFFFFF10\",\n    \"titleBar.activeForeground\": \"#EEFFFF\",\n    \"titleBar.inactiveBackground\": \"#212121\",\n    \"titleBar.inactiveForeground\": \"#616161\",\n    \"titleBar.border\": \"#21212160\",\n    \"input.foreground\": \"#EEFFFF\",\n    \"input.placeholderForeground\": \"#EEFFFF60\",\n    \"input.border\": \"#FFFFFF10\",\n    \"inputValidation.errorBorder\": \"#f07178\",\n    \"inputValidation.infoBorder\": \"#82AAFF\",\n    \"inputValidation.warningBorder\": \"#FFCB6B\",\n    \"dropdown.border\": \"#FFFFFF10\",\n    \"quickInput.background\": \"#212121\",\n    \"quickInput.foreground\": \"#616161\",\n    \"list.hoverForeground\": \"#FFFFFF\",\n    \"list.inactiveSelectionForeground\": \"#80CBC4\",\n    \"quickInput.list.focusBackground\": \"#EEFFFF20\",\n    \"editorSuggestWidget.background\": \"#212121\",\n    \"editorSuggestWidget.foreground\": \"#EEFFFF\",\n    \"editorSuggestWidget.highlightForeground\": \"#80CBC4\",\n    \"editorSuggestWidget.selectedBackground\": \"#00000050\",\n    \"editorSuggestWidget.border\": \"#FFFFFF10\",\n    \"diffEditor.insertedTextBackground\": \"#89DDFF20\",\n    \"diffEditor.removedTextBackground\": \"#ff9cac20\",\n    \"notifications.background\": \"#212121\",\n    \"notifications.foreground\": \"#EEFFFF\",\n    \"notificationLink.foreground\": \"#80CBC4\",\n    \"extensionButton.prominentBackground\": \"#C3E88D90\",\n    \"extensionButton.prominentHoverBackground\": \"#C3E88D\",\n    \"extensionButton.prominentForeground\": \"#000000\",\n    \"peekViewEditorGutter.background\": \"#EEFFFF05\",\n    \"peekViewTitleDescription.foreground\": \"#EEFFFF60\",\n    \"peekViewResult.matchHighlightBackground\": \"#61616150\",\n    \"peekViewEditor.matchHighlightBackground\": \"#61616150\",\n    \"peekViewResult.selectionBackground\": \"#61616170\",\n    \"gitDecoration.deletedResourceForeground\": \"#f0717890\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFCB6B90\",\n    \"gitDecoration.modifiedResourceForeground\": \"#82AAFF90\",\n    \"gitDecoration.untrackedResourceForeground\": \"#C3E88D90\",\n    \"gitDecoration.ignoredResourceForeground\": \"#61616190\",\n    \"breadcrumb.background\": \"#212121\",\n    \"breadcrumb.foreground\": \"#616161\",\n    \"breadcrumb.focusForeground\": \"#EEFFFF\",\n    \"breadcrumb.activeSelectionForeground\": \"#80CBC4\",\n    \"breadcrumbPicker.background\": \"#212121\",\n    \"menu.background\": \"#212121\",\n    \"menu.foreground\": \"#EEFFFF\",\n    \"menu.selectionBackground\": \"#00000050\",\n    \"menu.selectionForeground\": \"#80CBC4\",\n    \"menu.selectionBorder\": \"#00000030\",\n    \"menu.separatorBackground\": \"#EEFFFF\",\n    \"menubar.selectionBackground\": \"#00000030\",\n    \"menubar.selectionForeground\": \"#80CBC4\",\n    \"menubar.selectionBorder\": \"#00000030\",\n    \"settings.dropdownForeground\": \"#EEFFFF\",\n    \"settings.dropdownBackground\": \"#212121\",\n    \"settings.numberInputForeground\": \"#EEFFFF\",\n    \"settings.numberInputBackground\": \"#212121\",\n    \"settings.textInputForeground\": \"#EEFFFF\",\n    \"settings.textInputBackground\": \"#212121\",\n    \"settings.headerForeground\": \"#80CBC4\",\n    \"settings.modifiedItemIndicator\": \"#80CBC4\",\n    \"settings.checkboxBackground\": \"#212121\",\n    \"settings.checkboxForeground\": \"#EEFFFF\",\n    \"listFilterWidget.background\": \"#00000030\",\n    \"listFilterWidget.outline\": \"#00000030\",\n    \"listFilterWidget.noMatchesOutline\": \"#00000030\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/material-default.json",
    "content": "{\n  \"name\": \"material-default\",\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#263238\",\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation, constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"String Escape\",\n      \"scope\": \"constant.character.escape, text.html constant.character.entity.named\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Boolean\",\n      \"scope\": \"constant.language.boolean\",\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Other Keyword\",\n      \"scope\": \"keyword.other\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword, modifier, variable.language.this, support.type.object, constant.language\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Function call\",\n      \"scope\": \"entity.name.function, support.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage.type, storage.modifier, storage.control\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"Modules\",\n      \"scope\": \"support.module, support.node\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"support.type, constant.other.key\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"entity.name.type, entity.other.inherited-class, entity.other\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#546E7A\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment punctuation.definition.comment, string.quoted.docstring\",\n      \"settings\": {\n        \"foreground\": \"#546E7A\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Class\",\n      \"scope\": \"entity.name, entity.name.type.class, support.type, support.class, meta.use\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Class variable\",\n      \"scope\": \"variable.object.property, meta.field.declaration entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Class method\",\n      \"scope\": \"meta.definition.method entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function definition\",\n      \"scope\": \"meta.function entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Template expression\",\n      \"scope\": \"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Reset embedded/template expression colors\",\n      \"scope\": \"meta.embedded, source.groovy.embedded, meta.template.expression\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"YAML key\",\n      \"scope\": \"entity.name.tag.yaml\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON key\",\n      \"scope\": \"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON constant\",\n      \"scope\": \"constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"CSS class\",\n      \"scope\": \"entity.other.attribute-name.class\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS ID\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"CSS tag\",\n      \"scope\": \"source.css entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS properties\",\n      \"scope\": \"support.type.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#B2CCD6\"\n      }\n    },\n    {\n      \"name\": \"HTML tag outer\",\n      \"scope\": \"meta.tag, punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"HTML tag inner\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"HTML tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"HTML entities\",\n      \"scope\": \"punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown link text\",\n      \"scope\": \"text.html.markdown meta.link.inline, meta.link.reference\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markdown list item\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown italic\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold italic\",\n      \"scope\": \"markup.bold markup.italic, markup.italic markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown code block\",\n      \"scope\": \"markup.fenced_code.block.markdown punctuation.definition.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markdown inline code\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"INI property name\",\n      \"scope\": \"keyword.other.definition.ini\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"INI section title\",\n      \"scope\": \"entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"C# class\",\n      \"scope\": \"source.cs meta.class.identifier storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# class method\",\n      \"scope\": \"source.cs meta.method.identifier entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"C# function call\",\n      \"scope\": \"source.cs meta.method-call meta.method, source.cs entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"C# type\",\n      \"scope\": \"source.cs storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# return type\",\n      \"scope\": \"source.cs meta.method.return-type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# preprocessor\",\n      \"scope\": \"source.cs meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#546E7A\"\n      }\n    },\n    {\n      \"name\": \"C# namespace\",\n      \"scope\": \"source.cs entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"JSX Text\",\n      \"scope\": \"meta.jsx.children, SXNested\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"JSX Components name\",\n      \"scope\": \"support.class.component\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C-related Block Level Variables\",\n      \"scope\": \"source.cpp meta.block variable.other\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Member Access Meta\",\n      \"scope\": \"source.python meta.member.access.python\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"source.python meta.function-call.python, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Blocks\",\n      \"scope\": \"meta.block\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"entity.name.function.call\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"source.php support.other.namespace, source.php meta.use support.class\",\n      \"settings\": {\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Constant keywords\",\n      \"scope\": \"constant.keyword\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Entity name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#263238\",\n        \"foreground\": \"#EEFFFF\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markup Underline\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": [\"keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Parameter\",\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Self Parameter\",\n      \"scope\": [\"variable.parameter.function.language.special.self.python\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Format Placeholder\",\n      \"scope\": [\"constant.character.format.placeholder.other.python\"],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote\",\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Fenced Language\",\n      \"scope\": [\"markup.fenced_code.block\"],\n      \"settings\": {\n        \"foreground\": \"#EEFFFF90\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote Punctuation\",\n      \"scope\": [\"punctuation.definition.quote\"],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 0\",\n      \"scope\": [\n        \"meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 1\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 2\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 3\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 4\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#916b53\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 5\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 6\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 7\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 8\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#FFFFFF00\",\n    \"foreground\": \"#EEFFFF\",\n    \"button.background\": \"#80CBC420\",\n    \"button.foreground\": \"#ffffff\",\n    \"dropdown.background\": \"#263238\",\n    \"input.background\": \"#303C41\",\n    \"inputOption.activeBorder\": \"#EEFFFF30\",\n    \"list.activeSelectionBackground\": \"#263238\",\n    \"list.activeSelectionForeground\": \"#80CBC4\",\n    \"list.dropBackground\": \"#f0717880\",\n    \"list.focusBackground\": \"#EEFFFF20\",\n    \"list.focusForeground\": \"#EEFFFF\",\n    \"list.highlightForeground\": \"#80CBC4\",\n    \"list.hoverBackground\": \"#263238\",\n    \"list.inactiveSelectionBackground\": \"#00000030\",\n    \"activityBar.background\": \"#263238\",\n    \"activityBar.dropBackground\": \"#f0717880\",\n    \"activityBarBadge.background\": \"#80CBC4\",\n    \"activityBarBadge.foreground\": \"#000000\",\n    \"badge.background\": \"#00000030\",\n    \"badge.foreground\": \"#546E7A\",\n    \"sideBar.background\": \"#263238\",\n    \"sideBarSectionHeader.background\": \"#263238\",\n    \"editorGroup.dropBackground\": \"#f0717880\",\n    \"editorGroup.focusedEmptyBorder\": \"#f07178\",\n    \"editorGroupHeader.tabsBackground\": \"#263238\",\n    \"tab.border\": \"#263238\",\n    \"tab.activeBorder\": \"#80CBC4\",\n    \"tab.inactiveBackground\": \"#263238\",\n    \"tab.activeModifiedBorder\": \"#607a86\",\n    \"tab.inactiveModifiedBorder\": \"#904348\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#c05a60\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#904348\",\n    \"editor.background\": \"#263238\",\n    \"editor.foreground\": \"#EEFFFF\",\n    \"editorLineNumber.foreground\": \"#37474F\",\n    \"editorLineNumber.activeForeground\": \"#607a86\",\n    \"editorCursor.foreground\": \"#FFCC00\",\n    \"editor.selectionBackground\": \"#80CBC420\",\n    \"editor.selectionHighlightBackground\": \"#FFCC0020\",\n    \"editor.wordHighlightBackground\": \"#ff9cac30\",\n    \"editor.wordHighlightStrongBackground\": \"#C3E88D30\",\n    \"editor.findMatchHighlight\": \"#EEFFFF\",\n    \"editor.findRangeHighlightBackground\": \"#FFCB6B30\",\n    \"editor.lineHighlightBorder\": \"#00000000\",\n    \"editor.rangeHighlightBackground\": \"#FFFFFF0d\",\n    \"editorWhitespace.foreground\": \"#EEFFFF40\",\n    \"editorWidget.background\": \"#263238\",\n    \"editorHoverWidget.background\": \"#263238\",\n    \"editorMarkerNavigation.background\": \"#EEFFFF05\",\n    \"peekView.border\": \"#00000030\",\n    \"peekViewEditor.background\": \"#EEFFFF05\",\n    \"peekViewResult.background\": \"#EEFFFF05\",\n    \"peekViewTitle.background\": \"#EEFFFF05\",\n    \"panel.background\": \"#263238\",\n    \"panel.border\": \"#26323860\",\n    \"panelTitle.activeBorder\": \"#80CBC4\",\n    \"panelTitle.inactiveForeground\": \"#EEFFFF\",\n    \"statusBar.background\": \"#263238\",\n    \"statusBar.debuggingBackground\": \"#C792EA\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.noFolderBackground\": \"#263238\",\n    \"statusBarItem.activeBackground\": \"#f0717880\",\n    \"statusBarItem.hoverBackground\": \"#546E7A20\",\n    \"statusBarItem.remoteBackground\": \"#80CBC4\",\n    \"statusBarItem.remoteForeground\": \"#000000\",\n    \"titleBar.activeBackground\": \"#263238\",\n    \"pickerGroup.border\": \"#FFFFFF1a\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightBlack\": \"#546E7A\",\n    \"terminal.ansiBrightBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightCyan\": \"#89DDFF\",\n    \"terminal.ansiBrightGreen\": \"#C3E88D\",\n    \"terminal.ansiBrightMagenta\": \"#C792EA\",\n    \"terminal.ansiBrightRed\": \"#f07178\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#FFCB6B\",\n    \"terminal.ansiCyan\": \"#89DDFF\",\n    \"terminal.ansiGreen\": \"#C3E88D\",\n    \"terminal.ansiMagenta\": \"#C792EA\",\n    \"terminal.ansiRed\": \"#f07178\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#FFCB6B\",\n    \"debugToolBar.background\": \"#263238\",\n    \"debugConsole.errorForeground\": \"#f07178\",\n    \"debugConsole.infoForeground\": \"#89DDFF\",\n    \"debugConsole.warningForeground\": \"#FFCB6B\",\n    \"selection.background\": \"#00000080\",\n    \"editorRuler.foreground\": \"#37474F\",\n    \"widget.shadow\": \"#00000030\",\n    \"scrollbar.shadow\": \"#00000030\",\n    \"editorLink.activeForeground\": \"#EEFFFF\",\n    \"progressBar.background\": \"#80CBC4\",\n    \"pickerGroup.foreground\": \"#80CBC4\",\n    \"tree.indentGuidesStroke\": \"#37474F\",\n    \"terminalCursor.foreground\": \"#FFCB6B\",\n    \"terminalCursor.background\": \"#000000\",\n    \"inputOption.activeBackground\": \"#EEFFFF30\",\n    \"textLink.foreground\": \"#80CBC4\",\n    \"textLink.activeForeground\": \"#EEFFFF\",\n    \"sideBar.foreground\": \"#607a86\",\n    \"sideBar.border\": \"#26323860\",\n    \"sideBarTitle.foreground\": \"#EEFFFF\",\n    \"sideBarSectionHeader.border\": \"#26323860\",\n    \"panel.dropBackground\": \"#EEFFFF\",\n    \"panelTitle.activeForeground\": \"#FFFFFF\",\n    \"editor.lineHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBackground\": \"#000000\",\n    \"editor.findMatchHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBorder\": \"#80CBC4\",\n    \"editor.findMatchHighlightBorder\": \"#ffffff30\",\n    \"editorIndentGuide.background\": \"#37474F70\",\n    \"editorIndentGuide.activeBackground\": \"#37474F\",\n    \"editorGroup.border\": \"#00000030\",\n    \"editorGutter.modifiedBackground\": \"#82AAFF60\",\n    \"editorGutter.addedBackground\": \"#C3E88D60\",\n    \"editorGutter.deletedBackground\": \"#f0717860\",\n    \"activityBar.border\": \"#26323860\",\n    \"activityBar.foreground\": \"#EEFFFF\",\n    \"activityBar.activeBorder\": \"#80CBC4\",\n    \"extensionBadge.remoteForeground\": \"#EEFFFF\",\n    \"scrollbarSlider.background\": \"#EEFFFF20\",\n    \"scrollbarSlider.hoverBackground\": \"#EEFFFF10\",\n    \"scrollbarSlider.activeBackground\": \"#80CBC4\",\n    \"tab.unfocusedActiveBorder\": \"#546E7A\",\n    \"tab.activeForeground\": \"#FFFFFF\",\n    \"tab.inactiveForeground\": \"#607a86\",\n    \"tab.activeBackground\": \"#263238\",\n    \"tab.unfocusedActiveForeground\": \"#EEFFFF\",\n    \"editorWidget.resizeBorder\": \"#80CBC4\",\n    \"editorWidget.border\": \"#80CBC4\",\n    \"notebook.focusedCellBorder\": \"#80CBC4\",\n    \"notebook.inactiveFocusedCellBorder\": \"#80CBC450\",\n    \"statusBar.border\": \"#26323860\",\n    \"statusBar.foreground\": \"#546E7A\",\n    \"editorBracketMatch.border\": \"#FFCC0050\",\n    \"editorBracketMatch.background\": \"#263238\",\n    \"editorOverviewRuler.findMatchForeground\": \"#80CBC4\",\n    \"editorOverviewRuler.border\": \"#263238\",\n    \"editorOverviewRuler.errorForeground\": \"#f0717840\",\n    \"editorOverviewRuler.infoForeground\": \"#82AAFF40\",\n    \"editorOverviewRuler.warningForeground\": \"#FFCB6B40\",\n    \"editorInfo.foreground\": \"#82AAFF70\",\n    \"editorWarning.foreground\": \"#FFCB6B70\",\n    \"editorError.foreground\": \"#f0717870\",\n    \"editorHoverWidget.border\": \"#FFFFFF10\",\n    \"titleBar.activeForeground\": \"#EEFFFF\",\n    \"titleBar.inactiveBackground\": \"#263238\",\n    \"titleBar.inactiveForeground\": \"#607a86\",\n    \"titleBar.border\": \"#26323860\",\n    \"input.foreground\": \"#EEFFFF\",\n    \"input.placeholderForeground\": \"#EEFFFF60\",\n    \"input.border\": \"#FFFFFF10\",\n    \"inputValidation.errorBorder\": \"#f07178\",\n    \"inputValidation.infoBorder\": \"#82AAFF\",\n    \"inputValidation.warningBorder\": \"#FFCB6B\",\n    \"dropdown.border\": \"#FFFFFF10\",\n    \"quickInput.background\": \"#263238\",\n    \"quickInput.foreground\": \"#607a86\",\n    \"list.hoverForeground\": \"#FFFFFF\",\n    \"list.inactiveSelectionForeground\": \"#80CBC4\",\n    \"quickInput.list.focusBackground\": \"#EEFFFF20\",\n    \"editorSuggestWidget.background\": \"#263238\",\n    \"editorSuggestWidget.foreground\": \"#EEFFFF\",\n    \"editorSuggestWidget.highlightForeground\": \"#80CBC4\",\n    \"editorSuggestWidget.selectedBackground\": \"#00000050\",\n    \"editorSuggestWidget.border\": \"#FFFFFF10\",\n    \"diffEditor.insertedTextBackground\": \"#89DDFF20\",\n    \"diffEditor.removedTextBackground\": \"#ff9cac20\",\n    \"notifications.background\": \"#263238\",\n    \"notifications.foreground\": \"#EEFFFF\",\n    \"notificationLink.foreground\": \"#80CBC4\",\n    \"extensionButton.prominentBackground\": \"#C3E88D90\",\n    \"extensionButton.prominentHoverBackground\": \"#C3E88D\",\n    \"extensionButton.prominentForeground\": \"#000000\",\n    \"peekViewEditorGutter.background\": \"#EEFFFF05\",\n    \"peekViewTitleDescription.foreground\": \"#EEFFFF60\",\n    \"peekViewResult.matchHighlightBackground\": \"#80CBC420\",\n    \"peekViewEditor.matchHighlightBackground\": \"#80CBC420\",\n    \"peekViewResult.selectionBackground\": \"#607a8670\",\n    \"gitDecoration.deletedResourceForeground\": \"#f0717890\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFCB6B90\",\n    \"gitDecoration.modifiedResourceForeground\": \"#82AAFF90\",\n    \"gitDecoration.untrackedResourceForeground\": \"#C3E88D90\",\n    \"gitDecoration.ignoredResourceForeground\": \"#607a8690\",\n    \"breadcrumb.background\": \"#263238\",\n    \"breadcrumb.foreground\": \"#607a86\",\n    \"breadcrumb.focusForeground\": \"#EEFFFF\",\n    \"breadcrumb.activeSelectionForeground\": \"#80CBC4\",\n    \"breadcrumbPicker.background\": \"#263238\",\n    \"menu.background\": \"#263238\",\n    \"menu.foreground\": \"#EEFFFF\",\n    \"menu.selectionBackground\": \"#00000050\",\n    \"menu.selectionForeground\": \"#80CBC4\",\n    \"menu.selectionBorder\": \"#00000030\",\n    \"menu.separatorBackground\": \"#EEFFFF\",\n    \"menubar.selectionBackground\": \"#00000030\",\n    \"menubar.selectionForeground\": \"#80CBC4\",\n    \"menubar.selectionBorder\": \"#00000030\",\n    \"settings.dropdownForeground\": \"#EEFFFF\",\n    \"settings.dropdownBackground\": \"#263238\",\n    \"settings.numberInputForeground\": \"#EEFFFF\",\n    \"settings.numberInputBackground\": \"#263238\",\n    \"settings.textInputForeground\": \"#EEFFFF\",\n    \"settings.textInputBackground\": \"#263238\",\n    \"settings.headerForeground\": \"#80CBC4\",\n    \"settings.modifiedItemIndicator\": \"#80CBC4\",\n    \"settings.checkboxBackground\": \"#263238\",\n    \"settings.checkboxForeground\": \"#EEFFFF\",\n    \"listFilterWidget.background\": \"#00000030\",\n    \"listFilterWidget.outline\": \"#00000030\",\n    \"listFilterWidget.noMatchesOutline\": \"#00000030\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/material-lighter.json",
    "content": "{\n  \"name\": \"material-lighter\",\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#FAFAFA\",\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#91B859\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation, constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"String Escape\",\n      \"scope\": \"constant.character.escape, text.html constant.character.entity.named\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Boolean\",\n      \"scope\": \"constant.language.boolean\",\n      \"settings\": {\n        \"foreground\": \"#FF5370\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#F76D47\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Other Keyword\",\n      \"scope\": \"keyword.other\",\n      \"settings\": {\n        \"foreground\": \"#F76D47\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword, modifier, variable.language.this, support.type.object, constant.language\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Function call\",\n      \"scope\": \"entity.name.function, support.function\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage.type, storage.modifier, storage.control\",\n      \"settings\": {\n        \"foreground\": \"#9C3EDA\"\n      }\n    },\n    {\n      \"name\": \"Modules\",\n      \"scope\": \"support.module, support.node\",\n      \"settings\": {\n        \"foreground\": \"#E53935\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"support.type, constant.other.key\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"entity.name.type, entity.other.inherited-class, entity.other\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment punctuation.definition.comment, string.quoted.docstring\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Class\",\n      \"scope\": \"entity.name, entity.name.type.class, support.type, support.class, meta.use\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"Class variable\",\n      \"scope\": \"variable.object.property, meta.field.declaration entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Class method\",\n      \"scope\": \"meta.definition.method entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Function definition\",\n      \"scope\": \"meta.function entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"Template expression\",\n      \"scope\": \"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Reset embedded/template expression colors\",\n      \"scope\": \"meta.embedded, source.groovy.embedded, meta.template.expression\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"YAML key\",\n      \"scope\": \"entity.name.tag.yaml\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"JSON key\",\n      \"scope\": \"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"JSON constant\",\n      \"scope\": \"constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"CSS class\",\n      \"scope\": \"entity.other.attribute-name.class\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"CSS ID\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#F76D47\"\n      }\n    },\n    {\n      \"name\": \"CSS tag\",\n      \"scope\": \"source.css entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"CSS properties\",\n      \"scope\": \"support.type.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#8796B0\"\n      }\n    },\n    {\n      \"name\": \"HTML tag outer\",\n      \"scope\": \"meta.tag, punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"HTML tag inner\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"HTML tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#9C3EDA\"\n      }\n    },\n    {\n      \"name\": \"HTML entities\",\n      \"scope\": \"punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Markdown heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Markdown link text\",\n      \"scope\": \"text.html.markdown meta.link.inline, meta.link.reference\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Markdown list item\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Markdown italic\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#E53935\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#E53935\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold italic\",\n      \"scope\": \"markup.bold markup.italic, markup.italic markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#E53935\",\n        \"fontStyle\": \"italic bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown code block\",\n      \"scope\": \"markup.fenced_code.block.markdown punctuation.definition.markdown\",\n      \"settings\": {\n        \"foreground\": \"#91B859\"\n      }\n    },\n    {\n      \"name\": \"Markdown inline code\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#91B859\"\n      }\n    },\n    {\n      \"name\": \"INI property name\",\n      \"scope\": \"keyword.other.definition.ini\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"INI section title\",\n      \"scope\": \"entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"C# class\",\n      \"scope\": \"source.cs meta.class.identifier storage.type\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"C# class method\",\n      \"scope\": \"source.cs meta.method.identifier entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"C# function call\",\n      \"scope\": \"source.cs meta.method-call meta.method, source.cs entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"C# type\",\n      \"scope\": \"source.cs storage.type\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"C# return type\",\n      \"scope\": \"source.cs meta.method.return-type\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"C# preprocessor\",\n      \"scope\": \"source.cs meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"C# namespace\",\n      \"scope\": \"source.cs entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"JSX Text\",\n      \"scope\": \"meta.jsx.children, SXNested\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"JSX Components name\",\n      \"scope\": \"support.class.component\",\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"C-related Block Level Variables\",\n      \"scope\": \"source.cpp meta.block variable.other\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Member Access Meta\",\n      \"scope\": \"source.python meta.member.access.python\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"source.python meta.function-call.python, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"Blocks\",\n      \"scope\": \"meta.block\",\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"entity.name.function.call\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"source.php support.other.namespace, source.php meta.use support.class\",\n      \"settings\": {\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Constant keywords\",\n      \"scope\": \"constant.keyword\",\n      \"settings\": {\n        \"foreground\": \"#39ADB5\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Entity name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#FAFAFA\",\n        \"foreground\": \"#90A4AE\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#91B859\"\n      }\n    },\n    {\n      \"name\": \"Markup Underline\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": [\"keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#39ADB5\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Parameter\",\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Self Parameter\",\n      \"scope\": [\"variable.parameter.function.language.special.self.python\"],\n      \"settings\": {\n        \"foreground\": \"#E53935\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Format Placeholder\",\n      \"scope\": [\"constant.character.format.placeholder.other.python\"],\n      \"settings\": {\n        \"foreground\": \"#F76D47\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote\",\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#39ADB5\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Fenced Language\",\n      \"scope\": [\"markup.fenced_code.block\"],\n      \"settings\": {\n        \"foreground\": \"#90A4AE90\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote Punctuation\",\n      \"scope\": [\"punctuation.definition.quote\"],\n      \"settings\": {\n        \"foreground\": \"#FF5370\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 0\",\n      \"scope\": [\n        \"meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9C3EDA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 1\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#E2931D\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 2\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F76D47\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 3\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#E53935\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 4\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#916b53\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 5\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#6182B8\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 6\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FF5370\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 7\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9C3EDA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 8\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B859\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#FFFFFF00\",\n    \"foreground\": \"#90A4AE\",\n    \"button.background\": \"#80CBC440\",\n    \"button.foreground\": \"#ffffff\",\n    \"dropdown.background\": \"#FAFAFA\",\n    \"input.background\": \"#EEEEEE\",\n    \"inputOption.activeBorder\": \"#90A4AE30\",\n    \"list.activeSelectionBackground\": \"#FAFAFA\",\n    \"list.activeSelectionForeground\": \"#80CBC4\",\n    \"list.dropBackground\": \"#E5393580\",\n    \"list.focusBackground\": \"#90A4AE20\",\n    \"list.focusForeground\": \"#90A4AE\",\n    \"list.highlightForeground\": \"#80CBC4\",\n    \"list.hoverBackground\": \"#FAFAFA\",\n    \"list.inactiveSelectionBackground\": \"#CCD7DA50\",\n    \"activityBar.background\": \"#FAFAFA\",\n    \"activityBar.dropBackground\": \"#E5393580\",\n    \"activityBarBadge.background\": \"#80CBC4\",\n    \"activityBarBadge.foreground\": \"#000000\",\n    \"badge.background\": \"#CCD7DA30\",\n    \"badge.foreground\": \"#90A4AE\",\n    \"sideBar.background\": \"#FAFAFA\",\n    \"sideBarSectionHeader.background\": \"#FAFAFA\",\n    \"editorGroup.dropBackground\": \"#E5393580\",\n    \"editorGroup.focusedEmptyBorder\": \"#E53935\",\n    \"editorGroupHeader.tabsBackground\": \"#FAFAFA\",\n    \"tab.border\": \"#FAFAFA\",\n    \"tab.activeBorder\": \"#80CBC4\",\n    \"tab.inactiveBackground\": \"#FAFAFA\",\n    \"tab.activeModifiedBorder\": \"#7E939E\",\n    \"tab.inactiveModifiedBorder\": \"#89221f\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#b72d2a\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#89221f\",\n    \"editor.background\": \"#FAFAFA\",\n    \"editor.foreground\": \"#90A4AE\",\n    \"editorLineNumber.foreground\": \"#CFD8DC\",\n    \"editorLineNumber.activeForeground\": \"#7E939E\",\n    \"editorCursor.foreground\": \"#272727\",\n    \"editor.selectionBackground\": \"#80CBC440\",\n    \"editor.selectionHighlightBackground\": \"#27272720\",\n    \"editor.wordHighlightBackground\": \"#FF537030\",\n    \"editor.wordHighlightStrongBackground\": \"#91B85930\",\n    \"editor.findMatchHighlight\": \"#90A4AE\",\n    \"editor.findRangeHighlightBackground\": \"#E2931D30\",\n    \"editor.lineHighlightBorder\": \"#CCD7DA00\",\n    \"editor.rangeHighlightBackground\": \"#FFFFFF0d\",\n    \"editorWhitespace.foreground\": \"#90A4AE40\",\n    \"editorWidget.background\": \"#FAFAFA\",\n    \"editorHoverWidget.background\": \"#FAFAFA\",\n    \"editorMarkerNavigation.background\": \"#90A4AE05\",\n    \"peekView.border\": \"#00000020\",\n    \"peekViewEditor.background\": \"#90A4AE05\",\n    \"peekViewResult.background\": \"#90A4AE05\",\n    \"peekViewTitle.background\": \"#90A4AE05\",\n    \"panel.background\": \"#FAFAFA\",\n    \"panel.border\": \"#FAFAFA60\",\n    \"panelTitle.activeBorder\": \"#80CBC4\",\n    \"panelTitle.inactiveForeground\": \"#90A4AE\",\n    \"statusBar.background\": \"#FAFAFA\",\n    \"statusBar.debuggingBackground\": \"#9C3EDA\",\n    \"statusBar.debuggingForeground\": \"#FFFFFF\",\n    \"statusBar.noFolderBackground\": \"#FAFAFA\",\n    \"statusBarItem.activeBackground\": \"#E5393580\",\n    \"statusBarItem.hoverBackground\": \"#90A4AE20\",\n    \"statusBarItem.remoteBackground\": \"#80CBC4\",\n    \"statusBarItem.remoteForeground\": \"#000000\",\n    \"titleBar.activeBackground\": \"#FAFAFA\",\n    \"pickerGroup.border\": \"#FFFFFF1a\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#6182B8\",\n    \"terminal.ansiBrightBlack\": \"#90A4AE\",\n    \"terminal.ansiBrightBlue\": \"#6182B8\",\n    \"terminal.ansiBrightCyan\": \"#39ADB5\",\n    \"terminal.ansiBrightGreen\": \"#91B859\",\n    \"terminal.ansiBrightMagenta\": \"#9C3EDA\",\n    \"terminal.ansiBrightRed\": \"#E53935\",\n    \"terminal.ansiBrightWhite\": \"#FFFFFF\",\n    \"terminal.ansiBrightYellow\": \"#E2931D\",\n    \"terminal.ansiCyan\": \"#39ADB5\",\n    \"terminal.ansiGreen\": \"#91B859\",\n    \"terminal.ansiMagenta\": \"#9C3EDA\",\n    \"terminal.ansiRed\": \"#E53935\",\n    \"terminal.ansiWhite\": \"#FFFFFF\",\n    \"terminal.ansiYellow\": \"#E2931D\",\n    \"debugToolBar.background\": \"#FAFAFA\",\n    \"debugConsole.errorForeground\": \"#E53935\",\n    \"debugConsole.infoForeground\": \"#39ADB5\",\n    \"debugConsole.warningForeground\": \"#E2931D\",\n    \"selection.background\": \"#CCD7DA80\",\n    \"editorRuler.foreground\": \"#B0BEC5\",\n    \"widget.shadow\": \"#00000020\",\n    \"scrollbar.shadow\": \"#00000020\",\n    \"editorLink.activeForeground\": \"#90A4AE\",\n    \"progressBar.background\": \"#80CBC4\",\n    \"pickerGroup.foreground\": \"#80CBC4\",\n    \"tree.indentGuidesStroke\": \"#B0BEC5\",\n    \"terminalCursor.foreground\": \"#E2931D\",\n    \"terminalCursor.background\": \"#000000\",\n    \"inputOption.activeBackground\": \"#90A4AE30\",\n    \"textLink.foreground\": \"#80CBC4\",\n    \"textLink.activeForeground\": \"#90A4AE\",\n    \"sideBar.foreground\": \"#7E939E\",\n    \"sideBar.border\": \"#FAFAFA60\",\n    \"sideBarTitle.foreground\": \"#90A4AE\",\n    \"sideBarSectionHeader.border\": \"#FAFAFA60\",\n    \"panel.dropBackground\": \"#90A4AE\",\n    \"panelTitle.activeForeground\": \"#000000\",\n    \"editor.lineHighlightBackground\": \"#CCD7DA50\",\n    \"editor.findMatchBackground\": \"#00000020\",\n    \"editor.findMatchHighlightBackground\": \"#00000010\",\n    \"editor.findMatchBorder\": \"#80CBC4\",\n    \"editor.findMatchHighlightBorder\": \"#00000030\",\n    \"editorIndentGuide.background\": \"#B0BEC570\",\n    \"editorIndentGuide.activeBackground\": \"#B0BEC5\",\n    \"editorGroup.border\": \"#00000020\",\n    \"editorGutter.modifiedBackground\": \"#6182B860\",\n    \"editorGutter.addedBackground\": \"#91B85960\",\n    \"editorGutter.deletedBackground\": \"#E5393560\",\n    \"activityBar.border\": \"#FAFAFA60\",\n    \"activityBar.foreground\": \"#90A4AE\",\n    \"activityBar.activeBorder\": \"#80CBC4\",\n    \"extensionBadge.remoteForeground\": \"#90A4AE\",\n    \"scrollbarSlider.background\": \"#90A4AE20\",\n    \"scrollbarSlider.hoverBackground\": \"#90A4AE10\",\n    \"scrollbarSlider.activeBackground\": \"#80CBC4\",\n    \"tab.unfocusedActiveBorder\": \"#90A4AE\",\n    \"tab.activeForeground\": \"#000000\",\n    \"tab.inactiveForeground\": \"#7E939E\",\n    \"tab.activeBackground\": \"#FAFAFA\",\n    \"tab.unfocusedActiveForeground\": \"#90A4AE\",\n    \"editorWidget.resizeBorder\": \"#80CBC4\",\n    \"editorWidget.border\": \"#80CBC4\",\n    \"notebook.focusedCellBorder\": \"#80CBC4\",\n    \"notebook.inactiveFocusedCellBorder\": \"#80CBC450\",\n    \"statusBar.border\": \"#FAFAFA60\",\n    \"statusBar.foreground\": \"#7E939E\",\n    \"editorBracketMatch.border\": \"#27272750\",\n    \"editorBracketMatch.background\": \"#FAFAFA\",\n    \"editorOverviewRuler.findMatchForeground\": \"#80CBC4\",\n    \"editorOverviewRuler.border\": \"#FAFAFA\",\n    \"editorOverviewRuler.errorForeground\": \"#E5393540\",\n    \"editorOverviewRuler.infoForeground\": \"#6182B840\",\n    \"editorOverviewRuler.warningForeground\": \"#E2931D40\",\n    \"editorInfo.foreground\": \"#6182B870\",\n    \"editorWarning.foreground\": \"#E2931D70\",\n    \"editorError.foreground\": \"#E5393570\",\n    \"editorHoverWidget.border\": \"#00000010\",\n    \"titleBar.activeForeground\": \"#90A4AE\",\n    \"titleBar.inactiveBackground\": \"#FAFAFA\",\n    \"titleBar.inactiveForeground\": \"#7E939E\",\n    \"titleBar.border\": \"#FAFAFA60\",\n    \"input.foreground\": \"#90A4AE\",\n    \"input.placeholderForeground\": \"#90A4AE60\",\n    \"input.border\": \"#00000010\",\n    \"inputValidation.errorBorder\": \"#E53935\",\n    \"inputValidation.infoBorder\": \"#6182B8\",\n    \"inputValidation.warningBorder\": \"#E2931D\",\n    \"dropdown.border\": \"#00000010\",\n    \"quickInput.background\": \"#FAFAFA\",\n    \"quickInput.foreground\": \"#7E939E\",\n    \"list.hoverForeground\": \"#B1C7D3\",\n    \"list.inactiveSelectionForeground\": \"#80CBC4\",\n    \"quickInput.list.focusBackground\": \"#90A4AE20\",\n    \"editorSuggestWidget.background\": \"#FAFAFA\",\n    \"editorSuggestWidget.foreground\": \"#90A4AE\",\n    \"editorSuggestWidget.highlightForeground\": \"#80CBC4\",\n    \"editorSuggestWidget.selectedBackground\": \"#CCD7DA50\",\n    \"editorSuggestWidget.border\": \"#00000010\",\n    \"diffEditor.insertedTextBackground\": \"#39ADB520\",\n    \"diffEditor.removedTextBackground\": \"#FF537020\",\n    \"notifications.background\": \"#FAFAFA\",\n    \"notifications.foreground\": \"#90A4AE\",\n    \"notificationLink.foreground\": \"#80CBC4\",\n    \"extensionButton.prominentBackground\": \"#91B85990\",\n    \"extensionButton.prominentHoverBackground\": \"#91B859\",\n    \"extensionButton.prominentForeground\": \"#000000\",\n    \"peekViewEditorGutter.background\": \"#90A4AE05\",\n    \"peekViewTitleDescription.foreground\": \"#90A4AE60\",\n    \"peekViewResult.matchHighlightBackground\": \"#80CBC440\",\n    \"peekViewEditor.matchHighlightBackground\": \"#80CBC440\",\n    \"peekViewResult.selectionBackground\": \"#7E939E70\",\n    \"gitDecoration.deletedResourceForeground\": \"#E5393590\",\n    \"gitDecoration.conflictingResourceForeground\": \"#E2931D90\",\n    \"gitDecoration.modifiedResourceForeground\": \"#6182B890\",\n    \"gitDecoration.untrackedResourceForeground\": \"#91B85990\",\n    \"gitDecoration.ignoredResourceForeground\": \"#7E939E90\",\n    \"breadcrumb.background\": \"#FAFAFA\",\n    \"breadcrumb.foreground\": \"#7E939E\",\n    \"breadcrumb.focusForeground\": \"#90A4AE\",\n    \"breadcrumb.activeSelectionForeground\": \"#80CBC4\",\n    \"breadcrumbPicker.background\": \"#FAFAFA\",\n    \"menu.background\": \"#FAFAFA\",\n    \"menu.foreground\": \"#90A4AE\",\n    \"menu.selectionBackground\": \"#CCD7DA50\",\n    \"menu.selectionForeground\": \"#80CBC4\",\n    \"menu.selectionBorder\": \"#CCD7DA50\",\n    \"menu.separatorBackground\": \"#90A4AE\",\n    \"menubar.selectionBackground\": \"#CCD7DA50\",\n    \"menubar.selectionForeground\": \"#80CBC4\",\n    \"menubar.selectionBorder\": \"#CCD7DA50\",\n    \"settings.dropdownForeground\": \"#90A4AE\",\n    \"settings.dropdownBackground\": \"#FAFAFA\",\n    \"settings.numberInputForeground\": \"#90A4AE\",\n    \"settings.numberInputBackground\": \"#FAFAFA\",\n    \"settings.textInputForeground\": \"#90A4AE\",\n    \"settings.textInputBackground\": \"#FAFAFA\",\n    \"settings.headerForeground\": \"#80CBC4\",\n    \"settings.modifiedItemIndicator\": \"#80CBC4\",\n    \"settings.checkboxBackground\": \"#FAFAFA\",\n    \"settings.checkboxForeground\": \"#90A4AE\",\n    \"listFilterWidget.background\": \"#CCD7DA50\",\n    \"listFilterWidget.outline\": \"#CCD7DA50\",\n    \"listFilterWidget.noMatchesOutline\": \"#CCD7DA50\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/material-ocean.json",
    "content": "{\n  \"name\": \"material-ocean\",\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#0F111A\",\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation, constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"String Escape\",\n      \"scope\": \"constant.character.escape, text.html constant.character.entity.named\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Boolean\",\n      \"scope\": \"constant.language.boolean\",\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Other Keyword\",\n      \"scope\": \"keyword.other\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword, modifier, variable.language.this, support.type.object, constant.language\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Function call\",\n      \"scope\": \"entity.name.function, support.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage.type, storage.modifier, storage.control\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"Modules\",\n      \"scope\": \"support.module, support.node\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"support.type, constant.other.key\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"entity.name.type, entity.other.inherited-class, entity.other\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#464B5D\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment punctuation.definition.comment, string.quoted.docstring\",\n      \"settings\": {\n        \"foreground\": \"#464B5D\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Class\",\n      \"scope\": \"entity.name, entity.name.type.class, support.type, support.class, meta.use\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Class variable\",\n      \"scope\": \"variable.object.property, meta.field.declaration entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Class method\",\n      \"scope\": \"meta.definition.method entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function definition\",\n      \"scope\": \"meta.function entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Template expression\",\n      \"scope\": \"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Reset embedded/template expression colors\",\n      \"scope\": \"meta.embedded, source.groovy.embedded, meta.template.expression\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"YAML key\",\n      \"scope\": \"entity.name.tag.yaml\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON key\",\n      \"scope\": \"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON constant\",\n      \"scope\": \"constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"CSS class\",\n      \"scope\": \"entity.other.attribute-name.class\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS ID\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"CSS tag\",\n      \"scope\": \"source.css entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS properties\",\n      \"scope\": \"support.type.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#B2CCD6\"\n      }\n    },\n    {\n      \"name\": \"HTML tag outer\",\n      \"scope\": \"meta.tag, punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"HTML tag inner\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"HTML tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"HTML entities\",\n      \"scope\": \"punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Markdown heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown link text\",\n      \"scope\": \"text.html.markdown meta.link.inline, meta.link.reference\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markdown list item\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown italic\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold italic\",\n      \"scope\": \"markup.bold markup.italic, markup.italic markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown code block\",\n      \"scope\": \"markup.fenced_code.block.markdown punctuation.definition.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markdown inline code\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"INI property name\",\n      \"scope\": \"keyword.other.definition.ini\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"INI section title\",\n      \"scope\": \"entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"C# class\",\n      \"scope\": \"source.cs meta.class.identifier storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# class method\",\n      \"scope\": \"source.cs meta.method.identifier entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"C# function call\",\n      \"scope\": \"source.cs meta.method-call meta.method, source.cs entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"C# type\",\n      \"scope\": \"source.cs storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# return type\",\n      \"scope\": \"source.cs meta.method.return-type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# preprocessor\",\n      \"scope\": \"source.cs meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#464B5D\"\n      }\n    },\n    {\n      \"name\": \"C# namespace\",\n      \"scope\": \"source.cs entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"JSX Text\",\n      \"scope\": \"meta.jsx.children, SXNested\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"JSX Components name\",\n      \"scope\": \"support.class.component\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C-related Block Level Variables\",\n      \"scope\": \"source.cpp meta.block variable.other\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Member Access Meta\",\n      \"scope\": \"source.python meta.member.access.python\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"source.python meta.function-call.python, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Blocks\",\n      \"scope\": \"meta.block\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"entity.name.function.call\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"source.php support.other.namespace, source.php meta.use support.class\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Constant keywords\",\n      \"scope\": \"constant.keyword\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Entity name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#0F111A\",\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markup Underline\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": [\"keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Parameter\",\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Self Parameter\",\n      \"scope\": [\"variable.parameter.function.language.special.self.python\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Format Placeholder\",\n      \"scope\": [\"constant.character.format.placeholder.other.python\"],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote\",\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Fenced Language\",\n      \"scope\": [\"markup.fenced_code.block\"],\n      \"settings\": {\n        \"foreground\": \"#A6ACCD90\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote Punctuation\",\n      \"scope\": [\"punctuation.definition.quote\"],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 0\",\n      \"scope\": [\n        \"meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 1\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 2\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 3\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 4\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#916b53\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 5\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 6\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 7\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 8\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#FFFFFF00\",\n    \"foreground\": \"#A6ACCD\",\n    \"button.background\": \"#717CB450\",\n    \"button.foreground\": \"#ffffff\",\n    \"dropdown.background\": \"#0F111A\",\n    \"input.background\": \"#1A1C25\",\n    \"inputOption.activeBorder\": \"#A6ACCD30\",\n    \"list.activeSelectionBackground\": \"#0F111A\",\n    \"list.activeSelectionForeground\": \"#80CBC4\",\n    \"list.dropBackground\": \"#f0717880\",\n    \"list.focusBackground\": \"#A6ACCD20\",\n    \"list.focusForeground\": \"#A6ACCD\",\n    \"list.highlightForeground\": \"#80CBC4\",\n    \"list.hoverBackground\": \"#0F111A\",\n    \"list.inactiveSelectionBackground\": \"#00000030\",\n    \"activityBar.background\": \"#0F111A\",\n    \"activityBar.dropBackground\": \"#f0717880\",\n    \"activityBarBadge.background\": \"#80CBC4\",\n    \"activityBarBadge.foreground\": \"#000000\",\n    \"badge.background\": \"#00000030\",\n    \"badge.foreground\": \"#464B5D\",\n    \"sideBar.background\": \"#0F111A\",\n    \"sideBarSectionHeader.background\": \"#0F111A\",\n    \"editorGroup.dropBackground\": \"#f0717880\",\n    \"editorGroup.focusedEmptyBorder\": \"#f07178\",\n    \"editorGroupHeader.tabsBackground\": \"#0F111A\",\n    \"tab.border\": \"#0F111A\",\n    \"tab.activeBorder\": \"#80CBC4\",\n    \"tab.inactiveBackground\": \"#0F111A\",\n    \"tab.activeModifiedBorder\": \"#525975\",\n    \"tab.inactiveModifiedBorder\": \"#904348\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#c05a60\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#904348\",\n    \"editor.background\": \"#0F111A\",\n    \"editor.foreground\": \"#A6ACCD\",\n    \"editorLineNumber.foreground\": \"#3B3F5180\",\n    \"editorLineNumber.activeForeground\": \"#525975\",\n    \"editorCursor.foreground\": \"#FFCC00\",\n    \"editor.selectionBackground\": \"#717CB450\",\n    \"editor.selectionHighlightBackground\": \"#FFCC0020\",\n    \"editor.wordHighlightBackground\": \"#ff9cac30\",\n    \"editor.wordHighlightStrongBackground\": \"#C3E88D30\",\n    \"editor.findMatchHighlight\": \"#A6ACCD\",\n    \"editor.findRangeHighlightBackground\": \"#FFCB6B30\",\n    \"editor.lineHighlightBorder\": \"#00000000\",\n    \"editor.rangeHighlightBackground\": \"#FFFFFF0d\",\n    \"editorWhitespace.foreground\": \"#A6ACCD40\",\n    \"editorWidget.background\": \"#0F111A\",\n    \"editorHoverWidget.background\": \"#0F111A\",\n    \"editorMarkerNavigation.background\": \"#A6ACCD05\",\n    \"peekView.border\": \"#00000030\",\n    \"peekViewEditor.background\": \"#A6ACCD05\",\n    \"peekViewResult.background\": \"#A6ACCD05\",\n    \"peekViewTitle.background\": \"#A6ACCD05\",\n    \"panel.background\": \"#0F111A\",\n    \"panel.border\": \"#0F111A60\",\n    \"panelTitle.activeBorder\": \"#80CBC4\",\n    \"panelTitle.inactiveForeground\": \"#A6ACCD\",\n    \"statusBar.background\": \"#0F111A\",\n    \"statusBar.debuggingBackground\": \"#C792EA\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.noFolderBackground\": \"#0F111A\",\n    \"statusBarItem.activeBackground\": \"#f0717880\",\n    \"statusBarItem.hoverBackground\": \"#464B5D20\",\n    \"statusBarItem.remoteBackground\": \"#80CBC4\",\n    \"statusBarItem.remoteForeground\": \"#000000\",\n    \"titleBar.activeBackground\": \"#0F111A\",\n    \"pickerGroup.border\": \"#FFFFFF1a\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightBlack\": \"#464B5D\",\n    \"terminal.ansiBrightBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightCyan\": \"#89DDFF\",\n    \"terminal.ansiBrightGreen\": \"#C3E88D\",\n    \"terminal.ansiBrightMagenta\": \"#C792EA\",\n    \"terminal.ansiBrightRed\": \"#f07178\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#FFCB6B\",\n    \"terminal.ansiCyan\": \"#89DDFF\",\n    \"terminal.ansiGreen\": \"#C3E88D\",\n    \"terminal.ansiMagenta\": \"#C792EA\",\n    \"terminal.ansiRed\": \"#f07178\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#FFCB6B\",\n    \"debugToolBar.background\": \"#0F111A\",\n    \"debugConsole.errorForeground\": \"#f07178\",\n    \"debugConsole.infoForeground\": \"#89DDFF\",\n    \"debugConsole.warningForeground\": \"#FFCB6B\",\n    \"selection.background\": \"#00000080\",\n    \"editorRuler.foreground\": \"#3B3F51\",\n    \"widget.shadow\": \"#00000030\",\n    \"scrollbar.shadow\": \"#00000030\",\n    \"editorLink.activeForeground\": \"#A6ACCD\",\n    \"progressBar.background\": \"#80CBC4\",\n    \"pickerGroup.foreground\": \"#80CBC4\",\n    \"tree.indentGuidesStroke\": \"#3B3F51\",\n    \"terminalCursor.foreground\": \"#FFCB6B\",\n    \"terminalCursor.background\": \"#000000\",\n    \"inputOption.activeBackground\": \"#A6ACCD30\",\n    \"textLink.foreground\": \"#80CBC4\",\n    \"textLink.activeForeground\": \"#A6ACCD\",\n    \"sideBar.foreground\": \"#525975\",\n    \"sideBar.border\": \"#0F111A60\",\n    \"sideBarTitle.foreground\": \"#A6ACCD\",\n    \"sideBarSectionHeader.border\": \"#0F111A60\",\n    \"panel.dropBackground\": \"#A6ACCD\",\n    \"panelTitle.activeForeground\": \"#FFFFFF\",\n    \"editor.lineHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBackground\": \"#000000\",\n    \"editor.findMatchHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBorder\": \"#80CBC4\",\n    \"editor.findMatchHighlightBorder\": \"#ffffff30\",\n    \"editorIndentGuide.background\": \"#3B3F5170\",\n    \"editorIndentGuide.activeBackground\": \"#3B3F51\",\n    \"editorGroup.border\": \"#00000030\",\n    \"editorGutter.modifiedBackground\": \"#82AAFF60\",\n    \"editorGutter.addedBackground\": \"#C3E88D60\",\n    \"editorGutter.deletedBackground\": \"#f0717860\",\n    \"activityBar.border\": \"#0F111A60\",\n    \"activityBar.foreground\": \"#A6ACCD\",\n    \"activityBar.activeBorder\": \"#80CBC4\",\n    \"extensionBadge.remoteForeground\": \"#A6ACCD\",\n    \"scrollbarSlider.background\": \"#8F93A220\",\n    \"scrollbarSlider.hoverBackground\": \"#8F93A210\",\n    \"scrollbarSlider.activeBackground\": \"#80CBC4\",\n    \"tab.unfocusedActiveBorder\": \"#464B5D\",\n    \"tab.activeForeground\": \"#FFFFFF\",\n    \"tab.inactiveForeground\": \"#525975\",\n    \"tab.activeBackground\": \"#0F111A\",\n    \"tab.unfocusedActiveForeground\": \"#A6ACCD\",\n    \"editorWidget.resizeBorder\": \"#80CBC4\",\n    \"editorWidget.border\": \"#80CBC4\",\n    \"notebook.focusedCellBorder\": \"#80CBC4\",\n    \"notebook.inactiveFocusedCellBorder\": \"#80CBC450\",\n    \"statusBar.border\": \"#0F111A60\",\n    \"statusBar.foreground\": \"#4B526D\",\n    \"editorBracketMatch.border\": \"#FFCC0050\",\n    \"editorBracketMatch.background\": \"#0F111A\",\n    \"editorOverviewRuler.findMatchForeground\": \"#80CBC4\",\n    \"editorOverviewRuler.border\": \"#0F111A\",\n    \"editorOverviewRuler.errorForeground\": \"#f0717840\",\n    \"editorOverviewRuler.infoForeground\": \"#82AAFF40\",\n    \"editorOverviewRuler.warningForeground\": \"#FFCB6B40\",\n    \"editorInfo.foreground\": \"#82AAFF70\",\n    \"editorWarning.foreground\": \"#FFCB6B70\",\n    \"editorError.foreground\": \"#f0717870\",\n    \"editorHoverWidget.border\": \"#FFFFFF10\",\n    \"titleBar.activeForeground\": \"#A6ACCD\",\n    \"titleBar.inactiveBackground\": \"#0F111A\",\n    \"titleBar.inactiveForeground\": \"#525975\",\n    \"titleBar.border\": \"#0F111A60\",\n    \"input.foreground\": \"#A6ACCD\",\n    \"input.placeholderForeground\": \"#A6ACCD60\",\n    \"input.border\": \"#FFFFFF10\",\n    \"inputValidation.errorBorder\": \"#f07178\",\n    \"inputValidation.infoBorder\": \"#82AAFF\",\n    \"inputValidation.warningBorder\": \"#FFCB6B\",\n    \"dropdown.border\": \"#FFFFFF10\",\n    \"quickInput.background\": \"#0F111A\",\n    \"quickInput.foreground\": \"#525975\",\n    \"list.hoverForeground\": \"#FFFFFF\",\n    \"list.inactiveSelectionForeground\": \"#80CBC4\",\n    \"quickInput.list.focusBackground\": \"#A6ACCD20\",\n    \"editorSuggestWidget.background\": \"#0F111A\",\n    \"editorSuggestWidget.foreground\": \"#A6ACCD\",\n    \"editorSuggestWidget.highlightForeground\": \"#80CBC4\",\n    \"editorSuggestWidget.selectedBackground\": \"#00000050\",\n    \"editorSuggestWidget.border\": \"#FFFFFF10\",\n    \"diffEditor.insertedTextBackground\": \"#89DDFF20\",\n    \"diffEditor.removedTextBackground\": \"#ff9cac20\",\n    \"notifications.background\": \"#0F111A\",\n    \"notifications.foreground\": \"#A6ACCD\",\n    \"notificationLink.foreground\": \"#80CBC4\",\n    \"extensionButton.prominentBackground\": \"#C3E88D90\",\n    \"extensionButton.prominentHoverBackground\": \"#C3E88D\",\n    \"extensionButton.prominentForeground\": \"#000000\",\n    \"peekViewEditorGutter.background\": \"#A6ACCD05\",\n    \"peekViewTitleDescription.foreground\": \"#A6ACCD60\",\n    \"peekViewResult.matchHighlightBackground\": \"#717CB450\",\n    \"peekViewEditor.matchHighlightBackground\": \"#717CB450\",\n    \"peekViewResult.selectionBackground\": \"#52597570\",\n    \"gitDecoration.deletedResourceForeground\": \"#f0717890\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFCB6B90\",\n    \"gitDecoration.modifiedResourceForeground\": \"#82AAFF90\",\n    \"gitDecoration.untrackedResourceForeground\": \"#C3E88D90\",\n    \"gitDecoration.ignoredResourceForeground\": \"#52597590\",\n    \"breadcrumb.background\": \"#0F111A\",\n    \"breadcrumb.foreground\": \"#525975\",\n    \"breadcrumb.focusForeground\": \"#A6ACCD\",\n    \"breadcrumb.activeSelectionForeground\": \"#80CBC4\",\n    \"breadcrumbPicker.background\": \"#0F111A\",\n    \"menu.background\": \"#0F111A\",\n    \"menu.foreground\": \"#A6ACCD\",\n    \"menu.selectionBackground\": \"#00000050\",\n    \"menu.selectionForeground\": \"#80CBC4\",\n    \"menu.selectionBorder\": \"#00000030\",\n    \"menu.separatorBackground\": \"#A6ACCD\",\n    \"menubar.selectionBackground\": \"#00000030\",\n    \"menubar.selectionForeground\": \"#80CBC4\",\n    \"menubar.selectionBorder\": \"#00000030\",\n    \"settings.dropdownForeground\": \"#A6ACCD\",\n    \"settings.dropdownBackground\": \"#0F111A\",\n    \"settings.numberInputForeground\": \"#A6ACCD\",\n    \"settings.numberInputBackground\": \"#0F111A\",\n    \"settings.textInputForeground\": \"#A6ACCD\",\n    \"settings.textInputBackground\": \"#0F111A\",\n    \"settings.headerForeground\": \"#80CBC4\",\n    \"settings.modifiedItemIndicator\": \"#80CBC4\",\n    \"settings.checkboxBackground\": \"#0F111A\",\n    \"settings.checkboxForeground\": \"#A6ACCD\",\n    \"listFilterWidget.background\": \"#00000030\",\n    \"listFilterWidget.outline\": \"#00000030\",\n    \"listFilterWidget.noMatchesOutline\": \"#00000030\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/material-palenight.json",
    "content": "{\n  \"name\": \"material-palenight\",\n  \"semanticHighlighting\": true,\n  \"tokenColors\": [\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#292D3E\",\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation, constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"String Escape\",\n      \"scope\": \"constant.character.escape, text.html constant.character.entity.named\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Boolean\",\n      \"scope\": \"constant.language.boolean\",\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Other Keyword\",\n      \"scope\": \"keyword.other\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword, modifier, variable.language.this, support.type.object, constant.language\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Function call\",\n      \"scope\": \"entity.name.function, support.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage.type, storage.modifier, storage.control\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"Modules\",\n      \"scope\": \"support.module, support.node\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"support.type, constant.other.key\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Type\",\n      \"scope\": \"entity.name.type, entity.other.inherited-class, entity.other\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#676E95\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment punctuation.definition.comment, string.quoted.docstring\",\n      \"settings\": {\n        \"foreground\": \"#676E95\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Class\",\n      \"scope\": \"entity.name, entity.name.type.class, support.type, support.class, meta.use\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"Class variable\",\n      \"scope\": \"variable.object.property, meta.field.declaration entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Class method\",\n      \"scope\": \"meta.definition.method entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function definition\",\n      \"scope\": \"meta.function entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Template expression\",\n      \"scope\": \"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Reset embedded/template expression colors\",\n      \"scope\": \"meta.embedded, source.groovy.embedded, meta.template.expression\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"YAML key\",\n      \"scope\": \"entity.name.tag.yaml\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON key\",\n      \"scope\": \"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON constant\",\n      \"scope\": \"constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"CSS class\",\n      \"scope\": \"entity.other.attribute-name.class\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS ID\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"CSS tag\",\n      \"scope\": \"source.css entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"CSS properties\",\n      \"scope\": \"support.type.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#B2CCD6\"\n      }\n    },\n    {\n      \"name\": \"HTML tag outer\",\n      \"scope\": \"meta.tag, punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"HTML tag inner\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"HTML tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"HTML entities\",\n      \"scope\": \"punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Markdown heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown link text\",\n      \"scope\": \"text.html.markdown meta.link.inline, meta.link.reference\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markdown list item\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown italic\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown bold italic\",\n      \"scope\": \"markup.bold markup.italic, markup.italic markup.bold\",\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown code block\",\n      \"scope\": \"markup.fenced_code.block.markdown punctuation.definition.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markdown inline code\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"INI property name\",\n      \"scope\": \"keyword.other.definition.ini\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"INI section title\",\n      \"scope\": \"entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"C# class\",\n      \"scope\": \"source.cs meta.class.identifier storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# class method\",\n      \"scope\": \"source.cs meta.method.identifier entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"C# function call\",\n      \"scope\": \"source.cs meta.method-call meta.method, source.cs entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"C# type\",\n      \"scope\": \"source.cs storage.type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# return type\",\n      \"scope\": \"source.cs meta.method.return-type\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C# preprocessor\",\n      \"scope\": \"source.cs meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#676E95\"\n      }\n    },\n    {\n      \"name\": \"C# namespace\",\n      \"scope\": \"source.cs entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"JSX Text\",\n      \"scope\": \"meta.jsx.children, SXNested\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"JSX Components name\",\n      \"scope\": \"support.class.component\",\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"C-related Block Level Variables\",\n      \"scope\": \"source.cpp meta.block variable.other\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Member Access Meta\",\n      \"scope\": \"source.python meta.member.access.python\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"source.python meta.function-call.python, meta.function-call.arguments\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Blocks\",\n      \"scope\": \"meta.block\",\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"entity.name.function.call\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"source.php support.other.namespace, source.php meta.use support.class\",\n      \"settings\": {\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Constant keywords\",\n      \"scope\": \"constant.keyword\",\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Entity name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"Global settings\",\n      \"settings\": {\n        \"background\": \"#292D3E\",\n        \"foreground\": \"#A6ACCD\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    },\n    {\n      \"name\": \"Markup Underline\",\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": [\"keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#89DDFF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Parameter\",\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Self Parameter\",\n      \"scope\": [\"variable.parameter.function.language.special.self.python\"],\n      \"settings\": {\n        \"foreground\": \"#f07178\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python - Format Placeholder\",\n      \"scope\": [\"constant.character.format.placeholder.other.python\"],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote\",\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#89DDFF\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Fenced Language\",\n      \"scope\": [\"markup.fenced_code.block\"],\n      \"settings\": {\n        \"foreground\": \"#A6ACCD90\"\n      }\n    },\n    {\n      \"name\": \"Markdown - Blockquote Punctuation\",\n      \"scope\": [\"punctuation.definition.quote\"],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 0\",\n      \"scope\": [\n        \"meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 1\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#FFCB6B\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 2\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F78C6C\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 3\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f07178\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 4\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#916b53\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 5\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#82AAFF\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 6\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ff9cac\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 7\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"name\": \"JSON Key - Level 8\",\n      \"scope\": [\n        \"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#C3E88D\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#FFFFFF00\",\n    \"foreground\": \"#A6ACCD\",\n    \"button.background\": \"#717CB450\",\n    \"button.foreground\": \"#ffffff\",\n    \"dropdown.background\": \"#292D3E\",\n    \"input.background\": \"#333747\",\n    \"inputOption.activeBorder\": \"#A6ACCD30\",\n    \"list.activeSelectionBackground\": \"#292D3E\",\n    \"list.activeSelectionForeground\": \"#80CBC4\",\n    \"list.dropBackground\": \"#f0717880\",\n    \"list.focusBackground\": \"#A6ACCD20\",\n    \"list.focusForeground\": \"#A6ACCD\",\n    \"list.highlightForeground\": \"#80CBC4\",\n    \"list.hoverBackground\": \"#292D3E\",\n    \"list.inactiveSelectionBackground\": \"#00000030\",\n    \"activityBar.background\": \"#292D3E\",\n    \"activityBar.dropBackground\": \"#f0717880\",\n    \"activityBarBadge.background\": \"#80CBC4\",\n    \"activityBarBadge.foreground\": \"#000000\",\n    \"badge.background\": \"#00000030\",\n    \"badge.foreground\": \"#676E95\",\n    \"sideBar.background\": \"#292D3E\",\n    \"sideBarSectionHeader.background\": \"#292D3E\",\n    \"editorGroup.dropBackground\": \"#f0717880\",\n    \"editorGroup.focusedEmptyBorder\": \"#f07178\",\n    \"editorGroupHeader.tabsBackground\": \"#292D3E\",\n    \"tab.border\": \"#292D3E\",\n    \"tab.activeBorder\": \"#80CBC4\",\n    \"tab.inactiveBackground\": \"#292D3E\",\n    \"tab.activeModifiedBorder\": \"#676E95\",\n    \"tab.inactiveModifiedBorder\": \"#904348\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#c05a60\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#904348\",\n    \"editor.background\": \"#292D3E\",\n    \"editor.foreground\": \"#A6ACCD\",\n    \"editorLineNumber.foreground\": \"#3A3F58\",\n    \"editorLineNumber.activeForeground\": \"#676E95\",\n    \"editorCursor.foreground\": \"#FFCC00\",\n    \"editor.selectionBackground\": \"#717CB450\",\n    \"editor.selectionHighlightBackground\": \"#FFCC0020\",\n    \"editor.wordHighlightBackground\": \"#ff9cac30\",\n    \"editor.wordHighlightStrongBackground\": \"#C3E88D30\",\n    \"editor.findMatchHighlight\": \"#A6ACCD\",\n    \"editor.findRangeHighlightBackground\": \"#FFCB6B30\",\n    \"editor.lineHighlightBorder\": \"#00000000\",\n    \"editor.rangeHighlightBackground\": \"#FFFFFF0d\",\n    \"editorWhitespace.foreground\": \"#A6ACCD40\",\n    \"editorWidget.background\": \"#292D3E\",\n    \"editorHoverWidget.background\": \"#292D3E\",\n    \"editorMarkerNavigation.background\": \"#A6ACCD05\",\n    \"peekView.border\": \"#00000030\",\n    \"peekViewEditor.background\": \"#A6ACCD05\",\n    \"peekViewResult.background\": \"#A6ACCD05\",\n    \"peekViewTitle.background\": \"#A6ACCD05\",\n    \"panel.background\": \"#292D3E\",\n    \"panel.border\": \"#292D3E60\",\n    \"panelTitle.activeBorder\": \"#80CBC4\",\n    \"panelTitle.inactiveForeground\": \"#A6ACCD\",\n    \"statusBar.background\": \"#292D3E\",\n    \"statusBar.debuggingBackground\": \"#C792EA\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.noFolderBackground\": \"#292D3E\",\n    \"statusBarItem.activeBackground\": \"#f0717880\",\n    \"statusBarItem.hoverBackground\": \"#676E9520\",\n    \"statusBarItem.remoteBackground\": \"#80CBC4\",\n    \"statusBarItem.remoteForeground\": \"#000000\",\n    \"titleBar.activeBackground\": \"#292D3E\",\n    \"pickerGroup.border\": \"#FFFFFF1a\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightBlack\": \"#676E95\",\n    \"terminal.ansiBrightBlue\": \"#82AAFF\",\n    \"terminal.ansiBrightCyan\": \"#89DDFF\",\n    \"terminal.ansiBrightGreen\": \"#C3E88D\",\n    \"terminal.ansiBrightMagenta\": \"#C792EA\",\n    \"terminal.ansiBrightRed\": \"#f07178\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#FFCB6B\",\n    \"terminal.ansiCyan\": \"#89DDFF\",\n    \"terminal.ansiGreen\": \"#C3E88D\",\n    \"terminal.ansiMagenta\": \"#C792EA\",\n    \"terminal.ansiRed\": \"#f07178\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#FFCB6B\",\n    \"debugToolBar.background\": \"#292D3E\",\n    \"debugConsole.errorForeground\": \"#f07178\",\n    \"debugConsole.infoForeground\": \"#89DDFF\",\n    \"debugConsole.warningForeground\": \"#FFCB6B\",\n    \"selection.background\": \"#00000080\",\n    \"editorRuler.foreground\": \"#4E5579\",\n    \"widget.shadow\": \"#00000030\",\n    \"scrollbar.shadow\": \"#00000030\",\n    \"editorLink.activeForeground\": \"#A6ACCD\",\n    \"progressBar.background\": \"#80CBC4\",\n    \"pickerGroup.foreground\": \"#80CBC4\",\n    \"tree.indentGuidesStroke\": \"#4E5579\",\n    \"terminalCursor.foreground\": \"#FFCB6B\",\n    \"terminalCursor.background\": \"#000000\",\n    \"inputOption.activeBackground\": \"#A6ACCD30\",\n    \"textLink.foreground\": \"#80CBC4\",\n    \"textLink.activeForeground\": \"#A6ACCD\",\n    \"sideBar.foreground\": \"#676E95\",\n    \"sideBar.border\": \"#292D3E60\",\n    \"sideBarTitle.foreground\": \"#A6ACCD\",\n    \"sideBarSectionHeader.border\": \"#292D3E60\",\n    \"panel.dropBackground\": \"#A6ACCD\",\n    \"panelTitle.activeForeground\": \"#FFFFFF\",\n    \"editor.lineHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBackground\": \"#000000\",\n    \"editor.findMatchHighlightBackground\": \"#00000050\",\n    \"editor.findMatchBorder\": \"#80CBC4\",\n    \"editor.findMatchHighlightBorder\": \"#ffffff30\",\n    \"editorIndentGuide.background\": \"#4E557970\",\n    \"editorIndentGuide.activeBackground\": \"#4E5579\",\n    \"editorGroup.border\": \"#00000030\",\n    \"editorGutter.modifiedBackground\": \"#82AAFF60\",\n    \"editorGutter.addedBackground\": \"#C3E88D60\",\n    \"editorGutter.deletedBackground\": \"#f0717860\",\n    \"activityBar.border\": \"#292D3E60\",\n    \"activityBar.foreground\": \"#A6ACCD\",\n    \"activityBar.activeBorder\": \"#80CBC4\",\n    \"extensionBadge.remoteForeground\": \"#A6ACCD\",\n    \"scrollbarSlider.background\": \"#A6ACCD20\",\n    \"scrollbarSlider.hoverBackground\": \"#A6ACCD10\",\n    \"scrollbarSlider.activeBackground\": \"#80CBC4\",\n    \"tab.unfocusedActiveBorder\": \"#676E95\",\n    \"tab.activeForeground\": \"#FFFFFF\",\n    \"tab.inactiveForeground\": \"#676E95\",\n    \"tab.activeBackground\": \"#292D3E\",\n    \"tab.unfocusedActiveForeground\": \"#A6ACCD\",\n    \"editorWidget.resizeBorder\": \"#80CBC4\",\n    \"editorWidget.border\": \"#80CBC4\",\n    \"notebook.focusedCellBorder\": \"#80CBC4\",\n    \"notebook.inactiveFocusedCellBorder\": \"#80CBC450\",\n    \"statusBar.border\": \"#292D3E60\",\n    \"statusBar.foreground\": \"#676E95\",\n    \"editorBracketMatch.border\": \"#FFCC0050\",\n    \"editorBracketMatch.background\": \"#292D3E\",\n    \"editorOverviewRuler.findMatchForeground\": \"#80CBC4\",\n    \"editorOverviewRuler.border\": \"#292D3E\",\n    \"editorOverviewRuler.errorForeground\": \"#f0717840\",\n    \"editorOverviewRuler.infoForeground\": \"#82AAFF40\",\n    \"editorOverviewRuler.warningForeground\": \"#FFCB6B40\",\n    \"editorInfo.foreground\": \"#82AAFF70\",\n    \"editorWarning.foreground\": \"#FFCB6B70\",\n    \"editorError.foreground\": \"#f0717870\",\n    \"editorHoverWidget.border\": \"#FFFFFF10\",\n    \"titleBar.activeForeground\": \"#A6ACCD\",\n    \"titleBar.inactiveBackground\": \"#292D3E\",\n    \"titleBar.inactiveForeground\": \"#676E95\",\n    \"titleBar.border\": \"#292D3E60\",\n    \"input.foreground\": \"#A6ACCD\",\n    \"input.placeholderForeground\": \"#A6ACCD60\",\n    \"input.border\": \"#FFFFFF10\",\n    \"inputValidation.errorBorder\": \"#f07178\",\n    \"inputValidation.infoBorder\": \"#82AAFF\",\n    \"inputValidation.warningBorder\": \"#FFCB6B\",\n    \"dropdown.border\": \"#FFFFFF10\",\n    \"quickInput.background\": \"#292D3E\",\n    \"quickInput.foreground\": \"#676E95\",\n    \"list.hoverForeground\": \"#FFFFFF\",\n    \"list.inactiveSelectionForeground\": \"#80CBC4\",\n    \"quickInput.list.focusBackground\": \"#A6ACCD20\",\n    \"editorSuggestWidget.background\": \"#292D3E\",\n    \"editorSuggestWidget.foreground\": \"#A6ACCD\",\n    \"editorSuggestWidget.highlightForeground\": \"#80CBC4\",\n    \"editorSuggestWidget.selectedBackground\": \"#00000050\",\n    \"editorSuggestWidget.border\": \"#FFFFFF10\",\n    \"diffEditor.insertedTextBackground\": \"#89DDFF20\",\n    \"diffEditor.removedTextBackground\": \"#ff9cac20\",\n    \"notifications.background\": \"#292D3E\",\n    \"notifications.foreground\": \"#A6ACCD\",\n    \"notificationLink.foreground\": \"#80CBC4\",\n    \"extensionButton.prominentBackground\": \"#C3E88D90\",\n    \"extensionButton.prominentHoverBackground\": \"#C3E88D\",\n    \"extensionButton.prominentForeground\": \"#000000\",\n    \"peekViewEditorGutter.background\": \"#A6ACCD05\",\n    \"peekViewTitleDescription.foreground\": \"#A6ACCD60\",\n    \"peekViewResult.matchHighlightBackground\": \"#717CB450\",\n    \"peekViewEditor.matchHighlightBackground\": \"#717CB450\",\n    \"peekViewResult.selectionBackground\": \"#676E9570\",\n    \"gitDecoration.deletedResourceForeground\": \"#f0717890\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFCB6B90\",\n    \"gitDecoration.modifiedResourceForeground\": \"#82AAFF90\",\n    \"gitDecoration.untrackedResourceForeground\": \"#C3E88D90\",\n    \"gitDecoration.ignoredResourceForeground\": \"#676E9590\",\n    \"breadcrumb.background\": \"#292D3E\",\n    \"breadcrumb.foreground\": \"#676E95\",\n    \"breadcrumb.focusForeground\": \"#A6ACCD\",\n    \"breadcrumb.activeSelectionForeground\": \"#80CBC4\",\n    \"breadcrumbPicker.background\": \"#292D3E\",\n    \"menu.background\": \"#292D3E\",\n    \"menu.foreground\": \"#A6ACCD\",\n    \"menu.selectionBackground\": \"#00000050\",\n    \"menu.selectionForeground\": \"#80CBC4\",\n    \"menu.selectionBorder\": \"#00000030\",\n    \"menu.separatorBackground\": \"#A6ACCD\",\n    \"menubar.selectionBackground\": \"#00000030\",\n    \"menubar.selectionForeground\": \"#80CBC4\",\n    \"menubar.selectionBorder\": \"#00000030\",\n    \"settings.dropdownForeground\": \"#A6ACCD\",\n    \"settings.dropdownBackground\": \"#292D3E\",\n    \"settings.numberInputForeground\": \"#A6ACCD\",\n    \"settings.numberInputBackground\": \"#292D3E\",\n    \"settings.textInputForeground\": \"#A6ACCD\",\n    \"settings.textInputBackground\": \"#292D3E\",\n    \"settings.headerForeground\": \"#80CBC4\",\n    \"settings.modifiedItemIndicator\": \"#80CBC4\",\n    \"settings.checkboxBackground\": \"#292D3E\",\n    \"settings.checkboxForeground\": \"#A6ACCD\",\n    \"listFilterWidget.background\": \"#00000030\",\n    \"listFilterWidget.outline\": \"#00000030\",\n    \"listFilterWidget.noMatchesOutline\": \"#00000030\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/min-dark.json",
    "content": "{\n  \"name\": \"min-dark\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"editorIndentGuide.activeBackground\": \"#383838\",\n    \"editorIndentGuide.background\": \"#2A2A2A\",\n    \"editorRuler.foreground\": \"#2A2A2A\",\n    \"editorLineNumber.foreground\": \"#727272\",\n    \"activityBar.background\": \"#1A1A1A\",\n    \"activityBar.foreground\": \"#7D7D7D\",\n    \"activityBarBadge.background\": \"#383838\",\n    \"badge.background\": \"#383838\",\n    \"badge.foreground\": \"#C1C1C1\",\n    \"button.background\": \"#333\",\n    \"editor.background\": \"#1f1f1f\",\n    \"editor.lineHighlightBorder\": \"#303030\",\n    \"editorGroupHeader.tabsBackground\": \"#1A1A1A\",\n    \"editorGroupHeader.tabsBorder\": \"#1A1A1A\",\n    \"editorSuggestWidget.background\": \"#1A1A1A\",\n    \"focusBorder\": \"#444\",\n    \"foreground\": \"#888888\",\n    \"gitDecoration.ignoredResourceForeground\": \"#444444\",\n    \"input.background\": \"#2A2A2A\",\n    \"input.foreground\": \"#E0E0E0\",\n    \"list.activeSelectionBackground\": \"#212121\",\n    \"list.activeSelectionForeground\": \"#F5F5F5\",\n    \"list.focusBackground\": \"#292929\",\n    \"list.highlightForeground\": \"#EAEAEA\",\n    \"list.hoverBackground\": \"#262626\",\n    \"list.hoverForeground\": \"#9E9E9E\",\n    \"list.inactiveSelectionBackground\": \"#212121\",\n    \"list.inactiveSelectionForeground\": \"#F5F5F5\",\n    \"panelTitle.activeBorder\": \"#1f1f1f\",\n    \"panelTitle.activeForeground\": \"#FAFAFA\",\n    \"panelTitle.inactiveForeground\": \"#484848\",\n    \"peekView.border\": \"#444\",\n    \"peekViewEditor.background\": \"#242424\",\n    \"pickerGroup.border\": \"#363636\",\n    \"pickerGroup.foreground\": \"#EAEAEA\",\n    \"progressBar.background\": \"#FAFAFA\",\n    \"scrollbar.shadow\": \"#1f1f1f\",\n    \"sideBar.background\": \"#1A1A1A\",\n    \"sideBarSectionHeader.background\": \"#202020\",\n    \"statusBar.background\": \"#1A1A1A\",\n    \"statusBar.debuggingBackground\": \"#1A1A1A\",\n    \"statusBar.foreground\": \"#7E7E7E\",\n    \"statusBar.noFolderBackground\": \"#1A1A1A\",\n    \"statusBarItem.remoteForeground\": \"#7E7E7E\",\n    \"statusBarItem.remoteBackground\": \"#1a1a1a00\",\n    \"statusBarItem.prominentBackground\": \"#fafafa1a\",\n    \"tab.activeBorder\": \"#1e1e1e\",\n    \"tab.activeForeground\": \"#FAFAFA\",\n    \"tab.border\": \"#1A1A1A\",\n    \"tab.inactiveBackground\": \"#1A1A1A\",\n    \"tab.inactiveForeground\": \"#727272\",\n    \"textLink.foreground\": \"#CCC\",\n    \"textLink.activeForeground\": \"#fafafa\",\n    \"titleBar.activeBackground\": \"#1A1A1A\",\n    \"titleBar.border\": \"#00000000\",\n    \"terminal.ansiBrightBlack\": \"#5c5c5c\",\n    \"inputOption.activeBackground\": \"#3a3a3a\",\n    \"debugIcon.continueForeground\": \"#FF7A84\",\n    \"debugIcon.disconnectForeground\": \"#FF7A84\",\n    \"debugIcon.pauseForeground\": \"#FF7A84\",\n    \"debugIcon.restartForeground\": \"#79b8ff\",\n    \"debugIcon.startForeground\": \"#79b8ff\",\n    \"debugIcon.stepBackForeground\": \"#FF7A84\",\n    \"debugIcon.stepIntoForeground\": \"#FF7A84\",\n    \"debugIcon.stepOutForeground\": \"#FF7A84\",\n    \"debugIcon.stepOverForeground\": \"#FF7A84\",\n    \"debugIcon.stopForeground\": \"#79b8ff\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#79b8ff\",\n    \"debugIcon.breakpointDisabledForeground\": \"#848484\",\n    \"debugIcon.breakpointForeground\": \"#FF7A84\",\n    \"debugIcon.breakpointStackframeForeground\": \"#79b8ff\",\n    \"debugIcon.breakpointUnverifiedForeground\": \"#848484\",\n    \"symbolIcon.classForeground\": \"#FF9800\",\n    \"symbolIcon.enumeratorForeground\": \"#FF9800\",\n    \"symbolIcon.eventForeground\": \"#FF9800\",\n    \"symbolIcon.methodForeground\": \"#b392f0\",\n    \"symbolIcon.constructorForeground\": \"#b392f0\",\n    \"symbolIcon.functionForeground\": \"#b392f0\",\n    \"symbolIcon.fieldForeground\": \"#79b8ff\",\n    \"symbolIcon.interfaceForeground\": \"#79b8ff\",\n    \"symbolIcon.variableForeground\": \"#79b8ff\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#79b8ff\",\n    \"diffEditor.insertedTextBackground\": \"#3a632a4b\",\n    \"diffEditor.removedTextBackground\": \"#88063852\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#b392f0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.function\",\n        \"keyword.operator.accessor\",\n        \"meta.group.braces.round.function.arguments\",\n        \"meta.template.expression\",\n        \"markup.fenced_code meta.embedded.block\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b392f0\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#FF7A84\"\n      }\n    },\n    {\n      \"scope\": [\"markup.italic.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.link.inline.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"underline\",\n        \"foreground\": \"#1976D2\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n      \"settings\": {\n        \"foreground\": \"#9db1c5\"\n      }\n    },\n    {\n      \"scope\": [\"comment\", \"string.quoted.docstring.multi\"],\n      \"settings\": {\n        \"foreground\": \"#6b737c\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.language\",\n        \"variable.language.this\",\n        \"variable.other.object\",\n        \"variable.other.class\",\n        \"variable.other.constant\",\n        \"meta.property-name\",\n        \"support\",\n        \"string.other.link.title.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#79b8ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.other.placeholder\",\n        \"constant.character.format.placeholder\",\n        \"meta.property-value\",\n        \"keyword.other.unit\",\n        \"keyword.other.template\",\n        \"entity.name.tag.yaml\",\n        \"entity.other.attribute-name\",\n        \"support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f8f8f8\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword\",\n        \"storage.modifier\",\n        \"storage.type\",\n        \"storage.control.clojure\",\n        \"entity.name.function.clojure\",\n        \"support.function.node\",\n        \"punctuation.separator.key-value\",\n        \"punctuation.definition.template-expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#f97583\"\n      }\n    },\n    {\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#FF9800\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.type\",\n        \"entity.other.inherited-class\",\n        \"meta.function-call\",\n        \"meta.instance.constructor\",\n        \"entity.other.attribute-name\",\n        \"entity.name.function\",\n        \"constant.keyword.clojure\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b392f0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.tag\",\n        \"string.quoted\",\n        \"string.regexp\",\n        \"string.interpolated\",\n        \"string.template\",\n        \"string.unquoted.plain.out.yaml\",\n        \"keyword.other.template\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ffab70\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#316bcd\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#cd9731\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#cd3131\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#800080\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.arguments\",\n        \"punctuation.definition.dict\",\n        \"punctuation.separator\",\n        \"meta.function-call.arguments\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#bbbbbb\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown links\",\n      \"scope\": \"markup.underline.link\",\n      \"settings\": {\n        \"foreground\": \"#ffab70\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown list\",\n      \"scope\": [\"beginning.punctuation.definition.list.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#FF7A84\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown punctuation definition\",\n      \"scope\": \"punctuation.definition.metadata.markdown\",\n      \"settings\": {\n        \"foreground\": \"#ffab70\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown punctuation definition brackets\",\n      \"scope\": [\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#79b8ff\"\n      }\n    }\n  ],\n  \"semanticHighlighting\": true\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/min-light.json",
    "content": "{\n  \"name\": \"min-light\",\n  \"type\": \"light\",\n  \"colors\": {\n    \"activityBar.background\": \"#f6f6f6\",\n    \"activityBar.foreground\": \"#9E9E9E\",\n    \"activityBarBadge.background\": \"#616161\",\n    \"badge.background\": \"#E0E0E0\",\n    \"badge.foreground\": \"#616161\",\n    \"button.background\": \"#757575\",\n    \"button.hoverBackground\": \"#616161\",\n    \"editor.background\": \"#ffffff\",\n    \"editor.foreground\": \"#212121\",\n    \"editor.lineHighlightBorder\": \"#f2f2f2\",\n    \"editorBracketMatch.background\": \"#E7F3FF\",\n    \"editorBracketMatch.border\": \"#c8e1ff\",\n    \"editorGroupHeader.tabsBackground\": \"#f6f6f6\",\n    \"editorGroupHeader.tabsBorder\": \"#fff\",\n    \"editorIndentGuide.background\": \"#EEE\",\n    \"editorLineNumber.activeForeground\": \"#757575\",\n    \"editorLineNumber.foreground\": \"#CCC\",\n    \"editorSuggestWidget.background\": \"#F3F3F3\",\n    \"extensionButton.prominentBackground\": \"#000000AA\",\n    \"extensionButton.prominentHoverBackground\": \"#000000BB\",\n    \"focusBorder\": \"#D0D0D0\",\n    \"foreground\": \"#757575\",\n    \"gitDecoration.ignoredResourceForeground\": \"#AAAAAA\",\n    \"input.border\": \"#E9E9E9\",\n    \"list.activeSelectionBackground\": \"#EEE\",\n    \"list.activeSelectionForeground\": \"#212121\",\n    \"list.focusBackground\": \"#ddd\",\n    \"list.focusForeground\": \"#212121\",\n    \"list.highlightForeground\": \"#212121\",\n    \"list.inactiveSelectionBackground\": \"#E0E0E0\",\n    \"list.inactiveSelectionForeground\": \"#212121\",\n    \"panel.background\": \"#fff\",\n    \"panel.border\": \"#f4f4f4\",\n    \"panelTitle.activeBorder\": \"#fff\",\n    \"panelTitle.inactiveForeground\": \"#BDBDBD\",\n    \"peekView.border\": \"#E0E0E0\",\n    \"peekViewEditor.background\": \"#f8f8f8\",\n    \"pickerGroup.foreground\": \"#000\",\n    \"progressBar.background\": \"#000\",\n    \"scrollbar.shadow\": \"#FFF\",\n    \"sideBar.background\": \"#f6f6f6\",\n    \"sideBar.border\": \"#f6f6f6\",\n    \"sideBarSectionHeader.background\": \"#EEE\",\n    \"sideBarTitle.foreground\": \"#999\",\n    \"statusBar.background\": \"#f6f6f6\",\n    \"statusBar.border\": \"#f6f6f6\",\n    \"statusBar.debuggingBackground\": \"#f6f6f6\",\n    \"statusBar.foreground\": \"#7E7E7E\",\n    \"statusBar.noFolderBackground\": \"#f6f6f6\",\n    \"statusBarItem.remoteForeground\": \"#7E7E7E\",\n    \"statusBarItem.remoteBackground\": \"#f6f6f600\",\n    \"statusBarItem.prominentBackground\": \"#0000001a\",\n    \"tab.activeBorder\": \"#FFF\",\n    \"tab.activeForeground\": \"#424242\",\n    \"tab.border\": \"#f6f6f6\",\n    \"tab.inactiveBackground\": \"#f6f6f6\",\n    \"tab.inactiveForeground\": \"#BDBDBD\",\n    \"tab.unfocusedActiveBorder\": \"#fff\",\n    \"terminal.ansiBlack\": \"#333\",\n    \"terminal.ansiBlue\": \"#e0e0e0\",\n    \"terminal.ansiBrightBlack\": \"#a1a1a1\",\n    \"terminal.ansiBrightBlue\": \"#6871ff\",\n    \"terminal.ansiBrightCyan\": \"#57d9ad\",\n    \"terminal.ansiBrightGreen\": \"#a3d900\",\n    \"terminal.ansiBrightMagenta\": \"#a37acc\",\n    \"terminal.ansiBrightRed\": \"#d6656a\",\n    \"terminal.ansiBrightWhite\": \"#7E7E7E\",\n    \"terminal.ansiBrightYellow\": \"#e7c547\",\n    \"terminal.ansiCyan\": \"#4dbf99\",\n    \"terminal.ansiGreen\": \"#77cc00\",\n    \"terminal.ansiMagenta\": \"#9966cc\",\n    \"terminal.ansiRed\": \"#D32F2F\",\n    \"terminal.ansiWhite\": \"#c7c7c7\",\n    \"terminal.ansiYellow\": \"#f29718\",\n    \"terminal.background\": \"#fff\",\n    \"textLink.activeForeground\": \"#000\",\n    \"textLink.foreground\": \"#000\",\n    \"titleBar.activeBackground\": \"#f6f6f6\",\n    \"titleBar.border\": \"#FFFFFF00\",\n    \"titleBar.inactiveBackground\": \"#f6f6f6\",\n    \"inputOption.activeBackground\": \"#EDEDED\",\n    \"debugIcon.continueForeground\": \"#6f42c1\",\n    \"debugIcon.disconnectForeground\": \"#6f42c1\",\n    \"debugIcon.pauseForeground\": \"#6f42c1\",\n    \"debugIcon.restartForeground\": \"#1976D2\",\n    \"debugIcon.startForeground\": \"#1976D2\",\n    \"debugIcon.stepBackForeground\": \"#6f42c1\",\n    \"debugIcon.stepIntoForeground\": \"#6f42c1\",\n    \"debugIcon.stepOutForeground\": \"#6f42c1\",\n    \"debugIcon.stepOverForeground\": \"#6f42c1\",\n    \"debugIcon.stopForeground\": \"#1976D2\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#1976D2\",\n    \"debugIcon.breakpointDisabledForeground\": \"#848484\",\n    \"debugIcon.breakpointForeground\": \"#D32F2F\",\n    \"debugIcon.breakpointStackframeForeground\": \"#1976D2\",\n    \"symbolIcon.classForeground\": \"#dd8500\",\n    \"symbolIcon.enumeratorForeground\": \"#dd8500\",\n    \"symbolIcon.eventForeground\": \"#dd8500\",\n    \"symbolIcon.methodForeground\": \"#6f42c1\",\n    \"symbolIcon.constructorForeground\": \"#6f42c1\",\n    \"symbolIcon.functionForeground\": \"#6f42c1\",\n    \"symbolIcon.fieldForeground\": \"#1976D2\",\n    \"symbolIcon.interfaceForeground\": \"#1976D2\",\n    \"symbolIcon.variableForeground\": \"#1976D2\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#1976D2\",\n    \"diffEditor.removedTextBackground\": \"#e597af52\",\n    \"diffEditor.insertedTextBackground\": \"#b7e7a44b\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#24292eff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.accessor\",\n        \"meta.group.braces.round.function.arguments\",\n        \"meta.template.expression\",\n        \"markup.fenced_code meta.embedded.block\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#24292eff\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"markup.italic.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.link.inline.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"underline\",\n        \"foreground\": \"#1976D2\"\n      }\n    },\n    {\n      \"scope\": [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n      \"settings\": {\n        \"foreground\": \"#2b5581\"\n      }\n    },\n    {\n      \"scope\": [\"comment\", \"string.quoted.docstring.multi\"],\n      \"settings\": {\n        \"foreground\": \"#c2c3c5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.language\",\n        \"constant.other.placeholder\",\n        \"constant.character.format.placeholder\",\n        \"variable.language.this\",\n        \"variable.other.object\",\n        \"variable.other.class\",\n        \"variable.other.constant\",\n        \"meta.property-name\",\n        \"meta.property-value\",\n        \"support\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#1976D2\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword\",\n        \"storage.modifier\",\n        \"storage.type\",\n        \"storage.control.clojure\",\n        \"entity.name.function.clojure\",\n        \"entity.name.tag.yaml\",\n        \"support.function.node\",\n        \"support.type.property-name.json\",\n        \"punctuation.separator.key-value\",\n        \"punctuation.definition.template-expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D32F2F\"\n      }\n    },\n    {\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#FF9800\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.function\",\n        \"entity.name.type\",\n        \"entity.other.inherited-class\",\n        \"meta.function-call\",\n        \"meta.instance.constructor\",\n        \"entity.other.attribute-name\",\n        \"entity.name.function\",\n        \"constant.keyword.clojure\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#6f42c1\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.tag\",\n        \"string.quoted\",\n        \"string.regexp\",\n        \"string.interpolated\",\n        \"string.template\",\n        \"string.unquoted.plain.out.yaml\",\n        \"keyword.other.template\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#22863a\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#316bcd\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#cd9731\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#cd3131\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#800080\"\n      }\n    },\n    {\n      \"scope\": [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#6f42c1\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.arguments\",\n        \"punctuation.definition.dict\",\n        \"punctuation.separator\",\n        \"meta.function-call.arguments\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#212121\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown links\",\n      \"scope\": [\n        \"markup.underline.link\",\n        \"punctuation.definition.metadata.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#22863a\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown list\",\n      \"scope\": [\"beginning.punctuation.definition.list.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#6f42c1\"\n      }\n    },\n    {\n      \"name\": \"[Custom] Markdown punctuation definition brackets\",\n      \"scope\": [\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\",\n        \"string.other.link.title.markdown\",\n        \"string.other.link.description.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d32f2f\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/monokai.json",
    "content": "{\n  \"type\": \"dark\",\n  \"colors\": {\n    \"dropdown.background\": \"#414339\",\n    \"list.activeSelectionBackground\": \"#75715E\",\n    \"quickInputList.focusBackground\": \"#414339\",\n    \"dropdown.listBackground\": \"#1e1f1c\",\n    \"list.inactiveSelectionBackground\": \"#414339\",\n    \"list.hoverBackground\": \"#3e3d32\",\n    \"list.dropBackground\": \"#414339\",\n    \"list.highlightForeground\": \"#f8f8f2\",\n    \"button.background\": \"#75715E\",\n    \"editor.background\": \"#272822\",\n    \"editor.foreground\": \"#f8f8f2\",\n    \"selection.background\": \"#878b9180\",\n    \"editor.selectionHighlightBackground\": \"#575b6180\",\n    \"editor.selectionBackground\": \"#878b9180\",\n    \"minimap.selectionHighlight\": \"#878b9180\",\n    \"editor.wordHighlightBackground\": \"#4a4a7680\",\n    \"editor.wordHighlightStrongBackground\": \"#6a6a9680\",\n    \"editor.lineHighlightBackground\": \"#3e3d32\",\n    \"editorLineNumber.activeForeground\": \"#c2c2bf\",\n    \"editorCursor.foreground\": \"#f8f8f0\",\n    \"editorWhitespace.foreground\": \"#464741\",\n    \"editorIndentGuide.background\": \"#464741\",\n    \"editorIndentGuide.activeBackground\": \"#767771\",\n    \"editorGroupHeader.tabsBackground\": \"#1e1f1c\",\n    \"editorGroup.dropBackground\": \"#41433980\",\n    \"tab.inactiveBackground\": \"#34352f\",\n    \"tab.border\": \"#1e1f1c\",\n    \"tab.inactiveForeground\": \"#ccccc7\",\n    \"tab.lastPinnedBorder\": \"#414339\",\n    \"widget.shadow\": \"#00000098\",\n    \"progressBar.background\": \"#75715E\",\n    \"badge.background\": \"#75715E\",\n    \"badge.foreground\": \"#f8f8f2\",\n    \"editorLineNumber.foreground\": \"#90908a\",\n    \"panelTitle.activeForeground\": \"#f8f8f2\",\n    \"panelTitle.activeBorder\": \"#75715E\",\n    \"panelTitle.inactiveForeground\": \"#75715E\",\n    \"panel.border\": \"#414339\",\n    \"settings.focusedRowBackground\": \"#4143395A\",\n    \"titleBar.activeBackground\": \"#1e1f1c\",\n    \"statusBar.background\": \"#414339\",\n    \"statusBar.noFolderBackground\": \"#414339\",\n    \"statusBar.debuggingBackground\": \"#75715E\",\n    \"statusBarItem.remoteBackground\": \"#AC6218\",\n    \"ports.iconRunningProcessForeground\": \"#ccccc7\",\n    \"activityBar.background\": \"#272822\",\n    \"activityBar.foreground\": \"#f8f8f2\",\n    \"sideBar.background\": \"#1e1f1c\",\n    \"sideBarSectionHeader.background\": \"#272822\",\n    \"menu.background\": \"#1e1f1c\",\n    \"menu.foreground\": \"#cccccc\",\n    \"pickerGroup.foreground\": \"#75715E\",\n    \"input.background\": \"#414339\",\n    \"inputOption.activeBorder\": \"#75715E\",\n    \"focusBorder\": \"#75715E\",\n    \"editorWidget.background\": \"#1e1f1c\",\n    \"debugToolBar.background\": \"#1e1f1c\",\n    \"diffEditor.insertedTextBackground\": \"#4b661680\",\n    \"diffEditor.removedTextBackground\": \"#90274A70\",\n    \"inputValidation.errorBackground\": \"#90274A\",\n    \"inputValidation.errorBorder\": \"#f92672\",\n    \"inputValidation.warningBackground\": \"#848528\",\n    \"inputValidation.warningBorder\": \"#e2e22e\",\n    \"inputValidation.infoBackground\": \"#546190\",\n    \"inputValidation.infoBorder\": \"#819aff\",\n    \"editorHoverWidget.background\": \"#414339\",\n    \"editorHoverWidget.border\": \"#75715E\",\n    \"editorSuggestWidget.background\": \"#272822\",\n    \"editorSuggestWidget.border\": \"#75715E\",\n    \"editorGroup.border\": \"#34352f\",\n    \"peekView.border\": \"#75715E\",\n    \"peekViewEditor.background\": \"#272822\",\n    \"peekViewResult.background\": \"#1e1f1c\",\n    \"peekViewTitle.background\": \"#1e1f1c\",\n    \"peekViewResult.selectionBackground\": \"#414339\",\n    \"peekViewResult.matchHighlightBackground\": \"#75715E\",\n    \"peekViewEditor.matchHighlightBackground\": \"#75715E\",\n    \"terminal.ansiBlack\": \"#333333\",\n    \"terminal.ansiRed\": \"#C4265E\",\n    \"terminal.ansiGreen\": \"#86B42B\",\n    \"terminal.ansiYellow\": \"#B3B42B\",\n    \"terminal.ansiBlue\": \"#6A7EC8\",\n    \"terminal.ansiMagenta\": \"#8C6BC8\",\n    \"terminal.ansiCyan\": \"#56ADBC\",\n    \"terminal.ansiWhite\": \"#e3e3dd\",\n    \"terminal.ansiBrightBlack\": \"#666666\",\n    \"terminal.ansiBrightRed\": \"#f92672\",\n    \"terminal.ansiBrightGreen\": \"#A6E22E\",\n    \"terminal.ansiBrightYellow\": \"#e2e22e\",\n    \"terminal.ansiBrightBlue\": \"#819aff\",\n    \"terminal.ansiBrightMagenta\": \"#AE81FF\",\n    \"terminal.ansiBrightCyan\": \"#66D9EF\",\n    \"terminal.ansiBrightWhite\": \"#f8f8f2\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.embedded\",\n        \"source.groovy.embedded\",\n        \"string meta.image.inline.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#88846f\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#E6DB74\"\n      }\n    },\n    {\n      \"name\": \"Template Definition\",\n      \"scope\": [\n        \"punctuation.definition.template-expression\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"Reset JavaScript string interpolation expression\",\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#AE81FF\"\n      }\n    },\n    {\n      \"name\": \"Built-in constant\",\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#AE81FF\"\n      }\n    },\n    {\n      \"name\": \"User-defined constant\",\n      \"scope\": \"constant.character, constant.other\",\n      \"settings\": {\n        \"foreground\": \"#AE81FF\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#F8F8F2\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"Storage type\",\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#66D9EF\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": \"entity.name.type, entity.name.class, entity.name.namespace, entity.name.scope-resolution\",\n      \"settings\": {\n        \"fontStyle\": \"underline\",\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"Inherited class\",\n      \"scope\": \"entity.other.inherited-class\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"Function name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"Function argument\",\n      \"scope\": \"variable.parameter\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#FD971F\"\n      }\n    },\n    {\n      \"name\": \"Tag name\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"Tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"Library function\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#66D9EF\"\n      }\n    },\n    {\n      \"name\": \"Library constant\",\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#66D9EF\"\n      }\n    },\n    {\n      \"name\": \"Library class/type\",\n      \"scope\": \"support.type, support.class\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#66D9EF\"\n      }\n    },\n    {\n      \"name\": \"Library variable\",\n      \"scope\": \"support.other.variable\",\n      \"settings\": {\n        \"fontStyle\": \"\"\n      }\n    },\n    {\n      \"name\": \"Invalid\",\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#F44747\"\n      }\n    },\n    {\n      \"name\": \"Invalid deprecated\",\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"foreground\": \"#F44747\"\n      }\n    },\n    {\n      \"name\": \"JSON String\",\n      \"scope\": \"meta.structure.dictionary.json string.quoted.double.json\",\n      \"settings\": {\n        \"foreground\": \"#CFCFC2\"\n      }\n    },\n    {\n      \"name\": \"diff.header\",\n      \"scope\": \"meta.diff, meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#75715E\"\n      }\n    },\n    {\n      \"name\": \"diff.deleted\",\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"diff.inserted\",\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"diff.changed\",\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#E6DB74\"\n      }\n    },\n    {\n      \"scope\": \"constant.numeric.line-number.find-in-files - match\",\n      \"settings\": {\n        \"foreground\": \"#AE81FFA0\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.filename.find-in-files\",\n      \"settings\": {\n        \"foreground\": \"#E6DB74\"\n      }\n    },\n    {\n      \"name\": \"Markup Quote\",\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#F92672\"\n      }\n    },\n    {\n      \"name\": \"Markup Lists\",\n      \"scope\": \"markup.list\",\n      \"settings\": {\n        \"foreground\": \"#E6DB74\"\n      }\n    },\n    {\n      \"name\": \"Markup Styling\",\n      \"scope\": \"markup.bold, markup.italic\",\n      \"settings\": {\n        \"foreground\": \"#66D9EF\"\n      }\n    },\n    {\n      \"name\": \"Markup Inline\",\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#FD971F\"\n      }\n    },\n    {\n      \"name\": \"Markup Headings\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"name\": \"Markup Setext Header\",\n      \"scope\": \"markup.heading.setext\",\n      \"settings\": {\n        \"foreground\": \"#A6E22E\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markup Headings\",\n      \"scope\": \"markup.heading.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown Quote\",\n      \"scope\": \"markup.quote.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#75715E\"\n      }\n    },\n    {\n      \"name\": \"Markdown Bold\",\n      \"scope\": \"markup.bold.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markdown Link Title/Description\",\n      \"scope\": \"string.other.link.title.markdown,string.other.link.description.markdown\",\n      \"settings\": {\n        \"foreground\": \"#AE81FF\"\n      }\n    },\n    {\n      \"name\": \"Markdown Underline Link/Image\",\n      \"scope\": \"markup.underline.link.markdown,markup.underline.link.image.markdown\",\n      \"settings\": {\n        \"foreground\": \"#E6DB74\"\n      }\n    },\n    {\n      \"name\": \"Markdown Emphasis\",\n      \"scope\": \"markup.italic.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"name\": \"Markdown Punctuation Definition Link\",\n      \"scope\": \"markup.list.unnumbered.markdown, markup.list.numbered.markdown\",\n      \"settings\": {\n        \"foreground\": \"#f8f8f2\"\n      }\n    },\n    {\n      \"name\": \"Markdown List Punctuation\",\n      \"scope\": [\"punctuation.definition.list.begin.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#A6E22E\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#6796e6\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#cd9731\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#b267e6\"\n      }\n    },\n    {\n      \"name\": \"this.self\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#FD971F\"\n      }\n    }\n  ],\n  \"semanticHighlighting\": true,\n  \"name\": \"monokai\"\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/nord.json",
    "content": "{\n  \"name\": \"nord\",\n  \"type\": \"dark\",\n  \"semanticHighlighting\": true,\n  \"colors\": {\n    \"focusBorder\": \"#3b4252\",\n    \"foreground\": \"#d8dee9\",\n    \"activityBar.background\": \"#2e3440\",\n    \"activityBar.dropBackground\": \"#3b4252\",\n    \"activityBar.foreground\": \"#d8dee9\",\n    \"activityBar.activeBorder\": \"#88c0d0\",\n    \"activityBar.activeBackground\": \"#3b4252\",\n    \"activityBarBadge.background\": \"#88c0d0\",\n    \"activityBarBadge.foreground\": \"#2e3440\",\n    \"badge.foreground\": \"#2e3440\",\n    \"badge.background\": \"#88c0d0\",\n    \"button.background\": \"#88c0d0ee\",\n    \"button.foreground\": \"#2e3440\",\n    \"button.hoverBackground\": \"#88c0d0\",\n    \"button.secondaryBackground\": \"#434c5e\",\n    \"button.secondaryForeground\": \"#d8dee9\",\n    \"button.secondaryHoverBackground\": \"#4c566a\",\n    \"charts.red\": \"#bf616a\",\n    \"charts.blue\": \"#81a1c1\",\n    \"charts.yellow\": \"#ebcb8b\",\n    \"charts.orange\": \"#d08770\",\n    \"charts.green\": \"#a3be8c\",\n    \"charts.purple\": \"#b48ead\",\n    \"charts.foreground\": \"#d8dee9\",\n    \"charts.lines\": \"#88c0d0\",\n    \"debugConsole.infoForeground\": \"#88c0d0\",\n    \"debugConsole.warningForeground\": \"#ebcb8b\",\n    \"debugConsole.errorForeground\": \"#bf616a\",\n    \"debugConsole.sourceForeground\": \"#616e88\",\n    \"debugConsoleInputIcon.foreground\": \"#81a1c1\",\n    \"debugExceptionWidget.background\": \"#4c566a\",\n    \"debugExceptionWidget.border\": \"#2e3440\",\n    \"debugToolBar.background\": \"#3b4252\",\n    \"descriptionForeground\": \"#d8dee9e6\",\n    \"diffEditor.insertedTextBackground\": \"#81a1c133\",\n    \"diffEditor.removedTextBackground\": \"#bf616a4d\",\n    \"dropdown.background\": \"#3b4252\",\n    \"dropdown.border\": \"#3b4252\",\n    \"dropdown.foreground\": \"#d8dee9\",\n    \"editorActiveLineNumber.foreground\": \"#d8dee9cc\",\n    \"editorCursor.foreground\": \"#d8dee9\",\n    \"editorHint.border\": \"#ebcb8b00\",\n    \"editorHint.foreground\": \"#ebcb8b\",\n    \"editorIndentGuide.background\": \"#434c5eb3\",\n    \"editorIndentGuide.activeBackground\": \"#4c566a\",\n    \"editorInlayHint.background\": \"#434c5e\",\n    \"editorInlayHint.foreground\": \"#d8dee9\",\n    \"editorLineNumber.foreground\": \"#4c566a\",\n    \"editorLineNumber.activeForeground\": \"#d8dee9\",\n    \"editorWhitespace.foreground\": \"#4c566ab3\",\n    \"editorWidget.background\": \"#2e3440\",\n    \"editorWidget.border\": \"#3b4252\",\n    \"editor.background\": \"#2e3440\",\n    \"editor.foreground\": \"#d8dee9\",\n    \"editor.hoverHighlightBackground\": \"#3b4252\",\n    \"editor.findMatchBackground\": \"#88c0d066\",\n    \"editor.findMatchHighlightBackground\": \"#88c0d033\",\n    \"editor.findRangeHighlightBackground\": \"#88c0d033\",\n    \"editor.lineHighlightBackground\": \"#3b4252\",\n    \"editor.lineHighlightBorder\": \"#3b4252\",\n    \"editor.inactiveSelectionBackground\": \"#434c5ecc\",\n    \"editor.inlineValuesBackground\": \"#4c566a\",\n    \"editor.inlineValuesForeground\": \"#eceff4\",\n    \"editor.selectionBackground\": \"#434c5ecc\",\n    \"editor.selectionHighlightBackground\": \"#434c5ecc\",\n    \"editor.rangeHighlightBackground\": \"#434c5e52\",\n    \"editor.wordHighlightBackground\": \"#81a1c166\",\n    \"editor.wordHighlightStrongBackground\": \"#81a1c199\",\n    \"editor.stackFrameHighlightBackground\": \"#5e81ac\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#5e81ac\",\n    \"editorError.foreground\": \"#bf616a\",\n    \"editorError.border\": \"#bf616a00\",\n    \"editorWarning.foreground\": \"#ebcb8b\",\n    \"editorWarning.border\": \"#ebcb8b00\",\n    \"editorBracketMatch.background\": \"#2e344000\",\n    \"editorBracketMatch.border\": \"#88c0d0\",\n    \"editorBracketHighlight.foreground1\": \"#8fbcbb\",\n    \"editorBracketHighlight.foreground2\": \"#88c0d0\",\n    \"editorBracketHighlight.foreground3\": \"#81a1c1\",\n    \"editorBracketHighlight.foreground4\": \"#5e81ac\",\n    \"editorBracketHighlight.foreground5\": \"#8fbcbb\",\n    \"editorBracketHighlight.foreground6\": \"#88c0d0\",\n    \"editorBracketHighlight.unexpectedBracket.foreground\": \"#bf616a\",\n    \"editorCodeLens.foreground\": \"#4c566a\",\n    \"editorGroup.background\": \"#2e3440\",\n    \"editorGroup.border\": \"#3b425201\",\n    \"editorGroup.dropBackground\": \"#3b425299\",\n    \"editorGroupHeader.border\": \"#3b425200\",\n    \"editorGroupHeader.noTabsBackground\": \"#2e3440\",\n    \"editorGroupHeader.tabsBackground\": \"#2e3440\",\n    \"editorGroupHeader.tabsBorder\": \"#3b425200\",\n    \"editorGutter.background\": \"#2e3440\",\n    \"editorGutter.modifiedBackground\": \"#ebcb8b\",\n    \"editorGutter.addedBackground\": \"#a3be8c\",\n    \"editorGutter.deletedBackground\": \"#bf616a\",\n    \"editorHoverWidget.background\": \"#3b4252\",\n    \"editorHoverWidget.border\": \"#3b4252\",\n    \"editorLink.activeForeground\": \"#88c0d0\",\n    \"editorMarkerNavigation.background\": \"#5e81acc0\",\n    \"editorMarkerNavigationError.background\": \"#bf616ac0\",\n    \"editorMarkerNavigationWarning.background\": \"#ebcb8bc0\",\n    \"editorOverviewRuler.border\": \"#3b4252\",\n    \"editorOverviewRuler.currentContentForeground\": \"#3b4252\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#3b4252\",\n    \"editorOverviewRuler.findMatchForeground\": \"#88c0d066\",\n    \"editorOverviewRuler.rangeHighlightForeground\": \"#88c0d066\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#88c0d066\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#88c0d066\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#88c0d066\",\n    \"editorOverviewRuler.modifiedForeground\": \"#ebcb8b\",\n    \"editorOverviewRuler.addedForeground\": \"#a3be8c\",\n    \"editorOverviewRuler.deletedForeground\": \"#bf616a\",\n    \"editorOverviewRuler.errorForeground\": \"#bf616a\",\n    \"editorOverviewRuler.warningForeground\": \"#ebcb8b\",\n    \"editorOverviewRuler.infoForeground\": \"#81a1c1\",\n    \"editorRuler.foreground\": \"#434c5e\",\n    \"editorSuggestWidget.background\": \"#2e3440\",\n    \"editorSuggestWidget.border\": \"#3b4252\",\n    \"editorSuggestWidget.foreground\": \"#d8dee9\",\n    \"editorSuggestWidget.focusHighlightForeground\": \"#88c0d0\",\n    \"editorSuggestWidget.highlightForeground\": \"#88c0d0\",\n    \"editorSuggestWidget.selectedBackground\": \"#434c5e\",\n    \"editorSuggestWidget.selectedForeground\": \"#d8dee9\",\n    \"extensionButton.prominentForeground\": \"#d8dee9\",\n    \"extensionButton.prominentBackground\": \"#434c5e\",\n    \"extensionButton.prominentHoverBackground\": \"#4c566a\",\n    \"errorForeground\": \"#bf616a\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ebcb8b\",\n    \"gitDecoration.deletedResourceForeground\": \"#bf616a\",\n    \"gitDecoration.untrackedResourceForeground\": \"#a3be8c\",\n    \"gitDecoration.ignoredResourceForeground\": \"#d8dee966\",\n    \"gitDecoration.conflictingResourceForeground\": \"#5e81ac\",\n    \"gitDecoration.submoduleResourceForeground\": \"#8fbcbb\",\n    \"gitDecoration.stageDeletedResourceForeground\": \"#bf616a\",\n    \"gitDecoration.stageModifiedResourceForeground\": \"#ebcb8b\",\n    \"input.background\": \"#3b4252\",\n    \"input.foreground\": \"#d8dee9\",\n    \"input.placeholderForeground\": \"#d8dee999\",\n    \"input.border\": \"#3b4252\",\n    \"inputOption.activeBackground\": \"#5e81ac\",\n    \"inputOption.activeBorder\": \"#5e81ac\",\n    \"inputOption.activeForeground\": \"#eceff4\",\n    \"inputValidation.errorBackground\": \"#bf616a\",\n    \"inputValidation.errorBorder\": \"#bf616a\",\n    \"inputValidation.infoBackground\": \"#81a1c1\",\n    \"inputValidation.infoBorder\": \"#81a1c1\",\n    \"inputValidation.warningBackground\": \"#d08770\",\n    \"inputValidation.warningBorder\": \"#d08770\",\n    \"keybindingLabel.background\": \"#4c566a\",\n    \"keybindingLabel.border\": \"#4c566a\",\n    \"keybindingLabel.bottomBorder\": \"#4c566a\",\n    \"keybindingLabel.foreground\": \"#d8dee9\",\n    \"list.activeSelectionBackground\": \"#88c0d0\",\n    \"list.activeSelectionForeground\": \"#2e3440\",\n    \"list.inactiveSelectionBackground\": \"#434c5e\",\n    \"list.inactiveSelectionForeground\": \"#d8dee9\",\n    \"list.inactiveFocusBackground\": \"#434c5ecc\",\n    \"list.hoverForeground\": \"#eceff4\",\n    \"list.focusForeground\": \"#d8dee9\",\n    \"list.focusBackground\": \"#88c0d099\",\n    \"list.focusHighlightForeground\": \"#eceff4\",\n    \"list.hoverBackground\": \"#3b4252\",\n    \"list.dropBackground\": \"#88c0d099\",\n    \"list.highlightForeground\": \"#88c0d0\",\n    \"list.errorForeground\": \"#bf616a\",\n    \"list.warningForeground\": \"#ebcb8b\",\n    \"merge.currentHeaderBackground\": \"#81a1c166\",\n    \"merge.currentContentBackground\": \"#81a1c14d\",\n    \"merge.incomingHeaderBackground\": \"#8fbcbb66\",\n    \"merge.incomingContentBackground\": \"#8fbcbb4d\",\n    \"merge.border\": \"#3b425200\",\n    \"minimap.background\": \"#2e3440\",\n    \"minimap.errorHighlight\": \"#bf616acc\",\n    \"minimap.findMatchHighlight\": \"#88c0d0\",\n    \"minimap.selectionHighlight\": \"#88c0d0cc\",\n    \"minimap.warningHighlight\": \"#ebcb8bcc\",\n    \"minimapGutter.addedBackground\": \"#a3be8c\",\n    \"minimapGutter.deletedBackground\": \"#bf616a\",\n    \"minimapGutter.modifiedBackground\": \"#ebcb8b\",\n    \"minimapSlider.activeBackground\": \"#434c5eaa\",\n    \"minimapSlider.background\": \"#434c5e99\",\n    \"minimapSlider.hoverBackground\": \"#434c5eaa\",\n    \"notification.background\": \"#3b4252\",\n    \"notification.buttonBackground\": \"#434c5e\",\n    \"notification.buttonForeground\": \"#d8dee9\",\n    \"notification.buttonHoverBackground\": \"#4c566a\",\n    \"notification.errorBackground\": \"#bf616a\",\n    \"notification.errorForeground\": \"#2e3440\",\n    \"notification.foreground\": \"#d8dee9\",\n    \"notification.infoBackground\": \"#88c0d0\",\n    \"notification.infoForeground\": \"#2e3440\",\n    \"notification.warningBackground\": \"#ebcb8b\",\n    \"notification.warningForeground\": \"#2e3440\",\n    \"notificationCenter.border\": \"#3b425200\",\n    \"notificationCenterHeader.background\": \"#2e3440\",\n    \"notificationCenterHeader.foreground\": \"#88c0d0\",\n    \"notificationLink.foreground\": \"#88c0d0\",\n    \"notifications.background\": \"#3b4252\",\n    \"notifications.border\": \"#2e3440\",\n    \"notifications.foreground\": \"#d8dee9\",\n    \"notificationToast.border\": \"#3b425200\",\n    \"panel.background\": \"#2e3440\",\n    \"panel.border\": \"#3b4252\",\n    \"panelTitle.activeBorder\": \"#88c0d000\",\n    \"panelTitle.activeForeground\": \"#88c0d0\",\n    \"panelTitle.inactiveForeground\": \"#d8dee9\",\n    \"peekView.border\": \"#4c566a\",\n    \"peekViewEditor.background\": \"#2e3440\",\n    \"peekViewEditorGutter.background\": \"#2e3440\",\n    \"peekViewEditor.matchHighlightBackground\": \"#88c0d04d\",\n    \"peekViewResult.background\": \"#2e3440\",\n    \"peekViewResult.fileForeground\": \"#88c0d0\",\n    \"peekViewResult.lineForeground\": \"#d8dee966\",\n    \"peekViewResult.matchHighlightBackground\": \"#88c0d0cc\",\n    \"peekViewResult.selectionBackground\": \"#434c5e\",\n    \"peekViewResult.selectionForeground\": \"#d8dee9\",\n    \"peekViewTitle.background\": \"#3b4252\",\n    \"peekViewTitleDescription.foreground\": \"#d8dee9\",\n    \"peekViewTitleLabel.foreground\": \"#88c0d0\",\n    \"pickerGroup.border\": \"#3b4252\",\n    \"pickerGroup.foreground\": \"#88c0d0\",\n    \"progressBar.background\": \"#88c0d0\",\n    \"quickInputList.focusBackground\": \"#88c0d0\",\n    \"quickInputList.focusForeground\": \"#2e3440\",\n    \"sash.hoverBorder\": \"#88c0d0\",\n    \"scrollbar.shadow\": \"#00000066\",\n    \"scrollbarSlider.activeBackground\": \"#434c5eaa\",\n    \"scrollbarSlider.background\": \"#434c5e99\",\n    \"scrollbarSlider.hoverBackground\": \"#434c5eaa\",\n    \"selection.background\": \"#88c0d099\",\n    \"sideBar.background\": \"#2e3440\",\n    \"sideBar.foreground\": \"#d8dee9\",\n    \"sideBar.border\": \"#3b4252\",\n    \"sideBarSectionHeader.background\": \"#3b4252\",\n    \"sideBarSectionHeader.foreground\": \"#d8dee9\",\n    \"sideBarTitle.foreground\": \"#d8dee9\",\n    \"statusBar.background\": \"#3b4252\",\n    \"statusBar.debuggingBackground\": \"#5e81ac\",\n    \"statusBar.debuggingForeground\": \"#d8dee9\",\n    \"statusBar.noFolderForeground\": \"#d8dee9\",\n    \"statusBar.noFolderBackground\": \"#3b4252\",\n    \"statusBar.foreground\": \"#d8dee9\",\n    \"statusBarItem.activeBackground\": \"#4c566a\",\n    \"statusBarItem.hoverBackground\": \"#434c5e\",\n    \"statusBarItem.prominentBackground\": \"#3b4252\",\n    \"statusBarItem.prominentHoverBackground\": \"#434c5e\",\n    \"statusBarItem.errorBackground\": \"#3b4252\",\n    \"statusBarItem.errorForeground\": \"#bf616a\",\n    \"statusBarItem.warningBackground\": \"#ebcb8b\",\n    \"statusBarItem.warningForeground\": \"#2e3440\",\n    \"statusBar.border\": \"#3b425200\",\n    \"tab.activeBackground\": \"#3b4252\",\n    \"tab.activeForeground\": \"#d8dee9\",\n    \"tab.border\": \"#3b425200\",\n    \"tab.activeBorder\": \"#88c0d000\",\n    \"tab.unfocusedActiveBorder\": \"#88c0d000\",\n    \"tab.inactiveBackground\": \"#2e3440\",\n    \"tab.inactiveForeground\": \"#d8dee966\",\n    \"tab.unfocusedActiveForeground\": \"#d8dee999\",\n    \"tab.unfocusedInactiveForeground\": \"#d8dee966\",\n    \"tab.hoverBackground\": \"#3b4252cc\",\n    \"tab.unfocusedHoverBackground\": \"#3b4252b3\",\n    \"tab.hoverBorder\": \"#88c0d000\",\n    \"tab.unfocusedHoverBorder\": \"#88c0d000\",\n    \"tab.activeBorderTop\": \"#88c0d000\",\n    \"tab.unfocusedActiveBorderTop\": \"#88c0d000\",\n    \"tab.lastPinnedBorder\": \"#4c566a\",\n    \"terminal.background\": \"#2e3440\",\n    \"terminal.foreground\": \"#d8dee9\",\n    \"terminal.ansiBlack\": \"#3b4252\",\n    \"terminal.ansiRed\": \"#bf616a\",\n    \"terminal.ansiGreen\": \"#a3be8c\",\n    \"terminal.ansiYellow\": \"#ebcb8b\",\n    \"terminal.ansiBlue\": \"#81a1c1\",\n    \"terminal.ansiMagenta\": \"#b48ead\",\n    \"terminal.ansiCyan\": \"#88c0d0\",\n    \"terminal.ansiWhite\": \"#e5e9f0\",\n    \"terminal.ansiBrightBlack\": \"#4c566a\",\n    \"terminal.ansiBrightRed\": \"#bf616a\",\n    \"terminal.ansiBrightGreen\": \"#a3be8c\",\n    \"terminal.ansiBrightYellow\": \"#ebcb8b\",\n    \"terminal.ansiBrightBlue\": \"#81a1c1\",\n    \"terminal.ansiBrightMagenta\": \"#b48ead\",\n    \"terminal.ansiBrightCyan\": \"#8fbcbb\",\n    \"terminal.ansiBrightWhite\": \"#eceff4\",\n    \"terminal.tab.activeBorder\": \"#88c0d0\",\n    \"textBlockQuote.background\": \"#3b4252\",\n    \"textBlockQuote.border\": \"#81a1c1\",\n    \"textCodeBlock.background\": \"#4c566a\",\n    \"textLink.activeForeground\": \"#88c0d0\",\n    \"textLink.foreground\": \"#88c0d0\",\n    \"textPreformat.foreground\": \"#8fbcbb\",\n    \"textSeparator.foreground\": \"#eceff4\",\n    \"titleBar.activeBackground\": \"#2e3440\",\n    \"titleBar.activeForeground\": \"#d8dee9\",\n    \"titleBar.border\": \"#2e344000\",\n    \"titleBar.inactiveBackground\": \"#2e3440\",\n    \"titleBar.inactiveForeground\": \"#d8dee966\",\n    \"tree.indentGuidesStroke\": \"#616e88\",\n    \"walkThrough.embeddedEditorBackground\": \"#2e3440\",\n    \"welcomePage.buttonBackground\": \"#434c5e\",\n    \"welcomePage.buttonHoverBackground\": \"#4c566a\",\n    \"widget.shadow\": \"#00000066\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#d8dee9ff\",\n        \"background\": \"#2e3440ff\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"strong\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#616E88\"\n      }\n    },\n    {\n      \"name\": \"Constant Character\",\n      \"scope\": \"constant.character\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Constant Character Escape\",\n      \"scope\": \"constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Constant Language\",\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Constant Numeric\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#B48EAD\"\n      }\n    },\n    {\n      \"name\": \"Constant Regexp\",\n      \"scope\": \"constant.regexp\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Entity Name Class/Type\",\n      \"scope\": [\"entity.name.class\", \"entity.name.type.class\"],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Entity Name Function\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"Entity Name Tag\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Entity Other Attribute Name\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Entity Other Inherited Class\",\n      \"scope\": \"entity.other.inherited-class\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Invalid Deprecated\",\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\",\n        \"background\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Invalid Illegal\",\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\",\n        \"background\": \"#BF616A\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Keyword Operator\",\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Keyword Other New\",\n      \"scope\": \"keyword.other.new\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Markup Bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markup Changed\",\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Markup Deleted\",\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#BF616A\"\n      }\n    },\n    {\n      \"name\": \"Markup Inserted\",\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#A3BE8C\"\n      }\n    },\n    {\n      \"name\": \"Meta Preprocessor\",\n      \"scope\": \"meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation\",\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Definition Parameters\",\n      \"scope\": [\n        \"punctuation.definition.method-parameters\",\n        \"punctuation.definition.function-parameters\",\n        \"punctuation.definition.parameters\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Definition Tag\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Definition Comment\",\n      \"scope\": [\n        \"punctuation.definition.comment\",\n        \"punctuation.end.definition.comment\",\n        \"punctuation.start.definition.comment\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#616E88\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Section\",\n      \"scope\": \"punctuation.section\",\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Section Embedded\",\n      \"scope\": [\n        \"punctuation.section.embedded.begin\",\n        \"punctuation.section.embedded.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Terminator\",\n      \"scope\": \"punctuation.terminator\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Punctuation Variable\",\n      \"scope\": \"punctuation.definition.variable\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#A3BE8C\"\n      }\n    },\n    {\n      \"name\": \"String Regexp\",\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"Support Class\",\n      \"scope\": \"support.class\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Support Constant\",\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Support Function\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"Support Function Construct\",\n      \"scope\": \"support.function.construct\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Support Type\",\n      \"scope\": \"support.type\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Support Type Exception\",\n      \"scope\": \"support.type.exception\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"Token Debug\",\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#b48ead\"\n      }\n    },\n    {\n      \"name\": \"Token Error\",\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#bf616a\"\n      }\n    },\n    {\n      \"name\": \"Token Info\",\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#88c0d0\"\n      }\n    },\n    {\n      \"name\": \"Token Warning\",\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#ebcb8b\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable.other\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"Variable Language\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"Variable Parameter\",\n      \"scope\": \"variable.parameter\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[C/CPP] Punctuation Separator Pointer-Access\",\n      \"scope\": \"punctuation.separator.pointer-access.c\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[C/CPP] Meta Preprocessor Include\",\n      \"scope\": [\n        \"source.c meta.preprocessor.include\",\n        \"source.c string.quoted.other.lt-gt.include\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[C/CPP] Conditional Directive\",\n      \"scope\": [\n        \"source.cpp keyword.control.directive.conditional\",\n        \"source.cpp punctuation.definition.directive\",\n        \"source.c keyword.control.directive.conditional\",\n        \"source.c punctuation.definition.directive\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5E81AC\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"[CSS] Constant Other Color RGB Value\",\n      \"scope\": \"source.css constant.other.color.rgb-value\",\n      \"settings\": {\n        \"foreground\": \"#B48EAD\"\n      }\n    },\n    {\n      \"name\": \"[CSS](Function) Meta Property-Value\",\n      \"scope\": \"source.css meta.property-value\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[CSS] Media Queries\",\n      \"scope\": [\n        \"source.css keyword.control.at-rule.media\",\n        \"source.css keyword.control.at-rule.media punctuation.definition.keyword\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D08770\"\n      }\n    },\n    {\n      \"name\": \"[CSS] Punctuation Definition Keyword\",\n      \"scope\": \"source.css punctuation.definition.keyword\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[CSS] Support Type Property Name\",\n      \"scope\": \"source.css support.type.property-name\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[diff] Meta Range Context\",\n      \"scope\": \"source.diff meta.diff.range.context\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[diff] Meta Header From-File\",\n      \"scope\": \"source.diff meta.diff.header.from-file\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[diff] Punctuation Definition From-File\",\n      \"scope\": \"source.diff punctuation.definition.from-file\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[diff] Punctuation Definition Range\",\n      \"scope\": \"source.diff punctuation.definition.range\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[diff] Punctuation Definition Separator\",\n      \"scope\": \"source.diff punctuation.definition.separator\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Elixir](JakeBecker.elixir-ls) module names\",\n      \"scope\": \"entity.name.type.module.elixir\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Elixir](JakeBecker.elixir-ls) module attributes\",\n      \"scope\": \"variable.other.readwrite.module.elixir\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"[Elixir](JakeBecker.elixir-ls) atoms\",\n      \"scope\": \"constant.other.symbol.elixir\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"[Elixir](JakeBecker.elixir-ls) modules\",\n      \"scope\": \"variable.other.constant.elixir\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Go] String Format Placeholder\",\n      \"scope\": \"source.go constant.other.placeholder.go\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Comment Block Documentation HTML Entities\",\n      \"scope\": \"source.java comment.block.documentation.javadoc punctuation.definition.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Constant Other\",\n      \"scope\": \"source.java constant.other\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Keyword Other Documentation\",\n      \"scope\": \"source.java keyword.other.documentation\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Keyword Other Documentation Author\",\n      \"scope\": \"source.java keyword.other.documentation.author.javadoc\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Keyword Other Documentation Directive/Custom\",\n      \"scope\": [\n        \"source.java keyword.other.documentation.directive\",\n        \"source.java keyword.other.documentation.custom\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Keyword Other Documentation See\",\n      \"scope\": \"source.java keyword.other.documentation.see.javadoc\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java] Meta Method-Call\",\n      \"scope\": \"source.java meta.method-call meta.method\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Meta Tag Template Link\",\n      \"scope\": [\n        \"source.java meta.tag.template.link.javadoc\",\n        \"source.java string.other.link.title.javadoc\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Meta Tag Template Value\",\n      \"scope\": \"source.java meta.tag.template.value.javadoc\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Punctuation Definition Keyword\",\n      \"scope\": \"source.java punctuation.definition.keyword.javadoc\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java](JavaDoc) Punctuation Definition Tag\",\n      \"scope\": [\n        \"source.java punctuation.definition.tag.begin.javadoc\",\n        \"source.java punctuation.definition.tag.end.javadoc\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#616E88\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Modifier Import\",\n      \"scope\": \"source.java storage.modifier.import\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Modifier Package\",\n      \"scope\": \"source.java storage.modifier.package\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Type\",\n      \"scope\": \"source.java storage.type\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Type Annotation\",\n      \"scope\": \"source.java storage.type.annotation\",\n      \"settings\": {\n        \"foreground\": \"#D08770\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Type Generic\",\n      \"scope\": \"source.java storage.type.generic\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Java] Storage Type Primitive\",\n      \"scope\": \"source.java storage.type.primitive\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Decorator\",\n      \"scope\": [\n        \"source.js punctuation.decorator\",\n        \"source.js meta.decorator variable.other.readwrite\",\n        \"source.js meta.decorator entity.name.function\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D08770\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Meta Object-Literal Key\",\n      \"scope\": \"source.js meta.object-literal.key\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript](JSDoc) Storage Type Class\",\n      \"scope\": \"source.js storage.type.class.jsdoc\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] String Template Literals Punctuation\",\n      \"scope\": [\n        \"source.js string.quoted.template punctuation.quasi.element.begin\",\n        \"source.js string.quoted.template punctuation.quasi.element.end\",\n        \"source.js string.template punctuation.definition.template-expression\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Interpolated String Template Punctuation Functions\",\n      \"scope\": \"source.js string.quoted.template meta.method-call.with-arguments\",\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] String Template Literal Variable\",\n      \"scope\": [\n        \"source.js string.template meta.template.expression support.variable.property\",\n        \"source.js string.template meta.template.expression variable.other.object\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Support Type Primitive\",\n      \"scope\": \"source.js support.type.primitive\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Variable Other Object\",\n      \"scope\": \"source.js variable.other.object\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Variable Other Read-Write Alias\",\n      \"scope\": \"source.js variable.other.readwrite.alias\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[JavaScript] Parentheses in Template Strings\",\n      \"scope\": [\n        \"source.js meta.embedded.line meta.brace.square\",\n        \"source.js meta.embedded.line meta.brace.round\",\n        \"source.js string.quoted.template meta.brace.square\",\n        \"source.js string.quoted.template meta.brace.round\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"[HTML] Constant Character Entity\",\n      \"scope\": \"text.html.basic constant.character.entity.html\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"[HTML] Constant Other Inline-Data\",\n      \"scope\": \"text.html.basic constant.other.inline-data\",\n      \"settings\": {\n        \"foreground\": \"#D08770\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"[HTML] Meta Tag SGML Doctype\",\n      \"scope\": \"text.html.basic meta.tag.sgml.doctype\",\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"[HTML] Punctuation Definition Entity\",\n      \"scope\": \"text.html.basic punctuation.definition.entity\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[INI] Entity Name Section Group-Title\",\n      \"scope\": \"source.properties entity.name.section.group-title.ini\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[INI] Punctuation Separator Key-Value\",\n      \"scope\": \"source.properties punctuation.separator.key-value.ini\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Fenced Code Block\",\n      \"scope\": [\n        \"text.html.markdown markup.fenced_code.block\",\n        \"text.html.markdown markup.fenced_code.block punctuation.definition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Heading\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Inline\",\n      \"scope\": [\n        \"text.html.markdown markup.inline.raw\",\n        \"text.html.markdown markup.inline.raw punctuation.definition.raw\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Italic\",\n      \"scope\": \"text.html.markdown markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Link\",\n      \"scope\": \"text.html.markdown markup.underline.link\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup List Numbered/Unnumbered\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.list\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Quote Punctuation Definition\",\n      \"scope\": \"text.html.markdown beginning.punctuation.definition.quote\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Quote Punctuation Definition\",\n      \"scope\": \"text.html.markdown markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#616E88\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Math Constant\",\n      \"scope\": \"text.html.markdown constant.character.math.tex\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Math Definition Marker\",\n      \"scope\": [\n        \"text.html.markdown punctuation.definition.math.begin\",\n        \"text.html.markdown punctuation.definition.math.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Math Function Definition Marker\",\n      \"scope\": \"text.html.markdown punctuation.definition.function.math.tex\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Markup Math Operator\",\n      \"scope\": \"text.html.markdown punctuation.math.operator.latex\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Punctuation Definition Heading\",\n      \"scope\": \"text.html.markdown punctuation.definition.heading\",\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] Punctuation Definition Constant/String\",\n      \"scope\": [\n        \"text.html.markdown punctuation.definition.constant\",\n        \"text.html.markdown punctuation.definition.string\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Markdown] String Other Link Description/Title\",\n      \"scope\": [\n        \"text.html.markdown constant.other.reference.link\",\n        \"text.html.markdown string.other.link.description\",\n        \"text.html.markdown string.other.link.title\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Perl] Perl Sigils\",\n      \"scope\": \"source.perl punctuation.definition.variable\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[PHP] Meta Function-Call Object\",\n      \"scope\": [\n        \"source.php meta.function-call\",\n        \"source.php meta.function-call.object\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Python] Decorator\",\n      \"scope\": [\n        \"source.python entity.name.function.decorator\",\n        \"source.python meta.function.decorator support.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D08770\"\n      }\n    },\n    {\n      \"name\": \"[Python] Function Call\",\n      \"scope\": \"source.python meta.function-call.generic\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Python] Support Type\",\n      \"scope\": \"source.python support.type\",\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Python] Function Parameter\",\n      \"scope\": [\"source.python variable.parameter.function.language\"],\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[Python] Function Parameter Special\",\n      \"scope\": [\n        \"source.python meta.function.parameters variable.parameter.function.language.special.self\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[Rust] Entity types\",\n      \"scope\": \"source.rust entity.name.type\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[Rust] Macro\",\n      \"scope\": \"source.rust meta.macro entity.name.function\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[Rust] Attributes\",\n      \"scope\": [\n        \"source.rust meta.attribute\",\n        \"source.rust meta.attribute punctuation\",\n        \"source.rust meta.attribute keyword.operator\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"[Rust] Traits\",\n      \"scope\": \"source.rust entity.name.type.trait\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"[Rust] Interpolation Bracket Curly\",\n      \"scope\": \"source.rust punctuation.definition.interpolation\",\n      \"settings\": {\n        \"foreground\": \"#EBCB8B\"\n      }\n    },\n    {\n      \"name\": \"[SCSS] Punctuation Definition Interpolation Bracket Curly\",\n      \"scope\": [\n        \"source.css.scss punctuation.definition.interpolation.begin.bracket.curly\",\n        \"source.css.scss punctuation.definition.interpolation.end.bracket.curly\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#81A1C1\"\n      }\n    },\n    {\n      \"name\": \"[SCSS] Variable Interpolation\",\n      \"scope\": \"source.css.scss variable.interpolation\",\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Decorators\",\n      \"scope\": [\n        \"source.ts punctuation.decorator\",\n        \"source.ts meta.decorator variable.other.readwrite\",\n        \"source.ts meta.decorator entity.name.function\",\n        \"source.tsx punctuation.decorator\",\n        \"source.tsx meta.decorator variable.other.readwrite\",\n        \"source.tsx meta.decorator entity.name.function\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D08770\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Object-literal keys\",\n      \"scope\": [\n        \"source.ts meta.object-literal.key\",\n        \"source.tsx meta.object-literal.key\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Object-literal functions\",\n      \"scope\": [\n        \"source.ts meta.object-literal.key entity.name.function\",\n        \"source.tsx meta.object-literal.key entity.name.function\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#88C0D0\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Type/Class\",\n      \"scope\": [\n        \"source.ts support.class\",\n        \"source.ts support.type\",\n        \"source.ts entity.name.type\",\n        \"source.ts entity.name.class\",\n        \"source.tsx support.class\",\n        \"source.tsx support.type\",\n        \"source.tsx entity.name.type\",\n        \"source.tsx entity.name.class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Static Class Support\",\n      \"scope\": [\n        \"source.ts support.constant.math\",\n        \"source.ts support.constant.dom\",\n        \"source.ts support.constant.json\",\n        \"source.tsx support.constant.math\",\n        \"source.tsx support.constant.dom\",\n        \"source.tsx support.constant.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Variables\",\n      \"scope\": [\"source.ts support.variable\", \"source.tsx support.variable\"],\n      \"settings\": {\n        \"foreground\": \"#D8DEE9\"\n      }\n    },\n    {\n      \"name\": \"[TypeScript] Parentheses in Template Strings\",\n      \"scope\": [\n        \"source.ts meta.embedded.line meta.brace.square\",\n        \"source.ts meta.embedded.line meta.brace.round\",\n        \"source.tsx meta.embedded.line meta.brace.square\",\n        \"source.tsx meta.embedded.line meta.brace.round\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ECEFF4\"\n      }\n    },\n    {\n      \"name\": \"[XML] Entity Name Tag Namespace\",\n      \"scope\": \"text.xml entity.name.tag.namespace\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    },\n    {\n      \"name\": \"[XML] Keyword Other Doctype\",\n      \"scope\": \"text.xml keyword.other.doctype\",\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"[XML] Meta Tag Preprocessor\",\n      \"scope\": \"text.xml meta.tag.preprocessor entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#5E81AC\"\n      }\n    },\n    {\n      \"name\": \"[XML] Entity Name Tag Namespace\",\n      \"scope\": [\n        \"text.xml string.unquoted.cdata\",\n        \"text.xml string.unquoted.cdata punctuation.definition.string\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#D08770\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"[YAML] Entity Name Tag\",\n      \"scope\": \"source.yaml entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#8FBCBB\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/one-dark-pro.json",
    "content": "{\n  \"name\": \"one-dark-pro\",\n  \"type\": \"dark\",\n  \"semanticHighlighting\": true,\n  \"semanticTokenColors\": {\n    \"enumMember\": {\n      \"foreground\": \"#56b6c2\"\n    },\n    \"variable.constant\": {\n      \"foreground\": \"#d19a66\"\n    },\n    \"variable.defaultLibrary\": {\n      \"foreground\": \"#e5c07b\"\n    },\n    \"variable:dart\": {\n      \"foreground\": \"#d19a66\"\n    },\n    \"property:dart\": {\n      \"foreground\": \"#d19a66\"\n    },\n    \"annotation:dart\": {\n      \"foreground\": \"#d19a66\"\n    },\n    \"parameter.label:dart\": {\n      \"foreground\": \"#abb2bf\"\n    },\n    \"macro\": {\n      \"foreground\": \"#d19a66\"\n    }\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": \"meta.embedded\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"unison punctuation\",\n      \"scope\": \"punctuation.definition.delayed.unison,punctuation.definition.list.begin.unison,punctuation.definition.list.end.unison,punctuation.definition.ability.begin.unison,punctuation.definition.ability.end.unison,punctuation.operator.assignment.as.unison,punctuation.separator.pipe.unison,punctuation.separator.delimiter.unison,punctuation.definition.hash.unison\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"haskell variable generic-type\",\n      \"scope\": \"variable.other.generic-type.haskell\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"haskell storage type\",\n      \"scope\": \"storage.type.haskell\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"support.variable.magic.python\",\n      \"scope\": \"support.variable.magic.python\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"punctuation.separator.parameters.python\",\n      \"scope\": \"punctuation.separator.period.python,punctuation.separator.element.python,punctuation.parenthesis.begin.python,punctuation.parenthesis.end.python\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"variable.parameter.function.language.special.self.python\",\n      \"scope\": \"variable.parameter.function.language.special.self.python\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"variable.parameter.function.language.special.cls.python\",\n      \"scope\": \"variable.parameter.function.language.special.cls.python\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"storage.modifier.lifetime.rust\",\n      \"scope\": \"storage.modifier.lifetime.rust\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"support.function.std.rust\",\n      \"scope\": \"support.function.std.rust\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"entity.name.lifetime.rust\",\n      \"scope\": \"entity.name.lifetime.rust\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"variable.language.rust\",\n      \"scope\": \"variable.language.rust\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"support.constant.edge\",\n      \"scope\": \"support.constant.edge\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"regexp constant character-class\",\n      \"scope\": \"constant.other.character-class.regexp\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"keyword.operator\",\n      \"scope\": [\"keyword.operator.word\"],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"regexp operator.quantifier\",\n      \"scope\": \"keyword.operator.quantifier.regexp\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Text\",\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Comment Markup Link\",\n      \"scope\": \"comment markup.link\",\n      \"settings\": {\n        \"foreground\": \"#5c6370\"\n      }\n    },\n    {\n      \"name\": \"markup diff\",\n      \"scope\": \"markup.changed.diff\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"diff\",\n      \"scope\": \"meta.diff.header.from-file,meta.diff.header.to-file,punctuation.definition.from-file.diff,punctuation.definition.to-file.diff\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"inserted.diff\",\n      \"scope\": \"markup.inserted.diff\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"deleted.diff\",\n      \"scope\": \"markup.deleted.diff\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"c++ function\",\n      \"scope\": \"meta.function.c,meta.function.cpp\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"c++ block\",\n      \"scope\": \"punctuation.section.block.begin.bracket.curly.cpp,punctuation.section.block.end.bracket.curly.cpp,punctuation.terminator.statement.c,punctuation.section.block.begin.bracket.curly.c,punctuation.section.block.end.bracket.curly.c,punctuation.section.parens.begin.bracket.round.c,punctuation.section.parens.end.bracket.round.c,punctuation.section.parameters.begin.bracket.round.c,punctuation.section.parameters.end.bracket.round.c\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"js/ts punctuation separator key-value\",\n      \"scope\": \"punctuation.separator.key-value\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"js/ts import keyword\",\n      \"scope\": \"keyword.operator.expression.import\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"math js/ts\",\n      \"scope\": \"support.constant.math\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"math property js/ts\",\n      \"scope\": \"support.constant.property.math\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"js/ts variable.other.constant\",\n      \"scope\": \"variable.other.constant\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"java type\",\n      \"scope\": [\n        \"storage.type.annotation.java\",\n        \"storage.type.object.array.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"java source\",\n      \"scope\": \"source.java\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"java modifier.import\",\n      \"scope\": \"punctuation.section.block.begin.java,punctuation.section.block.end.java,punctuation.definition.method-parameters.begin.java,punctuation.definition.method-parameters.end.java,meta.method.identifier.java,punctuation.section.method.begin.java,punctuation.section.method.end.java,punctuation.terminator.java,punctuation.section.class.begin.java,punctuation.section.class.end.java,punctuation.section.inner-class.begin.java,punctuation.section.inner-class.end.java,meta.method-call.java,punctuation.section.class.begin.bracket.curly.java,punctuation.section.class.end.bracket.curly.java,punctuation.section.method.begin.bracket.curly.java,punctuation.section.method.end.bracket.curly.java,punctuation.separator.period.java,punctuation.bracket.angle.java,punctuation.definition.annotation.java,meta.method.body.java\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"java modifier.import\",\n      \"scope\": \"meta.method.java\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"java modifier.import\",\n      \"scope\": \"storage.modifier.import.java,storage.type.java,storage.type.generic.java\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"java instanceof\",\n      \"scope\": \"keyword.operator.instanceof.java\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"java variable.name\",\n      \"scope\": \"meta.definition.variable.name.java\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"operator logical\",\n      \"scope\": \"keyword.operator.logical\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"operator bitwise\",\n      \"scope\": \"keyword.operator.bitwise\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"operator channel\",\n      \"scope\": \"keyword.operator.channel\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"support.constant.property-value.scss\",\n      \"scope\": \"support.constant.property-value.scss,support.constant.property-value.css\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"CSS/SCSS/LESS Operators\",\n      \"scope\": \"keyword.operator.css,keyword.operator.scss,keyword.operator.less\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"css color standard name\",\n      \"scope\": \"support.constant.color.w3c-standard-color-name.css,support.constant.color.w3c-standard-color-name.scss\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"css comma\",\n      \"scope\": \"punctuation.separator.list.comma.css\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"css attribute-name.id\",\n      \"scope\": \"support.constant.color.w3c-standard-color-name.css\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"css property-name\",\n      \"scope\": \"support.type.vendored.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"js/ts module\",\n      \"scope\": \"support.module.node,support.type.object.module,support.module.node\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"entity.name.type.module\",\n      \"scope\": \"entity.name.type.module\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"js variable readwrite\",\n      \"scope\": \"variable.other.readwrite,meta.object-literal.key,support.variable.property,support.variable.object.process,support.variable.object.node\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"js/ts json\",\n      \"scope\": \"support.constant.json\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"js/ts Keyword\",\n      \"scope\": [\n        \"keyword.operator.expression.instanceof\",\n        \"keyword.operator.new\",\n        \"keyword.operator.ternary\",\n        \"keyword.operator.optional\",\n        \"keyword.operator.expression.keyof\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"js/ts console\",\n      \"scope\": \"support.type.object.console\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"js/ts support.variable.property.process\",\n      \"scope\": \"support.variable.property.process\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"js console function\",\n      \"scope\": \"entity.name.function,support.function.console\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"keyword.operator.misc.rust\",\n      \"scope\": \"keyword.operator.misc.rust\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"keyword.operator.sigil.rust\",\n      \"scope\": \"keyword.operator.sigil.rust\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"operator\",\n      \"scope\": \"keyword.operator.delete\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"js dom\",\n      \"scope\": \"support.type.object.dom\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"js dom variable\",\n      \"scope\": \"support.variable.dom,support.variable.property.dom\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"keyword.operator\",\n      \"scope\": \"keyword.operator.arithmetic,keyword.operator.comparison,keyword.operator.decrement,keyword.operator.increment,keyword.operator.relational\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"C operator assignment\",\n      \"scope\": \"keyword.operator.assignment.c,keyword.operator.comparison.c,keyword.operator.c,keyword.operator.increment.c,keyword.operator.decrement.c,keyword.operator.bitwise.shift.c,keyword.operator.assignment.cpp,keyword.operator.comparison.cpp,keyword.operator.cpp,keyword.operator.increment.cpp,keyword.operator.decrement.cpp,keyword.operator.bitwise.shift.cpp\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Punctuation\",\n      \"scope\": \"punctuation.separator.delimiter\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Other punctuation .c\",\n      \"scope\": \"punctuation.separator.c,punctuation.separator.cpp\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"C type posix-reserved\",\n      \"scope\": \"support.type.posix-reserved.c,support.type.posix-reserved.cpp\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"keyword.operator.sizeof.c\",\n      \"scope\": \"keyword.operator.sizeof.c,keyword.operator.sizeof.cpp\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"python parameter\",\n      \"scope\": \"variable.parameter.function.language.python\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"python type\",\n      \"scope\": \"support.type.python\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"python logical\",\n      \"scope\": \"keyword.operator.logical.python\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"pyCs\",\n      \"scope\": \"variable.parameter.function.python\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"python block\",\n      \"scope\": \"punctuation.definition.arguments.begin.python,punctuation.definition.arguments.end.python,punctuation.separator.arguments.python,punctuation.definition.list.begin.python,punctuation.definition.list.end.python\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"python function-call.generic\",\n      \"scope\": \"meta.function-call.generic.python\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"python placeholder reset to normal string\",\n      \"scope\": \"constant.character.format.placeholder.other.python\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Operators\",\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Compound Assignment Operators\",\n      \"scope\": \"keyword.operator.assignment.compound\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Compound Assignment Operators js/ts\",\n      \"scope\": \"keyword.operator.assignment.compound.js,keyword.operator.assignment.compound.ts\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"Keywords\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Namespaces\",\n      \"scope\": \"entity.name.namespace\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Variables\",\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Variables\",\n      \"scope\": \"variable.c\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Language variables\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Java Variables\",\n      \"scope\": \"token.variable.parameter.java\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Java Imports\",\n      \"scope\": \"import.storage.java\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Packages\",\n      \"scope\": \"token.package.keyword\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Packages\",\n      \"scope\": \"token.package\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Functions\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"meta.require\",\n        \"support.function.any-method\",\n        \"variable.function\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Classes\",\n      \"scope\": \"entity.name.type.namespace\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Classes\",\n      \"scope\": \"support.class, entity.name.type.class\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": \"entity.name.class.identifier.namespace.type\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": [\n        \"entity.name.class\",\n        \"variable.other.class.js\",\n        \"variable.other.class.ts\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Class name php\",\n      \"scope\": \"variable.other.class.php\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Type Name\",\n      \"scope\": \"entity.name.type\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Keyword Control\",\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Control Elements\",\n      \"scope\": \"control.elements, keyword.operator.less\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Methods\",\n      \"scope\": \"keyword.other.special-method\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Storage JS TS\",\n      \"scope\": \"token.storage\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Source Js Keyword Operator Delete,source Js Keyword Operator In,source Js Keyword Operator Of,source Js Keyword Operator Instanceof,source Js Keyword Operator New,source Js Keyword Operator Typeof,source Js Keyword Operator Void\",\n      \"scope\": \"keyword.operator.expression.delete,keyword.operator.expression.in,keyword.operator.expression.of,keyword.operator.expression.instanceof,keyword.operator.new,keyword.operator.expression.typeof,keyword.operator.expression.void\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Java Storage\",\n      \"scope\": \"token.storage.type.java\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Support\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"Support type\",\n      \"scope\": \"support.type.property-name\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Support type\",\n      \"scope\": \"support.constant.property-value\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Support type\",\n      \"scope\": \"support.constant.font-name\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Meta tag\",\n      \"scope\": \"meta.tag\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Strings\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"Constant other symbol\",\n      \"scope\": \"constant.other.symbol\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"Integers\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Constants\",\n      \"scope\": \"constant\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Constants\",\n      \"scope\": \"punctuation.definition.constant\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Tags\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Attributes\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Attribute IDs\",\n      \"scope\": \"entity.other.attribute-name.id\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Attribute class\",\n      \"scope\": \"entity.other.attribute-name.class.css\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Selector\",\n      \"scope\": \"meta.selector\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Headings\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Headings\",\n      \"scope\": \"markup.heading punctuation.definition.heading, entity.name.section\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Units\",\n      \"scope\": \"keyword.other.unit\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Bold\",\n      \"scope\": \"markup.bold,todo.bold\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Bold\",\n      \"scope\": \"punctuation.definition.bold\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"markup Italic\",\n      \"scope\": \"markup.italic, punctuation.definition.italic,todo.emphasis\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"emphasis md\",\n      \"scope\": \"emphasis md\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown headings\",\n      \"scope\": \"entity.name.section.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown heading Punctuation Definition\",\n      \"scope\": \"punctuation.definition.heading.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"punctuation.definition.list.begin.markdown\",\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown heading setext\",\n      \"scope\": \"markup.heading.setext\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Punctuation Definition Bold\",\n      \"scope\": \"punctuation.definition.bold.markdown\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Inline Raw\",\n      \"scope\": \"markup.inline.raw.markdown\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Inline Raw\",\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Inline Raw punctuation\",\n      \"scope\": \"punctuation.definition.raw.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown List Punctuation Definition\",\n      \"scope\": \"punctuation.definition.list.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Punctuation Definition String\",\n      \"scope\": [\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\",\n        \"punctuation.definition.metadata.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"beginning.punctuation.definition.list.markdown\",\n      \"scope\": [\"beginning.punctuation.definition.list.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Punctuation Definition Link\",\n      \"scope\": \"punctuation.definition.metadata.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Underline Link/Image\",\n      \"scope\": \"markup.underline.link.markdown,markup.underline.link.image.markdown\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Link Title/Description\",\n      \"scope\": \"string.other.link.title.markdown,string.other.link.description.markdown\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Asciidoc Inline Raw\",\n      \"scope\": \"markup.raw.monospace.asciidoc\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Asciidoc Inline Raw Punctuation Definition\",\n      \"scope\": \"punctuation.definition.asciidoc\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Asciidoc List Punctuation Definition\",\n      \"scope\": \"markup.list.asciidoc\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Asciidoc underline link\",\n      \"scope\": \"markup.link.asciidoc,markup.other.url.asciidoc\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Asciidoc link name\",\n      \"scope\": \"string.unquoted.asciidoc,markup.other.url.asciidoc\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Regular Expressions\",\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"Embedded\",\n      \"scope\": \"punctuation.section.embedded, variable.interpolation\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Embedded\",\n      \"scope\": \"punctuation.section.embedded.begin,punctuation.section.embedded.end\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"illegal\",\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"name\": \"illegal\",\n      \"scope\": \"invalid.illegal.bad-ampersand.html\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal.unrecognized-tag.html\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Broken\",\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"name\": \"Deprecated\",\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"name\": \"html Deprecated\",\n      \"scope\": \"invalid.deprecated.entity.other.attribute-name.html\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"Unimplemented\",\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"name\": \"Source Json Meta Structure Dictionary Json > String Quoted Json\",\n      \"scope\": \"source.json meta.structure.dictionary.json > string.quoted.json\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Source Json Meta Structure Dictionary Json > String Quoted Json > Punctuation String\",\n      \"scope\": \"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Source Json Meta Structure Dictionary Json > Value Json > String Quoted Json,source Json Meta Structure Array Json > Value Json > String Quoted Json,source Json Meta Structure Dictionary Json > Value Json > String Quoted Json > Punctuation,source Json Meta Structure Array Json > Value Json > String Quoted Json > Punctuation\",\n      \"scope\": \"source.json meta.structure.dictionary.json > value.json > string.quoted.json,source.json meta.structure.array.json > value.json > string.quoted.json,source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation,source.json meta.structure.array.json > value.json > string.quoted.json > punctuation\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"Source Json Meta Structure Dictionary Json > Constant Language Json,source Json Meta Structure Array Json > Constant Language Json\",\n      \"scope\": \"source.json meta.structure.dictionary.json > constant.language.json,source.json meta.structure.array.json > constant.language.json\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] JSON Property Name\",\n      \"scope\": \"support.type.property-name.json\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] JSON Punctuation for Property Name\",\n      \"scope\": \"support.type.property-name.json punctuation\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"laravel blade tag\",\n      \"scope\": \"text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"laravel blade @\",\n      \"scope\": \"text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"use statement for other classes\",\n      \"scope\": \"support.other.namespace.use.php,support.other.namespace.use-as.php,entity.other.alias.php,meta.interface.php\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"error suppression\",\n      \"scope\": \"keyword.operator.error-control.php\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"php instanceof\",\n      \"scope\": \"keyword.operator.type.php\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"style double quoted array index normal begin\",\n      \"scope\": \"punctuation.section.array.begin.php\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"style double quoted array index normal end\",\n      \"scope\": \"punctuation.section.array.end.php\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"php illegal.non-null-typehinted\",\n      \"scope\": \"invalid.illegal.non-null-typehinted.php\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"name\": \"php types\",\n      \"scope\": \"storage.type.php,meta.other.type.phpdoc.php,keyword.other.type.php,keyword.other.array.phpdoc.php\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"php call-function\",\n      \"scope\": \"meta.function-call.php,meta.function-call.object.php,meta.function-call.static.php\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"php function-resets\",\n      \"scope\": \"punctuation.definition.parameters.begin.bracket.round.php,punctuation.definition.parameters.end.bracket.round.php,punctuation.separator.delimiter.php,punctuation.section.scope.begin.php,punctuation.section.scope.end.php,punctuation.terminator.expression.php,punctuation.definition.arguments.begin.bracket.round.php,punctuation.definition.arguments.end.bracket.round.php,punctuation.definition.storage-type.begin.bracket.round.php,punctuation.definition.storage-type.end.bracket.round.php,punctuation.definition.array.begin.bracket.round.php,punctuation.definition.array.end.bracket.round.php,punctuation.definition.begin.bracket.round.php,punctuation.definition.end.bracket.round.php,punctuation.definition.begin.bracket.curly.php,punctuation.definition.end.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php,punctuation.definition.section.switch-block.start.bracket.curly.php,punctuation.definition.section.switch-block.begin.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"support php constants\",\n      \"scope\": \"support.constant.core.rust\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"support php constants\",\n      \"scope\": \"support.constant.ext.php,support.constant.std.php,support.constant.core.php,support.constant.parser-token.php\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"php goto\",\n      \"scope\": \"entity.name.goto-label.php,support.other.php\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"php logical/bitwise operator\",\n      \"scope\": \"keyword.operator.logical.php,keyword.operator.bitwise.php,keyword.operator.arithmetic.php\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"php regexp operator\",\n      \"scope\": \"keyword.operator.regexp.php\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"php comparison\",\n      \"scope\": \"keyword.operator.comparison.php\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"php heredoc/nowdoc\",\n      \"scope\": \"keyword.operator.heredoc.php,keyword.operator.nowdoc.php\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"python function decorator @\",\n      \"scope\": \"meta.function.decorator.python\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"python function support\",\n      \"scope\": \"support.token.decorator.python,meta.function.decorator.identifier.python\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"parameter function js/ts\",\n      \"scope\": \"function.parameter\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"brace function\",\n      \"scope\": \"function.brace\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"parameter function ruby cs\",\n      \"scope\": \"function.parameter.ruby, function.parameter.cs\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"constant.language.symbol.ruby\",\n      \"scope\": \"constant.language.symbol.ruby\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"rgb-value\",\n      \"scope\": \"rgb-value\",\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"rgb value\",\n      \"scope\": \"inline-color-decoration rgb-value\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"rgb value less\",\n      \"scope\": \"less rgb-value\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"sass selector\",\n      \"scope\": \"selector.sass\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"ts primitive/builtin types\",\n      \"scope\": \"support.type.primitive.ts,support.type.builtin.ts,support.type.primitive.tsx,support.type.builtin.tsx\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"block scope\",\n      \"scope\": \"block.scope.end,block.scope.begin\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"cs storage type\",\n      \"scope\": \"storage.type.cs\",\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"cs local variable\",\n      \"scope\": \"entity.name.variable.local.cs\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"String interpolation\",\n      \"scope\": [\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Reset JavaScript string interpolation expression\",\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Import module JS\",\n      \"scope\": [\"keyword.operator.module\"],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"js Flowtype\",\n      \"scope\": [\"support.type.type.flowtype\"],\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"js Flow\",\n      \"scope\": [\"support.type.primitive\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"js class prop\",\n      \"scope\": [\"meta.property.object\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"js func parameter\",\n      \"scope\": [\"variable.parameter.function.js\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"js template literals begin\",\n      \"scope\": [\"keyword.other.template.begin\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"js template literals end\",\n      \"scope\": [\"keyword.other.template.end\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"js template literals variable braces begin\",\n      \"scope\": [\"keyword.other.substitution.begin\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"js template literals variable braces end\",\n      \"scope\": [\"keyword.other.substitution.end\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"js operator.assignment\",\n      \"scope\": [\"keyword.operator.assignment\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"go operator\",\n      \"scope\": [\"keyword.operator.assignment.go\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"go operator\",\n      \"scope\": [\n        \"keyword.operator.arithmetic.go\",\n        \"keyword.operator.address.go\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"Go package name\",\n      \"scope\": [\"entity.name.package.go\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"elm prelude\",\n      \"scope\": [\"support.type.prelude.elm\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"elm constant\",\n      \"scope\": [\"support.constant.elm\"],\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"template literal\",\n      \"scope\": [\"punctuation.quasi.element\"],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"html/pug (jade) escaped characters and entities\",\n      \"scope\": [\"constant.character.entity\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"styling css pseudo-elements/classes to be able to differentiate from classes which are the same colour\",\n      \"scope\": [\n        \"entity.other.attribute-name.pseudo-element\",\n        \"entity.other.attribute-name.pseudo-class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"Clojure globals\",\n      \"scope\": [\"entity.global.clojure\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Clojure symbols\",\n      \"scope\": [\"meta.symbol.clojure\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Clojure constants\",\n      \"scope\": [\"constant.keyword.clojure\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"CoffeeScript Function Argument\",\n      \"scope\": [\"meta.arguments.coffee\", \"variable.parameter.function.coffee\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Ini Default Text\",\n      \"scope\": [\"source.ini\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"Makefile prerequisities\",\n      \"scope\": [\"meta.scope.prerequisites.makefile\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Makefile text colour\",\n      \"scope\": [\"source.makefile\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Groovy import names\",\n      \"scope\": [\"storage.modifier.import.groovy\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Groovy Methods\",\n      \"scope\": [\"meta.method.groovy\"],\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"Groovy Variables\",\n      \"scope\": [\"meta.definition.variable.name.groovy\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Groovy Inheritance\",\n      \"scope\": [\"meta.definition.class.inherited.classes.groovy\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"HLSL Semantic\",\n      \"scope\": [\"support.variable.semantic.hlsl\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"HLSL Types\",\n      \"scope\": [\n        \"support.type.texture.hlsl\",\n        \"support.type.sampler.hlsl\",\n        \"support.type.object.hlsl\",\n        \"support.type.object.rw.hlsl\",\n        \"support.type.fx.hlsl\",\n        \"support.type.object.hlsl\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"SQL Variables\",\n      \"scope\": [\"text.variable\", \"text.bracketed\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"types\",\n      \"scope\": [\"support.type.swift\", \"support.type.vb.asp\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"heading 1, keyword\",\n      \"scope\": [\"entity.name.function.xi\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"heading 2, callable\",\n      \"scope\": [\"entity.name.class.xi\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"heading 3, property\",\n      \"scope\": [\"constant.character.character-class.regexp.xi\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"heading 4, type, class, interface\",\n      \"scope\": [\"constant.regexp.xi\"],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"name\": \"heading 5, enums, preprocessor, constant, decorator\",\n      \"scope\": [\"keyword.control.xi\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"name\": \"heading 6, number\",\n      \"scope\": [\"invalid.xi\"],\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"string\",\n      \"scope\": [\"beginning.punctuation.definition.quote.markdown.xi\"],\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"comments\",\n      \"scope\": [\"beginning.punctuation.definition.list.markdown.xi\"],\n      \"settings\": {\n        \"foreground\": \"#7f848e\"\n      }\n    },\n    {\n      \"name\": \"link\",\n      \"scope\": [\"constant.character.xi\"],\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"accent\",\n      \"scope\": [\"accent.xi\"],\n      \"settings\": {\n        \"foreground\": \"#61afef\"\n      }\n    },\n    {\n      \"name\": \"wikiword\",\n      \"scope\": [\"wikiword.xi\"],\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"name\": \"language operators like '+', '-' etc\",\n      \"scope\": [\"constant.other.color.rgb-value.xi\"],\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"name\": \"elements to dim\",\n      \"scope\": [\"punctuation.definition.tag.xi\"],\n      \"settings\": {\n        \"foreground\": \"#5c6370\"\n      }\n    },\n    {\n      \"name\": \"C++/C#\",\n      \"scope\": [\n        \"entity.name.label.cs\",\n        \"entity.name.scope-resolution.function.call\",\n        \"entity.name.scope-resolution.function.definition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"Markdown underscore-style headers\",\n      \"scope\": [\n        \"entity.name.label.cs\",\n        \"markup.heading.setext.1.markdown\",\n        \"markup.heading.setext.2.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"meta.brace.square\",\n      \"scope\": [\" meta.brace.square\"],\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Comments\",\n      \"scope\": \"comment, punctuation.definition.comment\",\n      \"settings\": {\n        \"foreground\": \"#7f848e\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"[VSCODE-CUSTOM] Markdown Quote\",\n      \"scope\": \"markup.quote.markdown\",\n      \"settings\": {\n        \"foreground\": \"#5c6370\"\n      }\n    },\n    {\n      \"name\": \"punctuation.definition.block.sequence.item.yaml\",\n      \"scope\": \"punctuation.definition.block.sequence.item.yaml\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.language.symbol.elixir\",\n        \"constant.language.symbol.double-quoted.elixir\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.variable.parameter.cs\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.variable.field.cs\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Deleted\",\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"Inserted\",\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#98c379\"\n      }\n    },\n    {\n      \"name\": \"Underline\",\n      \"scope\": \"markup.underline\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"name\": \"punctuation.section.embedded.begin.php\",\n      \"scope\": [\n        \"punctuation.section.embedded.begin.php\",\n        \"punctuation.section.embedded.end.php\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#BE5046\"\n      }\n    },\n    {\n      \"name\": \"support.other.namespace.php\",\n      \"scope\": [\"support.other.namespace.php\"],\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"variable.other.object\",\n      \"scope\": [\"variable.other.object\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"variable.other.constant.property\",\n      \"scope\": [\"variable.other.constant.property\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"entity.other.inherited-class\",\n      \"scope\": [\"entity.other.inherited-class\"],\n      \"settings\": {\n        \"foreground\": \"#e5c07b\"\n      }\n    },\n    {\n      \"name\": \"c variable readwrite\",\n      \"scope\": \"variable.other.readwrite.c\",\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"php scope\",\n      \"scope\": \"entity.name.variable.parameter.php,punctuation.separator.colon.php,constant.other.php\",\n      \"settings\": {\n        \"foreground\": \"#abb2bf\"\n      }\n    },\n    {\n      \"name\": \"Assembly\",\n      \"scope\": [\"constant.numeric.decimal.asm.x86_64\"],\n      \"settings\": {\n        \"foreground\": \"#c678dd\"\n      }\n    },\n    {\n      \"scope\": [\"support.other.parenthesis.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#d19a66\"\n      }\n    },\n    {\n      \"scope\": [\"constant.character.escape\"],\n      \"settings\": {\n        \"foreground\": \"#56b6c2\"\n      }\n    },\n    {\n      \"scope\": [\"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#e06c75\"\n      }\n    },\n    {\n      \"name\": \"js/ts italic\",\n      \"scope\": \"entity.other.attribute-name.js,entity.other.attribute-name.ts,entity.other.attribute-name.jsx,entity.other.attribute-name.tsx,variable.parameter,variable.language.super\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"comment\",\n      \"scope\": \"comment.line.double-slash,comment.block.documentation\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"Python Keyword Control\",\n      \"scope\": \"keyword.control.import.python,keyword.control.flow.python,keyword.operator.logical.python\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"name\": \"markup.italic.markdown\",\n      \"scope\": \"markup.italic.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"activityBar.background\": \"#282c34\",\n    \"activityBar.foreground\": \"#d7dae0\",\n    \"activityBarBadge.background\": \"#4d78cc\",\n    \"activityBarBadge.foreground\": \"#f8fafd\",\n    \"badge.background\": \"#282c34\",\n    \"button.background\": \"#404754\",\n    \"button.secondaryBackground\": \"#30333d\",\n    \"button.secondaryForeground\": \"#c0bdbd\",\n    \"checkbox.border\": \"#404754\",\n    \"debugToolBar.background\": \"#21252b\",\n    \"descriptionForeground\": \"#abb2bf\",\n    \"diffEditor.insertedTextBackground\": \"#00809b33\",\n    \"dropdown.background\": \"#21252b\",\n    \"dropdown.border\": \"#21252b\",\n    \"editor.background\": \"#282c34\",\n    \"editor.findMatchBackground\": \"#42557b\",\n    \"editor.findMatchBorder\": \"#457dff\",\n    \"editor.findMatchHighlightBackground\": \"#6199ff2f\",\n    \"editor.foreground\": \"#abb2bf\",\n    \"editorBracketHighlight.foreground1\": \"#d19a66\",\n    \"editorBracketHighlight.foreground2\": \"#c678dd\",\n    \"editorBracketHighlight.foreground3\": \"#56b6c2\",\n    \"editorHoverWidget.highlightForeground\": \"#61afef\",\n    \"editorInlayHint.foreground\": \"#abb2bf\",\n    \"editorInlayHint.background\": \"#2c313c\",\n    \"editor.lineHighlightBackground\": \"#2c313c\",\n    \"editorLineNumber.activeForeground\": \"#abb2bf\",\n    \"editorGutter.addedBackground\": \"#109868\",\n    \"editorGutter.deletedBackground\": \"#9A353D\",\n    \"editorGutter.modifiedBackground\": \"#948B60\",\n    \"editorOverviewRuler.addedBackground\": \"#109868\",\n    \"editorOverviewRuler.deletedBackground\": \"#9A353D\",\n    \"editorOverviewRuler.modifiedBackground\": \"#948B60\",\n    \"editor.selectionBackground\": \"#67769660\",\n    \"editor.selectionHighlightBackground\": \"#ffffff10\",\n    \"editor.selectionHighlightBorder\": \"#dddddd\",\n    \"editor.wordHighlightBackground\": \"#d2e0ff2f\",\n    \"editor.wordHighlightBorder\": \"#7f848e\",\n    \"editor.wordHighlightStrongBackground\": \"#abb2bf26\",\n    \"editor.wordHighlightStrongBorder\": \"#7f848e\",\n    \"editorBracketMatch.background\": \"#515a6b\",\n    \"editorBracketMatch.border\": \"#515a6b\",\n    \"editorCursor.background\": \"#ffffffc9\",\n    \"editorCursor.foreground\": \"#528bff\",\n    \"editorError.foreground\": \"#c24038\",\n    \"editorGroup.background\": \"#181a1f\",\n    \"editorGroup.border\": \"#181a1f\",\n    \"editorGroupHeader.tabsBackground\": \"#21252b\",\n    \"editorHoverWidget.background\": \"#21252b\",\n    \"editorHoverWidget.border\": \"#181a1f\",\n    \"editorIndentGuide.activeBackground\": \"#c8c8c859\",\n    \"editorIndentGuide.background\": \"#3b4048\",\n    \"editorLineNumber.foreground\": \"#495162\",\n    \"editorMarkerNavigation.background\": \"#21252b\",\n    \"editorRuler.foreground\": \"#abb2bf26\",\n    \"editorSuggestWidget.background\": \"#21252b\",\n    \"editorSuggestWidget.border\": \"#181a1f\",\n    \"editorSuggestWidget.selectedBackground\": \"#2c313a\",\n    \"editorWarning.foreground\": \"#d19a66\",\n    \"editorWhitespace.foreground\": \"#ffffff1d\",\n    \"editorWidget.background\": \"#21252b\",\n    \"focusBorder\": \"#3e4452\",\n    \"gitDecoration.ignoredResourceForeground\": \"#636b78\",\n    \"input.background\": \"#1d1f23\",\n    \"input.foreground\": \"#abb2bf\",\n    \"list.activeSelectionBackground\": \"#2c313a\",\n    \"list.activeSelectionForeground\": \"#d7dae0\",\n    \"list.focusBackground\": \"#323842\",\n    \"list.focusForeground\": \"#f0f0f0\",\n    \"list.highlightForeground\": \"#c5c5c5\",\n    \"list.hoverBackground\": \"#2c313a\",\n    \"list.hoverForeground\": \"#abb2bf\",\n    \"list.inactiveSelectionBackground\": \"#323842\",\n    \"list.inactiveSelectionForeground\": \"#d7dae0\",\n    \"list.warningForeground\": \"#d19a66\",\n    \"menu.foreground\": \"#abb2bf\",\n    \"menu.separatorBackground\": \"#343a45\",\n    \"minimapGutter.addedBackground\": \"#109868\",\n    \"minimapGutter.deletedBackground\": \"#9A353D\",\n    \"minimapGutter.modifiedBackground\": \"#948B60\",\n    \"panel.border\": \"#3e4452\",\n    \"panelSectionHeader.background\": \"#21252b\",\n    \"peekViewEditor.background\": \"#1b1d23\",\n    \"peekViewEditor.matchHighlightBackground\": \"#29244b\",\n    \"peekViewResult.background\": \"#22262b\",\n    \"scrollbar.shadow\": \"#23252c\",\n    \"scrollbarSlider.activeBackground\": \"#747d9180\",\n    \"scrollbarSlider.background\": \"#4e566660\",\n    \"scrollbarSlider.hoverBackground\": \"#5a637580\",\n    \"settings.focusedRowBackground\": \"#282c34\",\n    \"settings.headerForeground\": \"#fff\",\n    \"sideBar.background\": \"#21252b\",\n    \"sideBar.foreground\": \"#abb2bf\",\n    \"sideBarSectionHeader.background\": \"#282c34\",\n    \"sideBarSectionHeader.foreground\": \"#abb2bf\",\n    \"statusBar.background\": \"#21252b\",\n    \"statusBar.debuggingBackground\": \"#cc6633\",\n    \"statusBar.debuggingBorder\": \"#ff000000\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.foreground\": \"#9da5b4\",\n    \"statusBar.noFolderBackground\": \"#21252b\",\n    \"statusBarItem.remoteBackground\": \"#4d78cc\",\n    \"statusBarItem.remoteForeground\": \"#f8fafd\",\n    \"tab.activeBackground\": \"#282c34\",\n    \"tab.activeBorder\": \"#b4b4b4\",\n    \"tab.activeForeground\": \"#dcdcdc\",\n    \"tab.border\": \"#181a1f\",\n    \"tab.hoverBackground\": \"#323842\",\n    \"tab.inactiveBackground\": \"#21252b\",\n    \"tab.unfocusedHoverBackground\": \"#323842\",\n    \"terminal.ansiBlack\": \"#3f4451\",\n    \"terminal.ansiBlue\": \"#4aa5f0\",\n    \"terminal.ansiBrightBlack\": \"#4f5666\",\n    \"terminal.ansiBrightBlue\": \"#4dc4ff\",\n    \"terminal.ansiBrightCyan\": \"#4cd1e0\",\n    \"terminal.ansiBrightGreen\": \"#a5e075\",\n    \"terminal.ansiBrightMagenta\": \"#de73ff\",\n    \"terminal.ansiBrightRed\": \"#ff616e\",\n    \"terminal.ansiBrightWhite\": \"#e6e6e6\",\n    \"terminal.ansiBrightYellow\": \"#f0a45d\",\n    \"terminal.ansiCyan\": \"#42b3c2\",\n    \"terminal.ansiGreen\": \"#8cc265\",\n    \"terminal.ansiMagenta\": \"#c162de\",\n    \"terminal.ansiRed\": \"#e05561\",\n    \"terminal.ansiWhite\": \"#d7dae0\",\n    \"terminal.ansiYellow\": \"#d18f52\",\n    \"terminal.background\": \"#282c34\",\n    \"terminal.border\": \"#3e4452\",\n    \"terminal.foreground\": \"#abb2bf\",\n    \"terminal.selectionBackground\": \"#abb2bf30\",\n    \"textBlockQuote.background\": \"#2e3440\",\n    \"textBlockQuote.border\": \"#4b5362\",\n    \"textLink.foreground\": \"#61afef\",\n    \"textPreformat.foreground\": \"#d19a66\",\n    \"titleBar.activeBackground\": \"#282c34\",\n    \"titleBar.activeForeground\": \"#9da5b4\",\n    \"titleBar.inactiveBackground\": \"#21252b\",\n    \"titleBar.inactiveForeground\": \"#6b717d\",\n    \"tree.indentGuidesStroke\": \"#ffffff1d\",\n    \"walkThrough.embeddedEditorBackground\": \"#2e3440\",\n    \"welcomePage.buttonHoverBackground\": \"#404754\"\n  }\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/poimandres.json",
    "content": "{\n  \"name\": \"poimandres\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"activityBar.background\": \"#1b1e28\",\n    \"activityBar.foreground\": \"#a6accd\",\n    \"activityBarBadge.background\": \"#303340\",\n    \"activityBarBadge.foreground\": \"#e4f0fb\",\n    \"badge.background\": \"#303340\",\n    \"badge.foreground\": \"#e4f0fb\",\n    \"button.background\": \"#303340\",\n    \"diffEditor.insertedTextBackground\": \"#50647715\",\n    \"diffEditor.removedTextBackground\": \"#d0679d20\",\n    \"dropdown.background\": \"#1b1e28\",\n    \"dropdown.border\": \"#ffffff10\",\n    \"editor.background\": \"#1b1e28\",\n    \"editor.findMatchBackground\": \"#ADD7FF40\",\n    \"editor.findMatchBorder\": \"#ADD7FF\",\n    \"editor.findMatchHighlightBackground\": \"#ADD7FF40\",\n    \"editor.foreground\": \"#a6accd\",\n    \"editor.lineHighlightBackground\": \"#717cb425\",\n    \"editor.lineHighlightBorder\": \"#00000000\",\n    \"editor.selectionBackground\": \"#717cb425\",\n    \"editor.selectionHighlightBackground\": \"#00000000\",\n    \"editor.selectionHighlightBorder\": \"#ADD7FF80\",\n    \"editor.wordHighlightBackground\": \"#ADD7FF20\",\n    \"editor.wordHighlightStrongBackground\": \"#ADD7FF40\",\n    \"editorBracketMatch.border\": \"#e4f0fb40\",\n    \"editorCursor.foreground\": \"#a6accd\",\n    \"editorGroup.border\": \"#00000030\",\n    \"editorGroupHeader.tabsBackground\": \"#1b1e28\",\n    \"editorHoverWidget.background\": \"#1b1e28\",\n    \"editorHoverWidget.border\": \"#ffffff10\",\n    \"editorIndentGuide.background\": \"#303340\",\n    \"editorLineNumber.foreground\": \"#767c9d50\",\n    \"editorLink.activeForeground\": \"#ADD7FF\",\n    \"editorSuggestWidget.background\": \"#1b1e28\",\n    \"editorSuggestWidget.border\": \"#ffffff10\",\n    \"editorSuggestWidget.foreground\": \"#a6accd\",\n    \"editorSuggestWidget.highlightForeground\": \"#5DE4c7\",\n    \"editorSuggestWidget.selectedBackground\": \"#00000050\",\n    \"editorWidget.background\": \"#1b1e28\",\n    \"editor.findRangeHighlightBackground\": \"#ADD7FF40\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#7abd7a4d\",\n    \"editor.foldBackground\": \"#717cb40b\",\n    \"editor.hoverHighlightBackground\": \"#264f7840\",\n    \"editor.inactiveSelectionBackground\": \"#717cb425\",\n    \"editor.linkedEditingBackground\": \"#d0679d4d\",\n    \"editor.rangeHighlightBackground\": \"#ffffff0b\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#525252\",\n    \"editor.snippetTabstopHighlightBackground\": \"#7c7c7c4d\",\n    \"editor.stackFrameHighlightBackground\": \"#ffff0033\",\n    \"editor.symbolHighlightBackground\": \"#89ddff60\",\n    \"editorBracketMatch.background\": \"#00000000\",\n    \"editorCodeLens.foreground\": \"#a6accd\",\n    \"editorError.foreground\": \"#d0679d\",\n    \"editorGroup.dropBackground\": \"#7390AA80\",\n    \"editorGroupHeader.noTabsBackground\": \"#1b1e28\",\n    \"editorGutter.background\": \"#1b1e28\",\n    \"editorGutter.commentRangeForeground\": \"#a6accd\",\n    \"editorGutter.foldingControlForeground\": \"#a6accd\",\n    \"editorGutter.addedBackground\": \"#5fb3a140\",\n    \"editorGutter.deletedBackground\": \"#d0679d40\",\n    \"editorGutter.modifiedBackground\": \"#ADD7FF20\",\n    \"editorHint.foreground\": \"#7390AAb3\",\n    \"editorHoverWidget.foreground\": \"#a6accd\",\n    \"editorHoverWidget.statusBarBackground\": \"#202430\",\n    \"editorIndentGuide.activeBackground\": \"#e3e4e229\",\n    \"editorInfo.foreground\": \"#ADD7FF\",\n    \"editorInlineHint.background\": \"#a6accd\",\n    \"editorInlineHint.foreground\": \"#1b1e28\",\n    \"editorLightBulb.foreground\": \"#fffac2\",\n    \"editorLightBulbAutoFix.foreground\": \"#ADD7FF\",\n    \"editorLineNumber.activeForeground\": \"#a6accd\",\n    \"editorMarkerNavigation.background\": \"#2d2d30\",\n    \"editorMarkerNavigationError.background\": \"#d0679d\",\n    \"editorMarkerNavigationInfo.background\": \"#ADD7FF\",\n    \"editorMarkerNavigationWarning.background\": \"#fffac2\",\n    \"editorOverviewRuler.addedForeground\": \"#5fb3a199\",\n    \"editorOverviewRuler.border\": \"#00000000\",\n    \"editorOverviewRuler.bracketMatchForeground\": \"#a0a0a0\",\n    \"editorOverviewRuler.commonContentForeground\": \"#a6accd66\",\n    \"editorOverviewRuler.currentContentForeground\": \"#5fb3a180\",\n    \"editorOverviewRuler.deletedForeground\": \"#d0679d99\",\n    \"editorOverviewRuler.errorForeground\": \"#d0679db3\",\n    \"editorOverviewRuler.findMatchForeground\": \"#e4f0fb20\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#89ddff80\",\n    \"editorOverviewRuler.infoForeground\": \"#ADD7FF\",\n    \"editorOverviewRuler.modifiedForeground\": \"#89ddff99\",\n    \"editorOverviewRuler.rangeHighlightForeground\": \"#89ddff99\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#a0a0a0cc\",\n    \"editorOverviewRuler.warningForeground\": \"#fffac2\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#a0a0a0cc\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#89ddffcc\",\n    \"editorPane.background\": \"#1b1e28\",\n    \"editorRuler.foreground\": \"#e4f0fb10\",\n    \"editorUnnecessaryCode.opacity\": \"#000000aa\",\n    \"editorWarning.foreground\": \"#fffac2\",\n    \"editorWhitespace.foreground\": \"#303340\",\n    \"editorWidget.border\": \"#a6accd\",\n    \"editorWidget.foreground\": \"#a6accd\",\n    \"extensionButton.prominentBackground\": \"#30334090\",\n    \"extensionButton.prominentHoverBackground\": \"#303340\",\n    \"focusBorder\": \"#00000000\",\n    \"input.background\": \"#ffffff05\",\n    \"input.border\": \"#ffffff10\",\n    \"input.foreground\": \"#e4f0fb\",\n    \"input.placeholderForeground\": \"#a6accd60\",\n    \"inputValidation.errorBorder\": \"#d0679d\",\n    \"inputValidation.errorForeground\": \"#d0679d\",\n    \"inputValidation.infoBorder\": \"#89ddff\",\n    \"inputValidation.warningBorder\": \"#fffac2\",\n    \"notifications.background\": \"#1b1e28\",\n    \"notifications.foreground\": \"#e4f0fb\",\n    \"panel.border\": \"#00000030\",\n    \"panelTitle.activeForeground\": \"#a6accd\",\n    \"peekView.border\": \"#00000030\",\n    \"peekViewEditor.background\": \"#a6accd05\",\n    \"peekViewEditorGutter.background\": \"#a6accd05\",\n    \"peekViewResult.background\": \"#a6accd05\",\n    \"peekViewTitle.background\": \"#a6accd05\",\n    \"peekViewTitleDescription.foreground\": \"#a6accd60\",\n    \"scrollbar.shadow\": \"#00000000\",\n    \"scrollbarSlider.activeBackground\": \"#a6accd25\",\n    \"scrollbarSlider.background\": \"#00000080\",\n    \"scrollbarSlider.hoverBackground\": \"#a6accd25\",\n    \"selection.background\": \"#a6accd\",\n    \"sideBar.background\": \"#1b1e28\",\n    \"sideBar.foreground\": \"#767c9d\",\n    \"sideBarSectionHeader.background\": \"#1b1e28\",\n    \"sideBarTitle.foreground\": \"#a6accd\",\n    \"statusBar.background\": \"#1b1e28\",\n    \"statusBar.foreground\": \"#a6accd\",\n    \"statusBar.noFolderBackground\": \"#1b1e28\",\n    \"tab.activeBackground\": \"#30334080\",\n    \"tab.activeForeground\": \"#e4f0fb\",\n    \"tab.border\": \"#00000000\",\n    \"tab.inactiveBackground\": \"#1b1e28\",\n    \"tab.inactiveForeground\": \"#767c9d\",\n    \"tab.unfocusedActiveForeground\": \"#a6accd\",\n    \"tab.activeModifiedBorder\": \"#ADD7FF\",\n    \"tab.inactiveModifiedBorder\": \"#ADD7FF80\",\n    \"tab.lastPinnedBorder\": \"#00000000\",\n    \"tab.unfocusedActiveBackground\": \"#1b1e28\",\n    \"tab.unfocusedActiveModifiedBorder\": \"#ADD7FF40\",\n    \"tab.unfocusedInactiveBackground\": \"#1b1e28\",\n    \"tab.unfocusedInactiveForeground\": \"#a6accd80\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#ADD7FF40\",\n    \"terminal.ansiBlack\": \"#1b1e28\",\n    \"terminal.ansiBlue\": \"#89ddff\",\n    \"terminal.ansiBrightBlack\": \"#a6accd\",\n    \"terminal.ansiBrightBlue\": \"#ADD7FF\",\n    \"terminal.ansiBrightCyan\": \"#ADD7FF\",\n    \"terminal.ansiBrightGreen\": \"#5DE4c7\",\n    \"terminal.ansiBrightMagenta\": \"#f087bd\",\n    \"terminal.ansiBrightRed\": \"#d0679d\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#fffac2\",\n    \"terminal.ansiCyan\": \"#89ddff\",\n    \"terminal.ansiGreen\": \"#5DE4c7\",\n    \"terminal.ansiMagenta\": \"#f087bd\",\n    \"terminal.ansiRed\": \"#d0679d\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#fffac2\",\n    \"textLink.activeForeground\": \"#ADD7FF\",\n    \"textLink.foreground\": \"#ADD7FF\",\n    \"titleBar.activeBackground\": \"#1b1e28\",\n    \"titleBar.activeForeground\": \"#a6accd\",\n    \"titleBar.inactiveBackground\": \"#1b1e28\",\n    \"titleBar.inactiveForeground\": \"#767c9d\",\n    \"tree.indentGuidesStroke\": \"#00000000\",\n    \"widget.shadow\": \"#00000030\",\n    \"activityBar.activeBorder\": \"#a6accd\",\n    \"activityBar.dropBorder\": \"#a6accd\",\n    \"activityBar.inactiveForeground\": \"#a6accd66\",\n    \"breadcrumb.activeSelectionForeground\": \"#e4f0fb\",\n    \"breadcrumb.background\": \"#00000000\",\n    \"breadcrumb.focusForeground\": \"#e4f0fb\",\n    \"breadcrumb.foreground\": \"#767c9dcc\",\n    \"breadcrumbPicker.background\": \"#1b1e28\",\n    \"button.foreground\": \"#ffffff\",\n    \"button.hoverBackground\": \"#50647750\",\n    \"button.secondaryBackground\": \"#a6accd\",\n    \"button.secondaryForeground\": \"#ffffff\",\n    \"button.secondaryHoverBackground\": \"#a6accd\",\n    \"charts.blue\": \"#ADD7FF\",\n    \"charts.foreground\": \"#a6accd\",\n    \"charts.green\": \"#5DE4c7\",\n    \"charts.lines\": \"#a6accd80\",\n    \"charts.orange\": \"#89ddff\",\n    \"charts.purple\": \"#f087bd\",\n    \"charts.red\": \"#d0679d\",\n    \"charts.yellow\": \"#fffac2\",\n    \"checkbox.background\": \"#1b1e28\",\n    \"checkbox.border\": \"#ffffff10\",\n    \"checkbox.foreground\": \"#e4f0fb\",\n    \"debugConsole.errorForeground\": \"#d0679d\",\n    \"debugConsole.infoForeground\": \"#ADD7FF\",\n    \"debugConsole.sourceForeground\": \"#a6accd\",\n    \"debugConsole.warningForeground\": \"#fffac2\",\n    \"debugConsoleInputIcon.foreground\": \"#a6accd\",\n    \"debugExceptionWidget.background\": \"#d0679d\",\n    \"debugExceptionWidget.border\": \"#d0679d\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#fffac2\",\n    \"debugIcon.breakpointDisabledForeground\": \"#7390AA\",\n    \"debugIcon.breakpointForeground\": \"#d0679d\",\n    \"debugIcon.breakpointStackframeForeground\": \"#5fb3a1\",\n    \"debugIcon.breakpointUnverifiedForeground\": \"#7390AA\",\n    \"debugIcon.continueForeground\": \"#ADD7FF\",\n    \"debugIcon.disconnectForeground\": \"#d0679d\",\n    \"debugIcon.pauseForeground\": \"#ADD7FF\",\n    \"debugIcon.restartForeground\": \"#5fb3a1\",\n    \"debugIcon.startForeground\": \"#5fb3a1\",\n    \"debugIcon.stepBackForeground\": \"#ADD7FF\",\n    \"debugIcon.stepIntoForeground\": \"#ADD7FF\",\n    \"debugIcon.stepOutForeground\": \"#ADD7FF\",\n    \"debugIcon.stepOverForeground\": \"#ADD7FF\",\n    \"debugIcon.stopForeground\": \"#d0679d\",\n    \"debugTokenExpression.boolean\": \"#89ddff\",\n    \"debugTokenExpression.error\": \"#d0679d\",\n    \"debugTokenExpression.name\": \"#e4f0fb\",\n    \"debugTokenExpression.number\": \"#5fb3a1\",\n    \"debugTokenExpression.string\": \"#89ddff\",\n    \"debugTokenExpression.value\": \"#a6accd99\",\n    \"debugToolBar.background\": \"#303340\",\n    \"debugView.exceptionLabelBackground\": \"#d0679d\",\n    \"debugView.exceptionLabelForeground\": \"#e4f0fb\",\n    \"debugView.stateLabelBackground\": \"#303340\",\n    \"debugView.stateLabelForeground\": \"#a6accd\",\n    \"debugView.valueChangedHighlight\": \"#89ddff\",\n    \"descriptionForeground\": \"#a6accdb3\",\n    \"diffEditor.diagonalFill\": \"#a6accd33\",\n    \"dropdown.foreground\": \"#e4f0fb\",\n    \"errorForeground\": \"#d0679d\",\n    \"extensionBadge.remoteBackground\": \"#303340\",\n    \"extensionBadge.remoteForeground\": \"#e4f0fb\",\n    \"extensionButton.prominentForeground\": \"#ffffff\",\n    \"extensionIcon.starForeground\": \"#fffac2\",\n    \"foreground\": \"#a6accd\",\n    \"gitDecoration.addedResourceForeground\": \"#5fb3a1\",\n    \"gitDecoration.conflictingResourceForeground\": \"#d0679d\",\n    \"gitDecoration.deletedResourceForeground\": \"#d0679d\",\n    \"gitDecoration.ignoredResourceForeground\": \"#767c9d70\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ADD7FF\",\n    \"gitDecoration.renamedResourceForeground\": \"#5DE4c7\",\n    \"gitDecoration.stageDeletedResourceForeground\": \"#d0679d\",\n    \"gitDecoration.stageModifiedResourceForeground\": \"#ADD7FF\",\n    \"gitDecoration.submoduleResourceForeground\": \"#89ddff\",\n    \"gitDecoration.untrackedResourceForeground\": \"#5DE4c7\",\n    \"icon.foreground\": \"#a6accd\",\n    \"imagePreview.border\": \"#303340\",\n    \"inputOption.activeBackground\": \"#00000000\",\n    \"inputOption.activeBorder\": \"#00000000\",\n    \"inputOption.activeForeground\": \"#ffffff\",\n    \"inputValidation.errorBackground\": \"#1b1e28\",\n    \"inputValidation.infoBackground\": \"#506477\",\n    \"inputValidation.warningBackground\": \"#506477\",\n    \"list.deemphasizedForeground\": \"#767c9d\",\n    \"list.dropBackground\": \"#506477\",\n    \"list.filterMatchBackground\": \"#89ddff60\",\n    \"list.focusOutline\": \"#00000000\",\n    \"list.invalidItemForeground\": \"#fffac2\",\n    \"list.warningForeground\": \"#fffac2\",\n    \"listFilterWidget.background\": \"#303340\",\n    \"listFilterWidget.noMatchesOutline\": \"#d0679d\",\n    \"listFilterWidget.outline\": \"#00000000\",\n    \"list.activeSelectionBackground\": \"#30334080\",\n    \"list.activeSelectionForeground\": \"#e4f0fb\",\n    \"list.errorForeground\": \"#d0679d\",\n    \"list.focusBackground\": \"#30334080\",\n    \"list.focusForeground\": \"#a6accd\",\n    \"list.highlightForeground\": \"#5fb3a1\",\n    \"list.hoverBackground\": \"#30334080\",\n    \"list.hoverForeground\": \"#e4f0fb\",\n    \"list.inactiveSelectionBackground\": \"#00000000\",\n    \"list.inactiveSelectionForeground\": \"#e4f0fb\",\n    \"menu.background\": \"#1b1e28\",\n    \"menu.foreground\": \"#e4f0fb\",\n    \"menu.selectionBackground\": \"#00000000\",\n    \"menu.selectionForeground\": \"#7390AA\",\n    \"menu.separatorBackground\": \"#767c9d\",\n    \"menubar.selectionBackground\": \"#717cb425\",\n    \"menubar.selectionForeground\": \"#a6accd\",\n    \"merge.commonContentBackground\": \"#a6accd29\",\n    \"merge.commonHeaderBackground\": \"#a6accd66\",\n    \"merge.currentContentBackground\": \"#5fb3a133\",\n    \"merge.currentHeaderBackground\": \"#5fb3a180\",\n    \"merge.incomingContentBackground\": \"#89ddff33\",\n    \"merge.incomingHeaderBackground\": \"#89ddff80\",\n    \"minimap.errorHighlight\": \"#d0679d\",\n    \"minimap.findMatchHighlight\": \"#ADD7FF\",\n    \"minimap.selectionHighlight\": \"#e4f0fb40\",\n    \"minimap.warningHighlight\": \"#fffac2\",\n    \"minimapGutter.addedBackground\": \"#5fb3a180\",\n    \"minimapGutter.deletedBackground\": \"#d0679d80\",\n    \"minimapGutter.modifiedBackground\": \"#ADD7FF80\",\n    \"minimapSlider.activeBackground\": \"#a6accd30\",\n    \"minimapSlider.background\": \"#a6accd20\",\n    \"minimapSlider.hoverBackground\": \"#a6accd30\",\n    \"notebook.cellBorderColor\": \"#1b1e28\",\n    \"notebook.cellInsertionIndicator\": \"#00000000\",\n    \"notebook.cellStatusBarItemHoverBackground\": \"#ffffff26\",\n    \"notebook.cellToolbarSeparator\": \"#303340\",\n    \"notebook.focusedCellBorder\": \"#00000000\",\n    \"notebook.focusedEditorBorder\": \"#00000000\",\n    \"notebook.focusedRowBorder\": \"#00000000\",\n    \"notebook.inactiveFocusedCellBorder\": \"#00000000\",\n    \"notebook.outputContainerBackgroundColor\": \"#1b1e28\",\n    \"notebook.rowHoverBackground\": \"#30334000\",\n    \"notebook.selectedCellBackground\": \"#303340\",\n    \"notebook.selectedCellBorder\": \"#1b1e28\",\n    \"notebook.symbolHighlightBackground\": \"#ffffff0b\",\n    \"notebookScrollbarSlider.activeBackground\": \"#a6accd25\",\n    \"notebookScrollbarSlider.background\": \"#00000050\",\n    \"notebookScrollbarSlider.hoverBackground\": \"#a6accd25\",\n    \"notebookStatusErrorIcon.foreground\": \"#d0679d\",\n    \"notebookStatusRunningIcon.foreground\": \"#a6accd\",\n    \"notebookStatusSuccessIcon.foreground\": \"#5fb3a1\",\n    \"notificationCenterHeader.background\": \"#303340\",\n    \"notificationLink.foreground\": \"#ADD7FF\",\n    \"notifications.border\": \"#303340\",\n    \"notificationsErrorIcon.foreground\": \"#d0679d\",\n    \"notificationsInfoIcon.foreground\": \"#ADD7FF\",\n    \"notificationsWarningIcon.foreground\": \"#fffac2\",\n    \"panel.background\": \"#1b1e28\",\n    \"panel.dropBorder\": \"#a6accd\",\n    \"panelSection.border\": \"#1b1e28\",\n    \"panelSection.dropBackground\": \"#7390AA80\",\n    \"panelSectionHeader.background\": \"#303340\",\n    \"panelTitle.activeBorder\": \"#a6accd\",\n    \"panelTitle.inactiveForeground\": \"#a6accd99\",\n    \"peekViewEditor.matchHighlightBackground\": \"#303340\",\n    \"peekViewResult.fileForeground\": \"#ffffff\",\n    \"peekViewResult.lineForeground\": \"#a6accd\",\n    \"peekViewResult.matchHighlightBackground\": \"#303340\",\n    \"peekViewResult.selectionBackground\": \"#717cb425\",\n    \"peekViewResult.selectionForeground\": \"#ffffff\",\n    \"peekViewTitleLabel.foreground\": \"#ffffff\",\n    \"pickerGroup.border\": \"#a6accd\",\n    \"pickerGroup.foreground\": \"#89ddff\",\n    \"problemsErrorIcon.foreground\": \"#d0679d\",\n    \"problemsInfoIcon.foreground\": \"#ADD7FF\",\n    \"problemsWarningIcon.foreground\": \"#fffac2\",\n    \"progressBar.background\": \"#89ddff\",\n    \"quickInput.background\": \"#1b1e28\",\n    \"quickInput.foreground\": \"#a6accd\",\n    \"quickInputList.focusBackground\": \"#a6accd10\",\n    \"quickInputTitle.background\": \"#ffffff1b\",\n    \"sash.hoverBorder\": \"#00000000\",\n    \"scm.providerBorder\": \"#e4f0fb10\",\n    \"searchEditor.findMatchBackground\": \"#ADD7FF50\",\n    \"searchEditor.textInputBorder\": \"#ffffff10\",\n    \"settings.checkboxBackground\": \"#1b1e28\",\n    \"settings.checkboxBorder\": \"#ffffff10\",\n    \"settings.checkboxForeground\": \"#e4f0fb\",\n    \"settings.dropdownBackground\": \"#1b1e28\",\n    \"settings.dropdownBorder\": \"#ffffff10\",\n    \"settings.dropdownForeground\": \"#e4f0fb\",\n    \"settings.dropdownListBorder\": \"#e4f0fb10\",\n    \"settings.focusedRowBackground\": \"#00000000\",\n    \"settings.headerForeground\": \"#e4f0fb\",\n    \"settings.modifiedItemIndicator\": \"#ADD7FF\",\n    \"settings.numberInputBackground\": \"#ffffff05\",\n    \"settings.numberInputBorder\": \"#ffffff10\",\n    \"settings.numberInputForeground\": \"#e4f0fb\",\n    \"settings.textInputBackground\": \"#ffffff05\",\n    \"settings.textInputBorder\": \"#ffffff10\",\n    \"settings.textInputForeground\": \"#e4f0fb\",\n    \"sideBar.dropBackground\": \"#7390AA80\",\n    \"sideBarSectionHeader.foreground\": \"#a6accd\",\n    \"statusBar.debuggingBackground\": \"#303340\",\n    \"statusBar.debuggingForeground\": \"#ffffff\",\n    \"statusBar.noFolderForeground\": \"#a6accd\",\n    \"statusBarItem.activeBackground\": \"#ffffff2e\",\n    \"statusBarItem.errorBackground\": \"#d0679d\",\n    \"statusBarItem.errorForeground\": \"#ffffff\",\n    \"statusBarItem.hoverBackground\": \"#ffffff1f\",\n    \"statusBarItem.prominentBackground\": \"#00000080\",\n    \"statusBarItem.prominentForeground\": \"#a6accd\",\n    \"statusBarItem.prominentHoverBackground\": \"#0000004d\",\n    \"statusBarItem.remoteBackground\": \"#303340\",\n    \"statusBarItem.remoteForeground\": \"#e4f0fb\",\n    \"symbolIcon.arrayForeground\": \"#a6accd\",\n    \"symbolIcon.booleanForeground\": \"#a6accd\",\n    \"symbolIcon.classForeground\": \"#fffac2\",\n    \"symbolIcon.colorForeground\": \"#a6accd\",\n    \"symbolIcon.constantForeground\": \"#a6accd\",\n    \"symbolIcon.constructorForeground\": \"#f087bd\",\n    \"symbolIcon.enumeratorForeground\": \"#fffac2\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#ADD7FF\",\n    \"symbolIcon.eventForeground\": \"#fffac2\",\n    \"symbolIcon.fieldForeground\": \"#ADD7FF\",\n    \"symbolIcon.fileForeground\": \"#a6accd\",\n    \"symbolIcon.folderForeground\": \"#a6accd\",\n    \"symbolIcon.functionForeground\": \"#f087bd\",\n    \"symbolIcon.interfaceForeground\": \"#ADD7FF\",\n    \"symbolIcon.keyForeground\": \"#a6accd\",\n    \"symbolIcon.keywordForeground\": \"#a6accd\",\n    \"symbolIcon.methodForeground\": \"#f087bd\",\n    \"symbolIcon.moduleForeground\": \"#a6accd\",\n    \"symbolIcon.namespaceForeground\": \"#a6accd\",\n    \"symbolIcon.nullForeground\": \"#a6accd\",\n    \"symbolIcon.numberForeground\": \"#a6accd\",\n    \"symbolIcon.objectForeground\": \"#a6accd\",\n    \"symbolIcon.operatorForeground\": \"#a6accd\",\n    \"symbolIcon.packageForeground\": \"#a6accd\",\n    \"symbolIcon.propertyForeground\": \"#a6accd\",\n    \"symbolIcon.referenceForeground\": \"#a6accd\",\n    \"symbolIcon.snippetForeground\": \"#a6accd\",\n    \"symbolIcon.stringForeground\": \"#a6accd\",\n    \"symbolIcon.structForeground\": \"#a6accd\",\n    \"symbolIcon.textForeground\": \"#a6accd\",\n    \"symbolIcon.typeParameterForeground\": \"#a6accd\",\n    \"symbolIcon.unitForeground\": \"#a6accd\",\n    \"symbolIcon.variableForeground\": \"#ADD7FF\",\n    \"terminal.border\": \"#00000000\",\n    \"terminal.foreground\": \"#a6accd\",\n    \"terminal.selectionBackground\": \"#717cb425\",\n    \"testing.iconErrored\": \"#d0679d\",\n    \"testing.iconFailed\": \"#d0679d\",\n    \"testing.iconPassed\": \"#5DE4c7\",\n    \"testing.iconQueued\": \"#fffac2\",\n    \"testing.iconSkipped\": \"#7390AA\",\n    \"testing.iconUnset\": \"#7390AA\",\n    \"testing.message.error.decorationForeground\": \"#d0679d\",\n    \"testing.message.error.lineBackground\": \"#d0679d33\",\n    \"testing.message.hint.decorationForeground\": \"#7390AAb3\",\n    \"testing.message.info.decorationForeground\": \"#ADD7FF\",\n    \"testing.message.info.lineBackground\": \"#89ddff33\",\n    \"testing.message.warning.decorationForeground\": \"#fffac2\",\n    \"testing.message.warning.lineBackground\": \"#fffac233\",\n    \"testing.peekBorder\": \"#d0679d\",\n    \"testing.runAction\": \"#5DE4c7\",\n    \"textBlockQuote.background\": \"#7390AA1a\",\n    \"textBlockQuote.border\": \"#89ddff80\",\n    \"textCodeBlock.background\": \"#00000050\",\n    \"textPreformat.foreground\": \"#e4f0fb\",\n    \"textSeparator.foreground\": \"#ffffff2e\",\n    \"tree.tableColumnsBorder\": \"#a6accd20\",\n    \"welcomePage.progress.background\": \"#ffffff05\",\n    \"welcomePage.progress.foreground\": \"#5fb3a1\",\n    \"welcomePage.tileBackground\": \"#1b1e28\",\n    \"welcomePage.tileHoverBackground\": \"#303340\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\"],\n      \"settings\": {\n        \"foreground\": \"#767c9dB0\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.parameters comment.block\",\n      \"settings\": {\n        \"foreground\": \"#a6accd\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.other.constant.object\",\n        \"variable.other.readwrite.alias\",\n        \"meta.import variable.other.readwrite\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"variable.other\", \"support.type.object\"],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.other.object.property\",\n        \"variable.other.property\",\n        \"support.variable.property\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.function.method\",\n        \"string.unquoted\",\n        \"meta.object.member\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable - meta.import\",\n        \"constant.other.placeholder\",\n        \"meta.object-literal.key-meta.object.member\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.control.flow\"],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7c0\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator.new\", \"keyword.control.new\"],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.language.this\",\n        \"storage.modifier.async\",\n        \"storage.modifier\",\n        \"variable.language.super\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.class.error\",\n        \"keyword.control.trycatch\",\n        \"keyword.operator.expression.delete\",\n        \"keyword.operator.expression.void\",\n        \"keyword.operator.void\",\n        \"keyword.operator.delete\",\n        \"constant.language.null\",\n        \"constant.language.boolean.false\",\n        \"constant.language.undefined\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d0679d\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.parameter\",\n        \"variable.other.readwrite.js\",\n        \"meta.definition.variable variable.other.constant\",\n        \"meta.definition.variable variable.other.readwrite\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"constant.other.color\"],\n      \"settings\": {\n        \"foreground\": \"#ffffff\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\", \"invalid.illegal\"],\n      \"settings\": {\n        \"foreground\": \"#d0679d\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#d0679d\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.control\", \"keyword\"],\n      \"settings\": {\n        \"foreground\": \"#a6accd\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator\", \"storage.type\"],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.control.module\",\n        \"keyword.control.import\",\n        \"keyword.control.export\",\n        \"keyword.control.default\",\n        \"meta.import\",\n        \"meta.export\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\"Keyword\", \"Storage\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"keyword-meta.export\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"meta.brace\", \"punctuation\", \"keyword.operator.existential\"],\n      \"settings\": {\n        \"foreground\": \"#a6accd\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.other.color\",\n        \"meta.tag\",\n        \"punctuation.definition.tag\",\n        \"punctuation.separator.inheritance.php\",\n        \"punctuation.definition.tag.html\",\n        \"punctuation.definition.tag.begin.html\",\n        \"punctuation.definition.tag.end.html\",\n        \"punctuation.section.embedded\",\n        \"keyword.other.template\",\n        \"keyword.other.substitution\",\n        \"meta.objectliteral\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"support.class.component\"],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.tag\",\n        \"entity.name.tag\",\n        \"meta.tag.sgml\",\n        \"markup.deleted.git_gutter\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"name\": \"Function Call\",\n      \"scope\": \"variable.function, source meta.function-call entity.name.function, source meta.function-call entity.name.function, source meta.method-call entity.name.function, meta.class meta.group.braces.curly meta.function-call variable.function, meta.class meta.field.declaration meta.function-call entity.name.function, variable.function.constructor, meta.block meta.var.expr meta.function-call entity.name.function, support.function.console, meta.function-call support.function, meta.property.class variable.other.class, punctuation.definition.entity.css\",\n      \"settings\": {\n        \"foreground\": \"#e4f0fbd0\"\n      }\n    },\n    {\n      \"name\": \"Function/Class Name\",\n      \"scope\": \"entity.name.function, meta.class entity.name.class, meta.class entity.name.type.class, meta.class meta.function-call variable.function, keyword.other.important\",\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"source.cpp meta.block variable.other\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"support.other.variable\", \"string.other.link\"],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"support.constant\",\n        \"constant.character\",\n        \"constant.escape\",\n        \"keyword.other.unit\",\n        \"keyword.other\",\n        \"string\",\n        \"constant.language\",\n        \"constant.other.symbol\",\n        \"constant.other.key\",\n        \"markup.heading\",\n        \"markup.inserted.git_gutter\",\n        \"meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js\",\n        \"text.html.derivative\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.inherited-class\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"meta.type.declaration\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.type.alias\"],\n      \"settings\": {\n        \"foreground\": \"#a6accd\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.control.as\", \"entity.name.type\", \"support.type\"],\n      \"settings\": {\n        \"foreground\": \"#a6accdC0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name\",\n        \"support.orther.namespace.use.php\",\n        \"meta.use.php\",\n        \"support.other.namespace.php\",\n        \"markup.changed.git_gutter\",\n        \"support.type.sys-types\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.class\",\n        \"support.constant\",\n        \"variable.other.constant.object\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.css support.type.property-name\",\n        \"source.sass support.type.property-name\",\n        \"source.scss support.type.property-name\",\n        \"source.less support.type.property-name\",\n        \"source.stylus support.type.property-name\",\n        \"source.postcss support.type.property-name\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.module.js\",\n        \"variable.import.parameter.js\",\n        \"variable.other.class.js\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"variable.language\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.method.js\"],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.class-method.js entity.name.function.js\",\n        \"variable.function.constructor\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name\"],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"text.html.basic entity.other.attribute-name.html\",\n        \"text.html.basic entity.other.attribute-name\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5fb3a1\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name.class\"],\n      \"settings\": {\n        \"foreground\": \"#5fb3a1\"\n      }\n    },\n    {\n      \"scope\": [\"source.sass keyword.control\"],\n      \"settings\": {\n        \"foreground\": \"#42675A\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted\"],\n      \"settings\": {\n        \"foreground\": \"#506477\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\"],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#5fb3a1\"\n      }\n    },\n    {\n      \"scope\": [\"constant.character.escape\"],\n      \"settings\": {\n        \"foreground\": \"#5fb3a1\"\n      }\n    },\n    {\n      \"scope\": [\"*url*\", \"*link*\", \"*uri*\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\",\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\n        \"tag.decorator.js entity.name.tag.js\",\n        \"tag.decorator.js punctuation.definition.tag.js\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#42675A\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.js constant.other.object.key.js string.unquoted.label.js\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5fb3a1\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#7390AA\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#7390AA\"\n      }\n    },\n    {\n      \"scope\": [\n        \"source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"text.html.markdown\",\n        \"punctuation.definition.list_item.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"text.html.markdown markup.inline.raw.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markdown.heading\",\n        \"markup.heading | markup.heading entity.name\",\n        \"markup.heading.markdown punctuation.definition.heading.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\"markup.italic\"],\n      \"settings\": {\n        \"foreground\": \"#7390AA\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"markup.bold\", \"markup.bold string\"],\n      \"settings\": {\n        \"foreground\": \"#7390AA\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.bold markup.italic\",\n        \"markup.italic markup.bold\",\n        \"markup.quote markup.bold\",\n        \"markup.bold markup.italic string\",\n        \"markup.italic markup.bold string\",\n        \"markup.quote markup.bold string\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#7390AA\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline\"],\n      \"settings\": {\n        \"foreground\": \"#7390AA\",\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"markup.strike\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"markup.quote punctuation.definition.blockquote.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\"markup.quote\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"string.other.link.title.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"string.other.link.description.title.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"constant.other.reference.link.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"markup.raw.block\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"markup.raw.block.fenced.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#50647750\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.fenced.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#50647750\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.raw.block.fenced.markdown\",\n        \"variable.language.fenced.markdown\",\n        \"punctuation.section.class.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\"variable.language.fenced.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#91B4D5\"\n      }\n    },\n    {\n      \"scope\": [\"meta.separator\"],\n      \"settings\": {\n        \"foreground\": \"#7390AA\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": [\"markup.table\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#89ddff\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#fffac2\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#d0679d\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.section.markdown\",\n        \"markup.heading.setext.1.markdown\",\n        \"markup.heading.setext.2.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e4f0fb\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.paragraph.markdown\",\n      \"settings\": {\n        \"foreground\": \"#e4f0fbd0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.from-file.diff\",\n        \"meta.diff.header.from-file\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#506477\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw.string.markdown\",\n      \"settings\": {\n        \"foreground\": \"#7390AA\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator.markdown\",\n      \"settings\": {\n        \"foreground\": \"#767c9d\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic.markdown\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"beginning.punctuation.definition.list.markdown\",\n        \"punctuation.definition.list.begin.markdown\",\n        \"markup.list.unnumbered.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.other.link.description.title.markdown punctuation.definition.string.markdown\",\n        \"meta.link.inline.markdown string.other.link.description.title.markdown\",\n        \"string.other.link.description.title.markdown punctuation.definition.string.begin.markdown\",\n        \"string.other.link.description.title.markdown punctuation.definition.string.end.markdown\",\n        \"meta.image.inline.markdown string.other.link.description.title.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\",\n        \"fontStyle\": \"\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.link.inline.markdown string.other.link.title.markdown\",\n        \"meta.link.reference.markdown string.other.link.title.markdown\",\n        \"meta.link.reference.def.markdown markup.underline.link.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\",\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.underline.link.markdown\",\n        \"string.other.link.description.title.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#5DE4c7\"\n      }\n    },\n    {\n      \"scope\": [\"fenced_code.block.language\", \"markup.inline.raw.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.markdown\",\n        \"punctuation.definition.raw.markdown\",\n        \"punctuation.definition.heading.markdown\",\n        \"punctuation.definition.bold.markdown\",\n        \"punctuation.definition.italic.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ADD7FF\"\n      }\n    },\n    {\n      \"scope\": [\"source.ignore\", \"log.error\", \"log.exception\"],\n      \"settings\": {\n        \"foreground\": \"#d0679d\"\n      }\n    },\n    {\n      \"scope\": [\"log.verbose\"],\n      \"settings\": {\n        \"foreground\": \"#a6accd\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/rose-pine-dawn.json",
    "content": "{\n  \"name\": \"rose-pine-dawn\",\n  \"type\": \"light\",\n  \"colors\": {\n    \"activityBar.activeBorder\": \"#575279\",\n    \"activityBar.background\": \"#faf4ed\",\n    \"activityBar.dropBorder\": \"#f2e9e1\",\n    \"activityBar.foreground\": \"#575279\",\n    \"activityBar.inactiveForeground\": \"#797593\",\n    \"activityBarBadge.background\": \"#d7827e\",\n    \"activityBarBadge.foreground\": \"#faf4ed\",\n    \"badge.background\": \"#d7827e\",\n    \"badge.foreground\": \"#faf4ed\",\n    \"banner.background\": \"#fffaf3\",\n    \"banner.foreground\": \"#575279\",\n    \"banner.iconForeground\": \"#797593\",\n    \"breadcrumb.activeSelectionForeground\": \"#d7827e\",\n    \"breadcrumb.background\": \"#faf4ed\",\n    \"breadcrumb.focusForeground\": \"#797593\",\n    \"breadcrumb.foreground\": \"#9893a5\",\n    \"breadcrumbPicker.background\": \"#fffaf3\",\n    \"button.background\": \"#d7827e\",\n    \"button.foreground\": \"#faf4ed\",\n    \"button.hoverBackground\": \"#d7827ee6\",\n    \"button.secondaryBackground\": \"#fffaf3\",\n    \"button.secondaryForeground\": \"#575279\",\n    \"button.secondaryHoverBackground\": \"#f2e9e1\",\n    \"charts.blue\": \"#56949f\",\n    \"charts.foreground\": \"#575279\",\n    \"charts.green\": \"#286983\",\n    \"charts.lines\": \"#797593\",\n    \"charts.orange\": \"#d7827e\",\n    \"charts.purple\": \"#907aa9\",\n    \"charts.red\": \"#b4637a\",\n    \"charts.yellow\": \"#ea9d34\",\n    \"checkbox.background\": \"#fffaf3\",\n    \"checkbox.border\": \"#6e6a8614\",\n    \"checkbox.foreground\": \"#575279\",\n    \"debugExceptionWidget.background\": \"#fffaf3\",\n    \"debugExceptionWidget.border\": \"#6e6a8614\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#797593\",\n    \"debugIcon.breakpointDisabledForeground\": \"#797593\",\n    \"debugIcon.breakpointForeground\": \"#797593\",\n    \"debugIcon.breakpointStackframeForeground\": \"#797593\",\n    \"debugIcon.breakpointUnverifiedForeground\": \"#797593\",\n    \"debugIcon.continueForeground\": \"#797593\",\n    \"debugIcon.disconnectForeground\": \"#797593\",\n    \"debugIcon.pauseForeground\": \"#797593\",\n    \"debugIcon.restartForeground\": \"#797593\",\n    \"debugIcon.startForeground\": \"#797593\",\n    \"debugIcon.stepBackForeground\": \"#797593\",\n    \"debugIcon.stepIntoForeground\": \"#797593\",\n    \"debugIcon.stepOutForeground\": \"#797593\",\n    \"debugIcon.stepOverForeground\": \"#797593\",\n    \"debugIcon.stopForeground\": \"#b4637a\",\n    \"debugToolBar.background\": \"#fffaf3\",\n    \"debugToolBar.border\": \"#f2e9e1\",\n    \"descriptionForeground\": \"#797593\",\n    \"diffEditor.border\": \"#f2e9e1\",\n    \"diffEditor.diagonalFill\": \"#6e6a8626\",\n    \"diffEditor.insertedTextBackground\": \"#56949f26\",\n    \"diffEditor.removedTextBackground\": \"#b4637a26\",\n    \"diffEditorOverview.insertedForeground\": \"#56949f80\",\n    \"diffEditorOverview.removedForeground\": \"#b4637a80\",\n    \"dropdown.background\": \"#fffaf3\",\n    \"dropdown.border\": \"#6e6a8614\",\n    \"dropdown.foreground\": \"#575279\",\n    \"dropdown.listBackground\": \"#fffaf3\",\n    \"editor.background\": \"#faf4ed\",\n    \"editor.findMatchBackground\": \"#6e6a8626\",\n    \"editor.findMatchHighlightBackground\": \"#6e6a8626\",\n    \"editor.findRangeHighlightBackground\": \"#6e6a8626\",\n    \"editor.findRangeHighlightBorder\": \"#0000\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#6e6a8614\",\n    \"editor.foldBackground\": \"#fffaf3\",\n    \"editor.foreground\": \"#575279\",\n    \"editor.hoverHighlightBackground\": \"#0000\",\n    \"editor.inactiveSelectionBackground\": \"#6e6a860d\",\n    \"editor.inlineValuesBackground\": \"#0000\",\n    \"editor.inlineValuesForeground\": \"#797593\",\n    \"editor.lineHighlightBackground\": \"#6e6a860d\",\n    \"editor.lineHighlightBorder\": \"#0000\",\n    \"editor.linkedEditingBackground\": \"#fffaf3\",\n    \"editor.rangeHighlightBackground\": \"#6e6a860d\",\n    \"editor.rangeHighlightBorder\": \"#0000\",\n    \"editor.selectionBackground\": \"#6e6a8614\",\n    \"editor.selectionForeground\": \"#575279\",\n    \"editor.selectionHighlightBackground\": \"#6e6a8614\",\n    \"editor.selectionHighlightBorder\": \"#0000\",\n    \"editor.snippetFinalTabstopHighlightBackground\": \"#6e6a8614\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#fffaf3\",\n    \"editor.snippetTabstopHighlightBackground\": \"#6e6a8614\",\n    \"editor.snippetTabstopHighlightBorder\": \"#fffaf3\",\n    \"editor.stackFrameHighlightBackground\": \"#6e6a8614\",\n    \"editor.symbolHighlightBackground\": \"#6e6a8614\",\n    \"editor.symbolHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightBackground\": \"#6e6a8614\",\n    \"editor.wordHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightStrongBackground\": \"#6e6a8614\",\n    \"editor.wordHighlightStrongBorder\": \"#6e6a8614\",\n    \"editorBracketHighlight.foreground1\": \"#b4637a80\",\n    \"editorBracketHighlight.foreground2\": \"#28698380\",\n    \"editorBracketHighlight.foreground3\": \"#ea9d3480\",\n    \"editorBracketHighlight.foreground4\": \"#56949f80\",\n    \"editorBracketHighlight.foreground5\": \"#d7827e80\",\n    \"editorBracketHighlight.foreground6\": \"#907aa980\",\n    \"editorBracketMatch.background\": \"#0000\",\n    \"editorBracketMatch.border\": \"#797593\",\n    \"editorBracketPairGuide.activeBackground1\": \"#286983\",\n    \"editorBracketPairGuide.activeBackground2\": \"#d7827e\",\n    \"editorBracketPairGuide.activeBackground3\": \"#907aa9\",\n    \"editorBracketPairGuide.activeBackground4\": \"#56949f\",\n    \"editorBracketPairGuide.activeBackground5\": \"#ea9d34\",\n    \"editorBracketPairGuide.activeBackground6\": \"#b4637a\",\n    \"editorBracketPairGuide.background1\": \"#28698380\",\n    \"editorBracketPairGuide.background2\": \"#d7827e80\",\n    \"editorBracketPairGuide.background3\": \"#907aa980\",\n    \"editorBracketPairGuide.background4\": \"#56949f80\",\n    \"editorBracketPairGuide.background5\": \"#ea9d3480\",\n    \"editorBracketPairGuide.background6\": \"#b4637a80\",\n    \"editorCodeLens.foreground\": \"#d7827e\",\n    \"editorCursor.background\": \"#575279\",\n    \"editorCursor.foreground\": \"#9893a5\",\n    \"editorError.border\": \"#0000\",\n    \"editorError.foreground\": \"#b4637a\",\n    \"editorGhostText.foreground\": \"#797593\",\n    \"editorGroup.border\": \"#0000\",\n    \"editorGroup.dropBackground\": \"#fffaf3\",\n    \"editorGroup.emptyBackground\": \"#0000\",\n    \"editorGroup.focusedEmptyBorder\": \"#0000\",\n    \"editorGroupHeader.noTabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBorder\": \"#0000\",\n    \"editorGutter.addedBackground\": \"#56949f\",\n    \"editorGutter.background\": \"#0000\",\n    \"editorGutter.commentRangeForeground\": \"#797593\",\n    \"editorGutter.deletedBackground\": \"#b4637a\",\n    \"editorGutter.foldingControlForeground\": \"#907aa9\",\n    \"editorGutter.modifiedBackground\": \"#d7827e\",\n    \"editorHint.border\": \"#0000\",\n    \"editorHint.foreground\": \"#797593\",\n    \"editorHoverWidget.background\": \"#fffaf3\",\n    \"editorHoverWidget.border\": \"#9893a580\",\n    \"editorHoverWidget.foreground\": \"#797593\",\n    \"editorHoverWidget.highlightForeground\": \"#575279\",\n    \"editorHoverWidget.statusBarBackground\": \"#0000\",\n    \"editorIndentGuide.activeBackground\": \"#9893a5\",\n    \"editorIndentGuide.background\": \"#6e6a8626\",\n    \"editorInfo.border\": \"#f2e9e1\",\n    \"editorInfo.foreground\": \"#56949f\",\n    \"editorInlayHint.background\": \"#f2e9e1\",\n    \"editorInlayHint.foreground\": \"#797593\",\n    \"editorInlayHint.parameterBackground\": \"#f2e9e1\",\n    \"editorInlayHint.parameterForeground\": \"#907aa9\",\n    \"editorInlayHint.typeBackground\": \"#f2e9e1\",\n    \"editorInlayHint.typeForeground\": \"#56949f\",\n    \"editorLightBulb.foreground\": \"#286983\",\n    \"editorLightBulbAutoFix.foreground\": \"#d7827e\",\n    \"editorLineNumber.activeForeground\": \"#575279\",\n    \"editorLineNumber.foreground\": \"#797593\",\n    \"editorLink.activeForeground\": \"#d7827e\",\n    \"editorMarkerNavigation.background\": \"#fffaf3\",\n    \"editorMarkerNavigationError.background\": \"#fffaf3\",\n    \"editorMarkerNavigationInfo.background\": \"#fffaf3\",\n    \"editorMarkerNavigationWarning.background\": \"#fffaf3\",\n    \"editorOverviewRuler.addedForeground\": \"#56949f80\",\n    \"editorOverviewRuler.background\": \"#faf4ed\",\n    \"editorOverviewRuler.border\": \"#6e6a8626\",\n    \"editorOverviewRuler.bracketMatchForeground\": \"#797593\",\n    \"editorOverviewRuler.commonContentForeground\": \"#6e6a860d\",\n    \"editorOverviewRuler.currentContentForeground\": \"#6e6a8614\",\n    \"editorOverviewRuler.deletedForeground\": \"#b4637a80\",\n    \"editorOverviewRuler.errorForeground\": \"#b4637a80\",\n    \"editorOverviewRuler.findMatchForeground\": \"#6e6a8626\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#907aa980\",\n    \"editorOverviewRuler.infoForeground\": \"#56949f80\",\n    \"editorOverviewRuler.modifiedForeground\": \"#d7827e80\",\n    \"editorOverviewRuler.rangeHighlightForeground\": \"#6e6a8626\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#6e6a8626\",\n    \"editorOverviewRuler.warningForeground\": \"#ea9d3480\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#6e6a8614\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#6e6a8626\",\n    \"editorPane.background\": \"#0000\",\n    \"editorRuler.foreground\": \"#6e6a8626\",\n    \"editorSuggestWidget.background\": \"#fffaf3\",\n    \"editorSuggestWidget.border\": \"#0000\",\n    \"editorSuggestWidget.focusHighlightForeground\": \"#d7827e\",\n    \"editorSuggestWidget.foreground\": \"#797593\",\n    \"editorSuggestWidget.highlightForeground\": \"#d7827e\",\n    \"editorSuggestWidget.selectedBackground\": \"#6e6a8614\",\n    \"editorSuggestWidget.selectedForeground\": \"#575279\",\n    \"editorSuggestWidget.selectedIconForeground\": \"#575279\",\n    \"editorUnnecessaryCode.border\": \"#0000\",\n    \"editorUnnecessaryCode.opacity\": \"#00000080\",\n    \"editorWarning.border\": \"#0000\",\n    \"editorWarning.foreground\": \"#ea9d34\",\n    \"editorWhitespace.foreground\": \"#9893a5\",\n    \"editorWidget.background\": \"#fffaf3\",\n    \"editorWidget.border\": \"#f2e9e1\",\n    \"editorWidget.foreground\": \"#797593\",\n    \"editorWidget.resizeBorder\": \"#9893a5\",\n    \"errorForeground\": \"#b4637a\",\n    \"extensionBadge.remoteBackground\": \"#907aa9\",\n    \"extensionBadge.remoteForeground\": \"#faf4ed\",\n    \"extensionButton.prominentBackground\": \"#d7827e\",\n    \"extensionButton.prominentForeground\": \"#faf4ed\",\n    \"extensionButton.prominentHoverBackground\": \"#d7827ee6\",\n    \"extensionIcon.starForeground\": \"#d7827e\",\n    \"extensionIcon.verifiedForeground\": \"#907aa9\",\n    \"focusBorder\": \"#6e6a8614\",\n    \"foreground\": \"#575279\",\n    \"gitDecoration.addedResourceForeground\": \"#56949f\",\n    \"gitDecoration.conflictingResourceForeground\": \"#b4637a\",\n    \"gitDecoration.deletedResourceForeground\": \"#797593\",\n    \"gitDecoration.ignoredResourceForeground\": \"#9893a5\",\n    \"gitDecoration.modifiedResourceForeground\": \"#d7827e\",\n    \"gitDecoration.renamedResourceForeground\": \"#286983\",\n    \"gitDecoration.stageDeletedResourceForeground\": \"#b4637a\",\n    \"gitDecoration.stageModifiedResourceForeground\": \"#907aa9\",\n    \"gitDecoration.submoduleResourceForeground\": \"#ea9d34\",\n    \"gitDecoration.untrackedResourceForeground\": \"#ea9d34\",\n    \"icon.foreground\": \"#797593\",\n    \"input.background\": \"#f2e9e180\",\n    \"input.border\": \"#6e6a8614\",\n    \"input.foreground\": \"#575279\",\n    \"input.placeholderForeground\": \"#797593\",\n    \"inputOption.activeBackground\": \"#d7827e\",\n    \"inputOption.activeBorder\": \"#0000\",\n    \"inputOption.activeForeground\": \"#faf4ed\",\n    \"inputValidation.errorBackground\": \"#fffaf3\",\n    \"inputValidation.errorBorder\": \"#6e6a8626\",\n    \"inputValidation.errorForeground\": \"#b4637a\",\n    \"inputValidation.infoBackground\": \"#fffaf3\",\n    \"inputValidation.infoBorder\": \"#6e6a8626\",\n    \"inputValidation.infoForeground\": \"#56949f\",\n    \"inputValidation.warningBackground\": \"#fffaf3\",\n    \"inputValidation.warningBorder\": \"#6e6a8626\",\n    \"inputValidation.warningForeground\": \"#56949f80\",\n    \"keybindingLabel.background\": \"#f2e9e1\",\n    \"keybindingLabel.border\": \"#6e6a8626\",\n    \"keybindingLabel.bottomBorder\": \"#6e6a8626\",\n    \"keybindingLabel.foreground\": \"#907aa9\",\n    \"keybindingTable.headerBackground\": \"#f2e9e1\",\n    \"keybindingTable.rowsBackground\": \"#fffaf3\",\n    \"list.activeSelectionBackground\": \"#6e6a8614\",\n    \"list.activeSelectionForeground\": \"#575279\",\n    \"list.activeSelectionIconForeground\": \"#575279\",\n    \"list.deemphasizedForeground\": \"#797593\",\n    \"list.dropBackground\": \"#fffaf3\",\n    \"list.errorForeground\": \"#b4637a\",\n    \"list.filterMatchBackground\": \"#fffaf3\",\n    \"list.filterMatchBorder\": \"#d7827e\",\n    \"list.focusBackground\": \"#6e6a8626\",\n    \"list.focusForeground\": \"#575279\",\n    \"list.focusOutline\": \"#6e6a8614\",\n    \"list.highlightForeground\": \"#d7827e\",\n    \"list.hoverBackground\": \"#6e6a860d\",\n    \"list.hoverForeground\": \"#575279\",\n    \"list.inactiveFocusBackground\": \"#6e6a860d\",\n    \"list.inactiveSelectionBackground\": \"#fffaf3\",\n    \"list.inactiveSelectionForeground\": \"#575279\",\n    \"list.inactiveSelectionIconForeground\": \"#797593\",\n    \"list.invalidItemForeground\": \"#b4637a\",\n    \"list.warningForeground\": \"#ea9d34\",\n    \"listFilterWidget.background\": \"#fffaf3\",\n    \"listFilterWidget.noMatchesOutline\": \"#b4637a\",\n    \"listFilterWidget.outline\": \"#f2e9e1\",\n    \"menu.background\": \"#fffaf3\",\n    \"menu.border\": \"#6e6a860d\",\n    \"menu.foreground\": \"#575279\",\n    \"menu.selectionBackground\": \"#6e6a8614\",\n    \"menu.selectionBorder\": \"#f2e9e1\",\n    \"menu.selectionForeground\": \"#575279\",\n    \"menu.separatorBackground\": \"#6e6a8626\",\n    \"menubar.selectionBackground\": \"#6e6a8614\",\n    \"menubar.selectionBorder\": \"#6e6a860d\",\n    \"menubar.selectionForeground\": \"#575279\",\n    \"merge.border\": \"#f2e9e1\",\n    \"merge.commonContentBackground\": \"#6e6a8614\",\n    \"merge.commonHeaderBackground\": \"#6e6a8614\",\n    \"merge.currentContentBackground\": \"#ea9d3480\",\n    \"merge.currentHeaderBackground\": \"#ea9d3480\",\n    \"merge.incomingContentBackground\": \"#56949f80\",\n    \"merge.incomingHeaderBackground\": \"#56949f80\",\n    \"minimap.background\": \"#fffaf3\",\n    \"minimap.errorHighlight\": \"#b4637a80\",\n    \"minimap.findMatchHighlight\": \"#6e6a8614\",\n    \"minimap.selectionHighlight\": \"#6e6a8614\",\n    \"minimap.warningHighlight\": \"#ea9d3480\",\n    \"minimapGutter.addedBackground\": \"#56949f\",\n    \"minimapGutter.deletedBackground\": \"#b4637a\",\n    \"minimapGutter.modifiedBackground\": \"#d7827e\",\n    \"minimapSlider.activeBackground\": \"#6e6a8626\",\n    \"minimapSlider.background\": \"#6e6a8614\",\n    \"minimapSlider.hoverBackground\": \"#6e6a8614\",\n    \"notificationCenter.border\": \"#6e6a8614\",\n    \"notificationCenterHeader.background\": \"#fffaf3\",\n    \"notificationCenterHeader.foreground\": \"#797593\",\n    \"notificationLink.foreground\": \"#907aa9\",\n    \"notifications.background\": \"#fffaf3\",\n    \"notifications.border\": \"#6e6a8614\",\n    \"notifications.foreground\": \"#575279\",\n    \"notificationsErrorIcon.foreground\": \"#b4637a\",\n    \"notificationsInfoIcon.foreground\": \"#56949f\",\n    \"notificationsWarningIcon.foreground\": \"#ea9d34\",\n    \"notificationToast.border\": \"#6e6a8614\",\n    \"panel.background\": \"#fffaf3\",\n    \"panel.border\": \"#0000\",\n    \"panel.dropBorder\": \"#f2e9e1\",\n    \"panelInput.border\": \"#fffaf3\",\n    \"panelSection.dropBackground\": \"#6e6a8614\",\n    \"panelSectionHeader.background\": \"#fffaf3\",\n    \"panelSectionHeader.foreground\": \"#575279\",\n    \"panelTitle.activeBorder\": \"#6e6a8626\",\n    \"panelTitle.activeForeground\": \"#575279\",\n    \"panelTitle.inactiveForeground\": \"#797593\",\n    \"peekView.border\": \"#f2e9e1\",\n    \"peekViewEditor.background\": \"#fffaf3\",\n    \"peekViewEditor.matchHighlightBackground\": \"#6e6a8626\",\n    \"peekViewResult.background\": \"#fffaf3\",\n    \"peekViewResult.fileForeground\": \"#797593\",\n    \"peekViewResult.lineForeground\": \"#797593\",\n    \"peekViewResult.matchHighlightBackground\": \"#6e6a8626\",\n    \"peekViewResult.selectionBackground\": \"#6e6a8614\",\n    \"peekViewResult.selectionForeground\": \"#575279\",\n    \"peekViewTitle.background\": \"#f2e9e1\",\n    \"peekViewTitleDescription.foreground\": \"#797593\",\n    \"pickerGroup.border\": \"#6e6a8626\",\n    \"pickerGroup.foreground\": \"#907aa9\",\n    \"ports.iconRunningProcessForeground\": \"#d7827e\",\n    \"problemsErrorIcon.foreground\": \"#b4637a\",\n    \"problemsInfoIcon.foreground\": \"#56949f\",\n    \"problemsWarningIcon.foreground\": \"#ea9d34\",\n    \"progressBar.background\": \"#d7827e\",\n    \"quickInput.background\": \"#fffaf3\",\n    \"quickInput.foreground\": \"#797593\",\n    \"quickInputList.focusBackground\": \"#6e6a8614\",\n    \"quickInputList.focusForeground\": \"#575279\",\n    \"quickInputList.focusIconForeground\": \"#575279\",\n    \"scrollbar.shadow\": \"#0000\",\n    \"scrollbarSlider.activeBackground\": \"#28698380\",\n    \"scrollbarSlider.background\": \"#6e6a8614\",\n    \"scrollbarSlider.hoverBackground\": \"#6e6a8626\",\n    \"searchEditor.findMatchBackground\": \"#6e6a8614\",\n    \"selection.background\": \"#6e6a8626\",\n    \"settings.focusedRowBackground\": \"#fffaf3\",\n    \"settings.headerForeground\": \"#575279\",\n    \"settings.modifiedItemIndicator\": \"#d7827e\",\n    \"settings.focusedRowBorder\": \"#6e6a8614\",\n    \"settings.rowHoverBackground\": \"#fffaf3\",\n    \"sideBar.background\": \"#faf4ed\",\n    \"sideBar.dropBackground\": \"#fffaf3\",\n    \"sideBar.foreground\": \"#797593\",\n    \"sideBarSectionHeader.background\": \"#0000\",\n    \"sideBarSectionHeader.border\": \"#6e6a8614\",\n    \"statusBar.background\": \"#faf4ed\",\n    \"statusBar.debuggingBackground\": \"#907aa9\",\n    \"statusBar.debuggingForeground\": \"#faf4ed\",\n    \"statusBar.foreground\": \"#797593\",\n    \"statusBar.noFolderBackground\": \"#faf4ed\",\n    \"statusBar.noFolderForeground\": \"#797593\",\n    \"statusBarItem.activeBackground\": \"#6e6a8626\",\n    \"statusBarItem.hoverBackground\": \"#6e6a8614\",\n    \"statusBarItem.prominentBackground\": \"#f2e9e1\",\n    \"statusBarItem.prominentForeground\": \"#575279\",\n    \"statusBarItem.prominentHoverBackground\": \"#6e6a8614\",\n    \"statusBarItem.remoteBackground\": \"#faf4ed\",\n    \"statusBarItem.remoteForeground\": \"#ea9d34\",\n    \"statusBarItem.errorBackground\": \"#faf4ed\",\n    \"statusBarItem.errorForeground\": \"#b4637a\",\n    \"symbolIcon.arrayForeground\": \"#797593\",\n    \"symbolIcon.classForeground\": \"#797593\",\n    \"symbolIcon.colorForeground\": \"#797593\",\n    \"symbolIcon.constantForeground\": \"#797593\",\n    \"symbolIcon.constructorForeground\": \"#797593\",\n    \"symbolIcon.enumeratorForeground\": \"#797593\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#797593\",\n    \"symbolIcon.eventForeground\": \"#797593\",\n    \"symbolIcon.fieldForeground\": \"#797593\",\n    \"symbolIcon.fileForeground\": \"#797593\",\n    \"symbolIcon.folderForeground\": \"#797593\",\n    \"symbolIcon.functionForeground\": \"#797593\",\n    \"symbolIcon.interfaceForeground\": \"#797593\",\n    \"symbolIcon.keyForeground\": \"#797593\",\n    \"symbolIcon.keywordForeground\": \"#797593\",\n    \"symbolIcon.methodForeground\": \"#797593\",\n    \"symbolIcon.moduleForeground\": \"#797593\",\n    \"symbolIcon.namespaceForeground\": \"#797593\",\n    \"symbolIcon.nullForeground\": \"#797593\",\n    \"symbolIcon.numberForeground\": \"#797593\",\n    \"symbolIcon.objectForeground\": \"#797593\",\n    \"symbolIcon.operatorForeground\": \"#797593\",\n    \"symbolIcon.packageForeground\": \"#797593\",\n    \"symbolIcon.propertyForeground\": \"#797593\",\n    \"symbolIcon.referenceForeground\": \"#797593\",\n    \"symbolIcon.snippetForeground\": \"#797593\",\n    \"symbolIcon.stringForeground\": \"#797593\",\n    \"symbolIcon.structForeground\": \"#797593\",\n    \"symbolIcon.textForeground\": \"#797593\",\n    \"symbolIcon.typeParameterForeground\": \"#797593\",\n    \"symbolIcon.unitForeground\": \"#797593\",\n    \"symbolIcon.variableForeground\": \"#797593\",\n    \"tab.activeBackground\": \"#6e6a860d\",\n    \"tab.activeForeground\": \"#575279\",\n    \"tab.activeModifiedBorder\": \"#56949f\",\n    \"tab.border\": \"#0000\",\n    \"tab.hoverBackground\": \"#6e6a8614\",\n    \"tab.inactiveBackground\": \"#0000\",\n    \"tab.inactiveForeground\": \"#797593\",\n    \"tab.inactiveModifiedBorder\": \"#56949f80\",\n    \"tab.lastPinnedBorder\": \"#9893a5\",\n    \"tab.unfocusedActiveBackground\": \"#0000\",\n    \"tab.unfocusedHoverBackground\": \"#0000\",\n    \"tab.unfocusedInactiveBackground\": \"#0000\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#56949f80\",\n    \"terminal.ansiBlack\": \"#f2e9e1\",\n    \"terminal.ansiBlue\": \"#56949f\",\n    \"terminal.ansiBrightBlack\": \"#797593\",\n    \"terminal.ansiBrightBlue\": \"#56949f\",\n    \"terminal.ansiBrightCyan\": \"#d7827e\",\n    \"terminal.ansiBrightGreen\": \"#286983\",\n    \"terminal.ansiBrightMagenta\": \"#907aa9\",\n    \"terminal.ansiBrightRed\": \"#b4637a\",\n    \"terminal.ansiBrightWhite\": \"#575279\",\n    \"terminal.ansiBrightYellow\": \"#ea9d34\",\n    \"terminal.ansiCyan\": \"#d7827e\",\n    \"terminal.ansiGreen\": \"#286983\",\n    \"terminal.ansiMagenta\": \"#907aa9\",\n    \"terminal.ansiRed\": \"#b4637a\",\n    \"terminal.ansiWhite\": \"#575279\",\n    \"terminal.ansiYellow\": \"#ea9d34\",\n    \"terminal.dropBackground\": \"#6e6a8614\",\n    \"terminal.foreground\": \"#575279\",\n    \"terminal.selectionBackground\": \"#6e6a8614\",\n    \"terminal.tab.activeBorder\": \"#575279\",\n    \"terminalCursor.background\": \"#575279\",\n    \"terminalCursor.foreground\": \"#9893a5\",\n    \"textBlockQuote.background\": \"#fffaf3\",\n    \"textBlockQuote.border\": \"#6e6a8614\",\n    \"textCodeBlock.background\": \"#fffaf3\",\n    \"textLink.activeForeground\": \"#907aa9e6\",\n    \"textLink.foreground\": \"#907aa9\",\n    \"textPreformat.foreground\": \"#ea9d34\",\n    \"textSeparator.foreground\": \"#797593\",\n    \"titleBar.activeBackground\": \"#faf4ed\",\n    \"titleBar.activeForeground\": \"#797593\",\n    \"titleBar.inactiveBackground\": \"#fffaf3\",\n    \"titleBar.inactiveForeground\": \"#797593\",\n    \"toolbar.activeBackground\": \"#6e6a8626\",\n    \"toolbar.hoverBackground\": \"#6e6a8614\",\n    \"tree.indentGuidesStroke\": \"#797593\",\n    \"walkThrough.embeddedEditorBackground\": \"#faf4ed\",\n    \"welcomePage.background\": \"#faf4ed\",\n    \"welcomePage.buttonBackground\": \"#fffaf3\",\n    \"welcomePage.buttonHoverBackground\": \"#f2e9e1\",\n    \"widget.shadow\": \"#f2e9de4d\",\n    \"window.activeBorder\": \"#fffaf3\",\n    \"window.inactiveBorder\": \"#fffaf3\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\"],\n      \"settings\": {\n        \"foreground\": \"#9893a5\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"constant\"],\n      \"settings\": {\n        \"foreground\": \"#286983\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.language\",\n        \"constant.charcter.escape\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d7827e\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name\"],\n      \"settings\": {\n        \"foreground\": \"#d7827e\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.section\",\n        \"entity.name.tag\",\n        \"entity.name.namespace\",\n        \"entity.name.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#56949f\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name\", \"entity.other.inherited-class\"],\n      \"settings\": {\n        \"foreground\": \"#907aa9\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\"],\n      \"settings\": {\n        \"foreground\": \"#b4637a\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#797593\"\n      }\n    },\n    {\n      \"scope\": [\"keyword\"],\n      \"settings\": {\n        \"foreground\": \"#286983\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#56949f\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#b4637a\"\n      }\n    },\n    {\n      \"scope\": [\"meta.diff.range\"],\n      \"settings\": {\n        \"foreground\": \"#907aa9\"\n      }\n    },\n    {\n      \"scope\": [\"meta.tag\", \"meta.brace\"],\n      \"settings\": {\n        \"foreground\": \"#575279\"\n      }\n    },\n    {\n      \"scope\": [\"meta.import\", \"meta.export\"],\n      \"settings\": {\n        \"foreground\": \"#286983\"\n      }\n    },\n    {\n      \"scope\": \"meta.directive.vue\",\n      \"settings\": {\n        \"foreground\": \"#907aa9\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#56949f\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-value.css\",\n      \"settings\": {\n        \"foreground\": \"#ea9d34\"\n      }\n    },\n    {\n      \"scope\": \"meta.tag.other.html\",\n      \"settings\": {\n        \"foreground\": \"#797593\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation\"],\n      \"settings\": {\n        \"foreground\": \"#797593\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.accessor\"],\n      \"settings\": {\n        \"foreground\": \"#286983\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.string\"],\n      \"settings\": {\n        \"foreground\": \"#ea9d34\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.tag\"],\n      \"settings\": {\n        \"foreground\": \"#9893a5\"\n      }\n    },\n    {\n      \"scope\": [\"storage.type\", \"storage.modifier\"],\n      \"settings\": {\n        \"foreground\": \"#286983\"\n      }\n    },\n    {\n      \"scope\": [\"string\"],\n      \"settings\": {\n        \"foreground\": \"#ea9d34\"\n      }\n    },\n    {\n      \"scope\": [\"support\"],\n      \"settings\": {\n        \"foreground\": \"#56949f\"\n      }\n    },\n    {\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"foreground\": \"#ea9d34\"\n      }\n    },\n    {\n      \"scope\": [\"support.function\"],\n      \"settings\": {\n        \"foreground\": \"#b4637a\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"variable\"],\n      \"settings\": {\n        \"foreground\": \"#d7827e\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.other\",\n        \"variable.language\",\n        \"variable.function\",\n        \"variable.argument\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#575279\"\n      }\n    },\n    {\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"foreground\": \"#907aa9\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/rose-pine-moon.json",
    "content": "{\n  \"name\": \"rose-pine-moon\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"activityBar.activeBorder\": \"#e0def4\",\n    \"activityBar.background\": \"#232136\",\n    \"activityBar.dropBorder\": \"#393552\",\n    \"activityBar.foreground\": \"#e0def4\",\n    \"activityBar.inactiveForeground\": \"#908caa\",\n    \"activityBarBadge.background\": \"#ea9a97\",\n    \"activityBarBadge.foreground\": \"#232136\",\n    \"badge.background\": \"#ea9a97\",\n    \"badge.foreground\": \"#232136\",\n    \"banner.background\": \"#2a273f\",\n    \"banner.foreground\": \"#e0def4\",\n    \"banner.iconForeground\": \"#908caa\",\n    \"breadcrumb.activeSelectionForeground\": \"#ea9a97\",\n    \"breadcrumb.background\": \"#232136\",\n    \"breadcrumb.focusForeground\": \"#908caa\",\n    \"breadcrumb.foreground\": \"#6e6a86\",\n    \"breadcrumbPicker.background\": \"#2a273f\",\n    \"button.background\": \"#ea9a97\",\n    \"button.foreground\": \"#232136\",\n    \"button.hoverBackground\": \"#ea9a97e6\",\n    \"button.secondaryBackground\": \"#2a273f\",\n    \"button.secondaryForeground\": \"#e0def4\",\n    \"button.secondaryHoverBackground\": \"#393552\",\n    \"charts.blue\": \"#9ccfd8\",\n    \"charts.foreground\": \"#e0def4\",\n    \"charts.green\": \"#3e8fb0\",\n    \"charts.lines\": \"#908caa\",\n    \"charts.orange\": \"#ea9a97\",\n    \"charts.purple\": \"#c4a7e7\",\n    \"charts.red\": \"#eb6f92\",\n    \"charts.yellow\": \"#f6c177\",\n    \"checkbox.background\": \"#2a273f\",\n    \"checkbox.border\": \"#817c9c26\",\n    \"checkbox.foreground\": \"#e0def4\",\n    \"debugExceptionWidget.background\": \"#2a273f\",\n    \"debugExceptionWidget.border\": \"#817c9c26\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#908caa\",\n    \"debugIcon.breakpointDisabledForeground\": \"#908caa\",\n    \"debugIcon.breakpointForeground\": \"#908caa\",\n    \"debugIcon.breakpointStackframeForeground\": \"#908caa\",\n    \"debugIcon.breakpointUnverifiedForeground\": \"#908caa\",\n    \"debugIcon.continueForeground\": \"#908caa\",\n    \"debugIcon.disconnectForeground\": \"#908caa\",\n    \"debugIcon.pauseForeground\": \"#908caa\",\n    \"debugIcon.restartForeground\": \"#908caa\",\n    \"debugIcon.startForeground\": \"#908caa\",\n    \"debugIcon.stepBackForeground\": \"#908caa\",\n    \"debugIcon.stepIntoForeground\": \"#908caa\",\n    \"debugIcon.stepOutForeground\": \"#908caa\",\n    \"debugIcon.stepOverForeground\": \"#908caa\",\n    \"debugIcon.stopForeground\": \"#eb6f92\",\n    \"debugToolBar.background\": \"#2a273f\",\n    \"debugToolBar.border\": \"#393552\",\n    \"descriptionForeground\": \"#908caa\",\n    \"diffEditor.border\": \"#393552\",\n    \"diffEditor.diagonalFill\": \"#817c9c4d\",\n    \"diffEditor.insertedTextBackground\": \"#9ccfd826\",\n    \"diffEditor.removedTextBackground\": \"#eb6f9226\",\n    \"diffEditorOverview.insertedForeground\": \"#9ccfd880\",\n    \"diffEditorOverview.removedForeground\": \"#eb6f9280\",\n    \"dropdown.background\": \"#2a273f\",\n    \"dropdown.border\": \"#817c9c26\",\n    \"dropdown.foreground\": \"#e0def4\",\n    \"dropdown.listBackground\": \"#2a273f\",\n    \"editor.background\": \"#232136\",\n    \"editor.findMatchBackground\": \"#817c9c4d\",\n    \"editor.findMatchHighlightBackground\": \"#817c9c4d\",\n    \"editor.findRangeHighlightBackground\": \"#817c9c4d\",\n    \"editor.findRangeHighlightBorder\": \"#0000\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#817c9c26\",\n    \"editor.foldBackground\": \"#2a273f\",\n    \"editor.foreground\": \"#e0def4\",\n    \"editor.hoverHighlightBackground\": \"#0000\",\n    \"editor.inactiveSelectionBackground\": \"#817c9c14\",\n    \"editor.inlineValuesBackground\": \"#0000\",\n    \"editor.inlineValuesForeground\": \"#908caa\",\n    \"editor.lineHighlightBackground\": \"#817c9c14\",\n    \"editor.lineHighlightBorder\": \"#0000\",\n    \"editor.linkedEditingBackground\": \"#2a273f\",\n    \"editor.rangeHighlightBackground\": \"#817c9c14\",\n    \"editor.rangeHighlightBorder\": \"#0000\",\n    \"editor.selectionBackground\": \"#817c9c26\",\n    \"editor.selectionForeground\": \"#e0def4\",\n    \"editor.selectionHighlightBackground\": \"#817c9c26\",\n    \"editor.selectionHighlightBorder\": \"#0000\",\n    \"editor.snippetFinalTabstopHighlightBackground\": \"#817c9c26\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#2a273f\",\n    \"editor.snippetTabstopHighlightBackground\": \"#817c9c26\",\n    \"editor.snippetTabstopHighlightBorder\": \"#2a273f\",\n    \"editor.stackFrameHighlightBackground\": \"#817c9c26\",\n    \"editor.symbolHighlightBackground\": \"#817c9c26\",\n    \"editor.symbolHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightBackground\": \"#817c9c26\",\n    \"editor.wordHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightStrongBackground\": \"#817c9c26\",\n    \"editor.wordHighlightStrongBorder\": \"#817c9c26\",\n    \"editorBracketHighlight.foreground1\": \"#eb6f9280\",\n    \"editorBracketHighlight.foreground2\": \"#3e8fb080\",\n    \"editorBracketHighlight.foreground3\": \"#f6c17780\",\n    \"editorBracketHighlight.foreground4\": \"#9ccfd880\",\n    \"editorBracketHighlight.foreground5\": \"#ea9a9780\",\n    \"editorBracketHighlight.foreground6\": \"#c4a7e780\",\n    \"editorBracketMatch.background\": \"#0000\",\n    \"editorBracketMatch.border\": \"#908caa\",\n    \"editorBracketPairGuide.activeBackground1\": \"#3e8fb0\",\n    \"editorBracketPairGuide.activeBackground2\": \"#ea9a97\",\n    \"editorBracketPairGuide.activeBackground3\": \"#c4a7e7\",\n    \"editorBracketPairGuide.activeBackground4\": \"#9ccfd8\",\n    \"editorBracketPairGuide.activeBackground5\": \"#f6c177\",\n    \"editorBracketPairGuide.activeBackground6\": \"#eb6f92\",\n    \"editorBracketPairGuide.background1\": \"#3e8fb080\",\n    \"editorBracketPairGuide.background2\": \"#ea9a9780\",\n    \"editorBracketPairGuide.background3\": \"#c4a7e780\",\n    \"editorBracketPairGuide.background4\": \"#9ccfd880\",\n    \"editorBracketPairGuide.background5\": \"#f6c17780\",\n    \"editorBracketPairGuide.background6\": \"#eb6f9280\",\n    \"editorCodeLens.foreground\": \"#ea9a97\",\n    \"editorCursor.background\": \"#e0def4\",\n    \"editorCursor.foreground\": \"#6e6a86\",\n    \"editorError.border\": \"#0000\",\n    \"editorError.foreground\": \"#eb6f92\",\n    \"editorGhostText.foreground\": \"#908caa\",\n    \"editorGroup.border\": \"#0000\",\n    \"editorGroup.dropBackground\": \"#2a273f\",\n    \"editorGroup.emptyBackground\": \"#0000\",\n    \"editorGroup.focusedEmptyBorder\": \"#0000\",\n    \"editorGroupHeader.noTabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBorder\": \"#0000\",\n    \"editorGutter.addedBackground\": \"#9ccfd8\",\n    \"editorGutter.background\": \"#0000\",\n    \"editorGutter.commentRangeForeground\": \"#908caa\",\n    \"editorGutter.deletedBackground\": \"#eb6f92\",\n    \"editorGutter.foldingControlForeground\": \"#c4a7e7\",\n    \"editorGutter.modifiedBackground\": \"#ea9a97\",\n    \"editorHint.border\": \"#0000\",\n    \"editorHint.foreground\": \"#908caa\",\n    \"editorHoverWidget.background\": \"#2a273f\",\n    \"editorHoverWidget.border\": \"#6e6a8680\",\n    \"editorHoverWidget.foreground\": \"#908caa\",\n    \"editorHoverWidget.highlightForeground\": \"#e0def4\",\n    \"editorHoverWidget.statusBarBackground\": \"#0000\",\n    \"editorIndentGuide.activeBackground\": \"#6e6a86\",\n    \"editorIndentGuide.background\": \"#817c9c4d\",\n    \"editorInfo.border\": \"#393552\",\n    \"editorInfo.foreground\": \"#9ccfd8\",\n    \"editorInlayHint.background\": \"#393552\",\n    \"editorInlayHint.foreground\": \"#908caa\",\n    \"editorInlayHint.parameterBackground\": \"#393552\",\n    \"editorInlayHint.parameterForeground\": \"#c4a7e7\",\n    \"editorInlayHint.typeBackground\": \"#393552\",\n    \"editorInlayHint.typeForeground\": \"#9ccfd8\",\n    \"editorLightBulb.foreground\": \"#3e8fb0\",\n    \"editorLightBulbAutoFix.foreground\": \"#ea9a97\",\n    \"editorLineNumber.activeForeground\": \"#e0def4\",\n    \"editorLineNumber.foreground\": \"#908caa\",\n    \"editorLink.activeForeground\": \"#ea9a97\",\n    \"editorMarkerNavigation.background\": \"#2a273f\",\n    \"editorMarkerNavigationError.background\": \"#2a273f\",\n    \"editorMarkerNavigationInfo.background\": \"#2a273f\",\n    \"editorMarkerNavigationWarning.background\": \"#2a273f\",\n    \"editorOverviewRuler.addedForeground\": \"#9ccfd880\",\n    \"editorOverviewRuler.background\": \"#232136\",\n    \"editorOverviewRuler.border\": \"#817c9c4d\",\n    \"editorOverviewRuler.bracketMatchForeground\": \"#908caa\",\n    \"editorOverviewRuler.commonContentForeground\": \"#817c9c14\",\n    \"editorOverviewRuler.currentContentForeground\": \"#817c9c26\",\n    \"editorOverviewRuler.deletedForeground\": \"#eb6f9280\",\n    \"editorOverviewRuler.errorForeground\": \"#eb6f9280\",\n    \"editorOverviewRuler.findMatchForeground\": \"#817c9c4d\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#c4a7e780\",\n    \"editorOverviewRuler.infoForeground\": \"#9ccfd880\",\n    \"editorOverviewRuler.modifiedForeground\": \"#ea9a9780\",\n    \"editorOverviewRuler.rangeHighlightForeground\": \"#817c9c4d\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#817c9c4d\",\n    \"editorOverviewRuler.warningForeground\": \"#f6c17780\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#817c9c26\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#817c9c4d\",\n    \"editorPane.background\": \"#0000\",\n    \"editorRuler.foreground\": \"#817c9c4d\",\n    \"editorSuggestWidget.background\": \"#2a273f\",\n    \"editorSuggestWidget.border\": \"#0000\",\n    \"editorSuggestWidget.focusHighlightForeground\": \"#ea9a97\",\n    \"editorSuggestWidget.foreground\": \"#908caa\",\n    \"editorSuggestWidget.highlightForeground\": \"#ea9a97\",\n    \"editorSuggestWidget.selectedBackground\": \"#817c9c26\",\n    \"editorSuggestWidget.selectedForeground\": \"#e0def4\",\n    \"editorSuggestWidget.selectedIconForeground\": \"#e0def4\",\n    \"editorUnnecessaryCode.border\": \"#0000\",\n    \"editorUnnecessaryCode.opacity\": \"#00000080\",\n    \"editorWarning.border\": \"#0000\",\n    \"editorWarning.foreground\": \"#f6c177\",\n    \"editorWhitespace.foreground\": \"#6e6a86\",\n    \"editorWidget.background\": \"#2a273f\",\n    \"editorWidget.border\": \"#393552\",\n    \"editorWidget.foreground\": \"#908caa\",\n    \"editorWidget.resizeBorder\": \"#6e6a86\",\n    \"errorForeground\": \"#eb6f92\",\n    \"extensionBadge.remoteBackground\": \"#c4a7e7\",\n    \"extensionBadge.remoteForeground\": \"#232136\",\n    \"extensionButton.prominentBackground\": \"#ea9a97\",\n    \"extensionButton.prominentForeground\": \"#232136\",\n    \"extensionButton.prominentHoverBackground\": \"#ea9a97e6\",\n    \"extensionIcon.starForeground\": \"#ea9a97\",\n    \"extensionIcon.verifiedForeground\": \"#c4a7e7\",\n    \"focusBorder\": \"#817c9c26\",\n    \"foreground\": \"#e0def4\",\n    \"gitDecoration.addedResourceForeground\": \"#9ccfd8\",\n    \"gitDecoration.conflictingResourceForeground\": \"#eb6f92\",\n    \"gitDecoration.deletedResourceForeground\": \"#908caa\",\n    \"gitDecoration.ignoredResourceForeground\": \"#6e6a86\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ea9a97\",\n    \"gitDecoration.renamedResourceForeground\": \"#3e8fb0\",\n    \"gitDecoration.stageDeletedResourceForeground\": \"#eb6f92\",\n    \"gitDecoration.stageModifiedResourceForeground\": \"#c4a7e7\",\n    \"gitDecoration.submoduleResourceForeground\": \"#f6c177\",\n    \"gitDecoration.untrackedResourceForeground\": \"#f6c177\",\n    \"icon.foreground\": \"#908caa\",\n    \"input.background\": \"#39355280\",\n    \"input.border\": \"#817c9c26\",\n    \"input.foreground\": \"#e0def4\",\n    \"input.placeholderForeground\": \"#908caa\",\n    \"inputOption.activeBackground\": \"#ea9a97\",\n    \"inputOption.activeBorder\": \"#0000\",\n    \"inputOption.activeForeground\": \"#232136\",\n    \"inputValidation.errorBackground\": \"#2a273f\",\n    \"inputValidation.errorBorder\": \"#817c9c4d\",\n    \"inputValidation.errorForeground\": \"#eb6f92\",\n    \"inputValidation.infoBackground\": \"#2a273f\",\n    \"inputValidation.infoBorder\": \"#817c9c4d\",\n    \"inputValidation.infoForeground\": \"#9ccfd8\",\n    \"inputValidation.warningBackground\": \"#2a273f\",\n    \"inputValidation.warningBorder\": \"#817c9c4d\",\n    \"inputValidation.warningForeground\": \"#9ccfd880\",\n    \"keybindingLabel.background\": \"#393552\",\n    \"keybindingLabel.border\": \"#817c9c4d\",\n    \"keybindingLabel.bottomBorder\": \"#817c9c4d\",\n    \"keybindingLabel.foreground\": \"#c4a7e7\",\n    \"keybindingTable.headerBackground\": \"#393552\",\n    \"keybindingTable.rowsBackground\": \"#2a273f\",\n    \"list.activeSelectionBackground\": \"#817c9c26\",\n    \"list.activeSelectionForeground\": \"#e0def4\",\n    \"list.activeSelectionIconForeground\": \"#e0def4\",\n    \"list.deemphasizedForeground\": \"#908caa\",\n    \"list.dropBackground\": \"#2a273f\",\n    \"list.errorForeground\": \"#eb6f92\",\n    \"list.filterMatchBackground\": \"#2a273f\",\n    \"list.filterMatchBorder\": \"#ea9a97\",\n    \"list.focusBackground\": \"#817c9c4d\",\n    \"list.focusForeground\": \"#e0def4\",\n    \"list.focusOutline\": \"#817c9c26\",\n    \"list.highlightForeground\": \"#ea9a97\",\n    \"list.hoverBackground\": \"#817c9c14\",\n    \"list.hoverForeground\": \"#e0def4\",\n    \"list.inactiveFocusBackground\": \"#817c9c14\",\n    \"list.inactiveSelectionBackground\": \"#2a273f\",\n    \"list.inactiveSelectionForeground\": \"#e0def4\",\n    \"list.inactiveSelectionIconForeground\": \"#908caa\",\n    \"list.invalidItemForeground\": \"#eb6f92\",\n    \"list.warningForeground\": \"#f6c177\",\n    \"listFilterWidget.background\": \"#2a273f\",\n    \"listFilterWidget.noMatchesOutline\": \"#eb6f92\",\n    \"listFilterWidget.outline\": \"#393552\",\n    \"menu.background\": \"#2a273f\",\n    \"menu.border\": \"#817c9c14\",\n    \"menu.foreground\": \"#e0def4\",\n    \"menu.selectionBackground\": \"#817c9c26\",\n    \"menu.selectionBorder\": \"#393552\",\n    \"menu.selectionForeground\": \"#e0def4\",\n    \"menu.separatorBackground\": \"#817c9c4d\",\n    \"menubar.selectionBackground\": \"#817c9c26\",\n    \"menubar.selectionBorder\": \"#817c9c14\",\n    \"menubar.selectionForeground\": \"#e0def4\",\n    \"merge.border\": \"#393552\",\n    \"merge.commonContentBackground\": \"#817c9c26\",\n    \"merge.commonHeaderBackground\": \"#817c9c26\",\n    \"merge.currentContentBackground\": \"#f6c17780\",\n    \"merge.currentHeaderBackground\": \"#f6c17780\",\n    \"merge.incomingContentBackground\": \"#9ccfd880\",\n    \"merge.incomingHeaderBackground\": \"#9ccfd880\",\n    \"minimap.background\": \"#2a273f\",\n    \"minimap.errorHighlight\": \"#eb6f9280\",\n    \"minimap.findMatchHighlight\": \"#817c9c26\",\n    \"minimap.selectionHighlight\": \"#817c9c26\",\n    \"minimap.warningHighlight\": \"#f6c17780\",\n    \"minimapGutter.addedBackground\": \"#9ccfd8\",\n    \"minimapGutter.deletedBackground\": \"#eb6f92\",\n    \"minimapGutter.modifiedBackground\": \"#ea9a97\",\n    \"minimapSlider.activeBackground\": \"#817c9c4d\",\n    \"minimapSlider.background\": \"#817c9c26\",\n    \"minimapSlider.hoverBackground\": \"#817c9c26\",\n    \"notificationCenter.border\": \"#817c9c26\",\n    \"notificationCenterHeader.background\": \"#2a273f\",\n    \"notificationCenterHeader.foreground\": \"#908caa\",\n    \"notificationLink.foreground\": \"#c4a7e7\",\n    \"notifications.background\": \"#2a273f\",\n    \"notifications.border\": \"#817c9c26\",\n    \"notifications.foreground\": \"#e0def4\",\n    \"notificationsErrorIcon.foreground\": \"#eb6f92\",\n    \"notificationsInfoIcon.foreground\": \"#9ccfd8\",\n    \"notificationsWarningIcon.foreground\": \"#f6c177\",\n    \"notificationToast.border\": \"#817c9c26\",\n    \"panel.background\": \"#2a273f\",\n    \"panel.border\": \"#0000\",\n    \"panel.dropBorder\": \"#393552\",\n    \"panelInput.border\": \"#2a273f\",\n    \"panelSection.dropBackground\": \"#817c9c26\",\n    \"panelSectionHeader.background\": \"#2a273f\",\n    \"panelSectionHeader.foreground\": \"#e0def4\",\n    \"panelTitle.activeBorder\": \"#817c9c4d\",\n    \"panelTitle.activeForeground\": \"#e0def4\",\n    \"panelTitle.inactiveForeground\": \"#908caa\",\n    \"peekView.border\": \"#393552\",\n    \"peekViewEditor.background\": \"#2a273f\",\n    \"peekViewEditor.matchHighlightBackground\": \"#817c9c4d\",\n    \"peekViewResult.background\": \"#2a273f\",\n    \"peekViewResult.fileForeground\": \"#908caa\",\n    \"peekViewResult.lineForeground\": \"#908caa\",\n    \"peekViewResult.matchHighlightBackground\": \"#817c9c4d\",\n    \"peekViewResult.selectionBackground\": \"#817c9c26\",\n    \"peekViewResult.selectionForeground\": \"#e0def4\",\n    \"peekViewTitle.background\": \"#393552\",\n    \"peekViewTitleDescription.foreground\": \"#908caa\",\n    \"pickerGroup.border\": \"#817c9c4d\",\n    \"pickerGroup.foreground\": \"#c4a7e7\",\n    \"ports.iconRunningProcessForeground\": \"#ea9a97\",\n    \"problemsErrorIcon.foreground\": \"#eb6f92\",\n    \"problemsInfoIcon.foreground\": \"#9ccfd8\",\n    \"problemsWarningIcon.foreground\": \"#f6c177\",\n    \"progressBar.background\": \"#ea9a97\",\n    \"quickInput.background\": \"#2a273f\",\n    \"quickInput.foreground\": \"#908caa\",\n    \"quickInputList.focusBackground\": \"#817c9c26\",\n    \"quickInputList.focusForeground\": \"#e0def4\",\n    \"quickInputList.focusIconForeground\": \"#e0def4\",\n    \"scrollbar.shadow\": \"#0000\",\n    \"scrollbarSlider.activeBackground\": \"#3e8fb080\",\n    \"scrollbarSlider.background\": \"#817c9c26\",\n    \"scrollbarSlider.hoverBackground\": \"#817c9c4d\",\n    \"searchEditor.findMatchBackground\": \"#817c9c26\",\n    \"selection.background\": \"#817c9c4d\",\n    \"settings.focusedRowBackground\": \"#2a273f\",\n    \"settings.headerForeground\": \"#e0def4\",\n    \"settings.modifiedItemIndicator\": \"#ea9a97\",\n    \"settings.focusedRowBorder\": \"#817c9c26\",\n    \"settings.rowHoverBackground\": \"#2a273f\",\n    \"sideBar.background\": \"#232136\",\n    \"sideBar.dropBackground\": \"#2a273f\",\n    \"sideBar.foreground\": \"#908caa\",\n    \"sideBarSectionHeader.background\": \"#0000\",\n    \"sideBarSectionHeader.border\": \"#817c9c26\",\n    \"statusBar.background\": \"#232136\",\n    \"statusBar.debuggingBackground\": \"#c4a7e7\",\n    \"statusBar.debuggingForeground\": \"#232136\",\n    \"statusBar.foreground\": \"#908caa\",\n    \"statusBar.noFolderBackground\": \"#232136\",\n    \"statusBar.noFolderForeground\": \"#908caa\",\n    \"statusBarItem.activeBackground\": \"#817c9c4d\",\n    \"statusBarItem.hoverBackground\": \"#817c9c26\",\n    \"statusBarItem.prominentBackground\": \"#393552\",\n    \"statusBarItem.prominentForeground\": \"#e0def4\",\n    \"statusBarItem.prominentHoverBackground\": \"#817c9c26\",\n    \"statusBarItem.remoteBackground\": \"#232136\",\n    \"statusBarItem.remoteForeground\": \"#f6c177\",\n    \"statusBarItem.errorBackground\": \"#232136\",\n    \"statusBarItem.errorForeground\": \"#eb6f92\",\n    \"symbolIcon.arrayForeground\": \"#908caa\",\n    \"symbolIcon.classForeground\": \"#908caa\",\n    \"symbolIcon.colorForeground\": \"#908caa\",\n    \"symbolIcon.constantForeground\": \"#908caa\",\n    \"symbolIcon.constructorForeground\": \"#908caa\",\n    \"symbolIcon.enumeratorForeground\": \"#908caa\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#908caa\",\n    \"symbolIcon.eventForeground\": \"#908caa\",\n    \"symbolIcon.fieldForeground\": \"#908caa\",\n    \"symbolIcon.fileForeground\": \"#908caa\",\n    \"symbolIcon.folderForeground\": \"#908caa\",\n    \"symbolIcon.functionForeground\": \"#908caa\",\n    \"symbolIcon.interfaceForeground\": \"#908caa\",\n    \"symbolIcon.keyForeground\": \"#908caa\",\n    \"symbolIcon.keywordForeground\": \"#908caa\",\n    \"symbolIcon.methodForeground\": \"#908caa\",\n    \"symbolIcon.moduleForeground\": \"#908caa\",\n    \"symbolIcon.namespaceForeground\": \"#908caa\",\n    \"symbolIcon.nullForeground\": \"#908caa\",\n    \"symbolIcon.numberForeground\": \"#908caa\",\n    \"symbolIcon.objectForeground\": \"#908caa\",\n    \"symbolIcon.operatorForeground\": \"#908caa\",\n    \"symbolIcon.packageForeground\": \"#908caa\",\n    \"symbolIcon.propertyForeground\": \"#908caa\",\n    \"symbolIcon.referenceForeground\": \"#908caa\",\n    \"symbolIcon.snippetForeground\": \"#908caa\",\n    \"symbolIcon.stringForeground\": \"#908caa\",\n    \"symbolIcon.structForeground\": \"#908caa\",\n    \"symbolIcon.textForeground\": \"#908caa\",\n    \"symbolIcon.typeParameterForeground\": \"#908caa\",\n    \"symbolIcon.unitForeground\": \"#908caa\",\n    \"symbolIcon.variableForeground\": \"#908caa\",\n    \"tab.activeBackground\": \"#817c9c14\",\n    \"tab.activeForeground\": \"#e0def4\",\n    \"tab.activeModifiedBorder\": \"#9ccfd8\",\n    \"tab.border\": \"#0000\",\n    \"tab.hoverBackground\": \"#817c9c26\",\n    \"tab.inactiveBackground\": \"#0000\",\n    \"tab.inactiveForeground\": \"#908caa\",\n    \"tab.inactiveModifiedBorder\": \"#9ccfd880\",\n    \"tab.lastPinnedBorder\": \"#6e6a86\",\n    \"tab.unfocusedActiveBackground\": \"#0000\",\n    \"tab.unfocusedHoverBackground\": \"#0000\",\n    \"tab.unfocusedInactiveBackground\": \"#0000\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#9ccfd880\",\n    \"terminal.ansiBlack\": \"#393552\",\n    \"terminal.ansiBlue\": \"#9ccfd8\",\n    \"terminal.ansiBrightBlack\": \"#908caa\",\n    \"terminal.ansiBrightBlue\": \"#9ccfd8\",\n    \"terminal.ansiBrightCyan\": \"#ea9a97\",\n    \"terminal.ansiBrightGreen\": \"#3e8fb0\",\n    \"terminal.ansiBrightMagenta\": \"#c4a7e7\",\n    \"terminal.ansiBrightRed\": \"#eb6f92\",\n    \"terminal.ansiBrightWhite\": \"#e0def4\",\n    \"terminal.ansiBrightYellow\": \"#f6c177\",\n    \"terminal.ansiCyan\": \"#ea9a97\",\n    \"terminal.ansiGreen\": \"#3e8fb0\",\n    \"terminal.ansiMagenta\": \"#c4a7e7\",\n    \"terminal.ansiRed\": \"#eb6f92\",\n    \"terminal.ansiWhite\": \"#e0def4\",\n    \"terminal.ansiYellow\": \"#f6c177\",\n    \"terminal.dropBackground\": \"#817c9c26\",\n    \"terminal.foreground\": \"#e0def4\",\n    \"terminal.selectionBackground\": \"#817c9c26\",\n    \"terminal.tab.activeBorder\": \"#e0def4\",\n    \"terminalCursor.background\": \"#e0def4\",\n    \"terminalCursor.foreground\": \"#6e6a86\",\n    \"textBlockQuote.background\": \"#2a273f\",\n    \"textBlockQuote.border\": \"#817c9c26\",\n    \"textCodeBlock.background\": \"#2a273f\",\n    \"textLink.activeForeground\": \"#c4a7e7e6\",\n    \"textLink.foreground\": \"#c4a7e7\",\n    \"textPreformat.foreground\": \"#f6c177\",\n    \"textSeparator.foreground\": \"#908caa\",\n    \"titleBar.activeBackground\": \"#232136\",\n    \"titleBar.activeForeground\": \"#908caa\",\n    \"titleBar.inactiveBackground\": \"#2a273f\",\n    \"titleBar.inactiveForeground\": \"#908caa\",\n    \"toolbar.activeBackground\": \"#817c9c4d\",\n    \"toolbar.hoverBackground\": \"#817c9c26\",\n    \"tree.indentGuidesStroke\": \"#908caa\",\n    \"walkThrough.embeddedEditorBackground\": \"#232136\",\n    \"welcomePage.background\": \"#232136\",\n    \"welcomePage.buttonBackground\": \"#2a273f\",\n    \"welcomePage.buttonHoverBackground\": \"#393552\",\n    \"widget.shadow\": \"#1917244d\",\n    \"window.activeBorder\": \"#2a273f\",\n    \"window.inactiveBorder\": \"#2a273f\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\"],\n      \"settings\": {\n        \"foreground\": \"#6e6a86\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"constant\"],\n      \"settings\": {\n        \"foreground\": \"#3e8fb0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.language\",\n        \"constant.charcter.escape\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ea9a97\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name\"],\n      \"settings\": {\n        \"foreground\": \"#ea9a97\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.section\",\n        \"entity.name.tag\",\n        \"entity.name.namespace\",\n        \"entity.name.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name\", \"entity.other.inherited-class\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"keyword\"],\n      \"settings\": {\n        \"foreground\": \"#3e8fb0\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\"\n      }\n    },\n    {\n      \"scope\": [\"meta.diff.range\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\"\n      }\n    },\n    {\n      \"scope\": [\"meta.tag\", \"meta.brace\"],\n      \"settings\": {\n        \"foreground\": \"#e0def4\"\n      }\n    },\n    {\n      \"scope\": [\"meta.import\", \"meta.export\"],\n      \"settings\": {\n        \"foreground\": \"#3e8fb0\"\n      }\n    },\n    {\n      \"scope\": \"meta.directive.vue\",\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-value.css\",\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": \"meta.tag.other.html\",\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation\"],\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.accessor\"],\n      \"settings\": {\n        \"foreground\": \"#3e8fb0\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.string\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.tag\"],\n      \"settings\": {\n        \"foreground\": \"#6e6a86\"\n      }\n    },\n    {\n      \"scope\": [\"storage.type\", \"storage.modifier\"],\n      \"settings\": {\n        \"foreground\": \"#3e8fb0\"\n      }\n    },\n    {\n      \"scope\": [\"string\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"support\"],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"support.function\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"variable\"],\n      \"settings\": {\n        \"foreground\": \"#ea9a97\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.other\",\n        \"variable.language\",\n        \"variable.function\",\n        \"variable.argument\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e0def4\"\n      }\n    },\n    {\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/rose-pine.json",
    "content": "{\n  \"name\": \"rose-pine\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"activityBar.activeBorder\": \"#e0def4\",\n    \"activityBar.background\": \"#191724\",\n    \"activityBar.dropBorder\": \"#26233a\",\n    \"activityBar.foreground\": \"#e0def4\",\n    \"activityBar.inactiveForeground\": \"#908caa\",\n    \"activityBarBadge.background\": \"#ebbcba\",\n    \"activityBarBadge.foreground\": \"#191724\",\n    \"badge.background\": \"#ebbcba\",\n    \"badge.foreground\": \"#191724\",\n    \"banner.background\": \"#1f1d2e\",\n    \"banner.foreground\": \"#e0def4\",\n    \"banner.iconForeground\": \"#908caa\",\n    \"breadcrumb.activeSelectionForeground\": \"#ebbcba\",\n    \"breadcrumb.background\": \"#191724\",\n    \"breadcrumb.focusForeground\": \"#908caa\",\n    \"breadcrumb.foreground\": \"#6e6a86\",\n    \"breadcrumbPicker.background\": \"#1f1d2e\",\n    \"button.background\": \"#ebbcba\",\n    \"button.foreground\": \"#191724\",\n    \"button.hoverBackground\": \"#ebbcbae6\",\n    \"button.secondaryBackground\": \"#1f1d2e\",\n    \"button.secondaryForeground\": \"#e0def4\",\n    \"button.secondaryHoverBackground\": \"#26233a\",\n    \"charts.blue\": \"#9ccfd8\",\n    \"charts.foreground\": \"#e0def4\",\n    \"charts.green\": \"#31748f\",\n    \"charts.lines\": \"#908caa\",\n    \"charts.orange\": \"#ebbcba\",\n    \"charts.purple\": \"#c4a7e7\",\n    \"charts.red\": \"#eb6f92\",\n    \"charts.yellow\": \"#f6c177\",\n    \"checkbox.background\": \"#1f1d2e\",\n    \"checkbox.border\": \"#6e6a8633\",\n    \"checkbox.foreground\": \"#e0def4\",\n    \"debugExceptionWidget.background\": \"#1f1d2e\",\n    \"debugExceptionWidget.border\": \"#6e6a8633\",\n    \"debugIcon.breakpointCurrentStackframeForeground\": \"#908caa\",\n    \"debugIcon.breakpointDisabledForeground\": \"#908caa\",\n    \"debugIcon.breakpointForeground\": \"#908caa\",\n    \"debugIcon.breakpointStackframeForeground\": \"#908caa\",\n    \"debugIcon.breakpointUnverifiedForeground\": \"#908caa\",\n    \"debugIcon.continueForeground\": \"#908caa\",\n    \"debugIcon.disconnectForeground\": \"#908caa\",\n    \"debugIcon.pauseForeground\": \"#908caa\",\n    \"debugIcon.restartForeground\": \"#908caa\",\n    \"debugIcon.startForeground\": \"#908caa\",\n    \"debugIcon.stepBackForeground\": \"#908caa\",\n    \"debugIcon.stepIntoForeground\": \"#908caa\",\n    \"debugIcon.stepOutForeground\": \"#908caa\",\n    \"debugIcon.stepOverForeground\": \"#908caa\",\n    \"debugIcon.stopForeground\": \"#eb6f92\",\n    \"debugToolBar.background\": \"#1f1d2e\",\n    \"debugToolBar.border\": \"#26233a\",\n    \"descriptionForeground\": \"#908caa\",\n    \"diffEditor.border\": \"#26233a\",\n    \"diffEditor.diagonalFill\": \"#6e6a8666\",\n    \"diffEditor.insertedTextBackground\": \"#9ccfd826\",\n    \"diffEditor.removedTextBackground\": \"#eb6f9226\",\n    \"diffEditorOverview.insertedForeground\": \"#9ccfd880\",\n    \"diffEditorOverview.removedForeground\": \"#eb6f9280\",\n    \"dropdown.background\": \"#1f1d2e\",\n    \"dropdown.border\": \"#6e6a8633\",\n    \"dropdown.foreground\": \"#e0def4\",\n    \"dropdown.listBackground\": \"#1f1d2e\",\n    \"editor.background\": \"#191724\",\n    \"editor.findMatchBackground\": \"#6e6a8666\",\n    \"editor.findMatchHighlightBackground\": \"#6e6a8666\",\n    \"editor.findRangeHighlightBackground\": \"#6e6a8666\",\n    \"editor.findRangeHighlightBorder\": \"#0000\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#6e6a8633\",\n    \"editor.foldBackground\": \"#1f1d2e\",\n    \"editor.foreground\": \"#e0def4\",\n    \"editor.hoverHighlightBackground\": \"#0000\",\n    \"editor.inactiveSelectionBackground\": \"#6e6a861a\",\n    \"editor.inlineValuesBackground\": \"#0000\",\n    \"editor.inlineValuesForeground\": \"#908caa\",\n    \"editor.lineHighlightBackground\": \"#6e6a861a\",\n    \"editor.lineHighlightBorder\": \"#0000\",\n    \"editor.linkedEditingBackground\": \"#1f1d2e\",\n    \"editor.rangeHighlightBackground\": \"#6e6a861a\",\n    \"editor.rangeHighlightBorder\": \"#0000\",\n    \"editor.selectionBackground\": \"#6e6a8633\",\n    \"editor.selectionForeground\": \"#e0def4\",\n    \"editor.selectionHighlightBackground\": \"#6e6a8633\",\n    \"editor.selectionHighlightBorder\": \"#0000\",\n    \"editor.snippetFinalTabstopHighlightBackground\": \"#6e6a8633\",\n    \"editor.snippetFinalTabstopHighlightBorder\": \"#1f1d2e\",\n    \"editor.snippetTabstopHighlightBackground\": \"#6e6a8633\",\n    \"editor.snippetTabstopHighlightBorder\": \"#1f1d2e\",\n    \"editor.stackFrameHighlightBackground\": \"#6e6a8633\",\n    \"editor.symbolHighlightBackground\": \"#6e6a8633\",\n    \"editor.symbolHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightBackground\": \"#6e6a8633\",\n    \"editor.wordHighlightBorder\": \"#0000\",\n    \"editor.wordHighlightStrongBackground\": \"#6e6a8633\",\n    \"editor.wordHighlightStrongBorder\": \"#6e6a8633\",\n    \"editorBracketHighlight.foreground1\": \"#eb6f9280\",\n    \"editorBracketHighlight.foreground2\": \"#31748f80\",\n    \"editorBracketHighlight.foreground3\": \"#f6c17780\",\n    \"editorBracketHighlight.foreground4\": \"#9ccfd880\",\n    \"editorBracketHighlight.foreground5\": \"#ebbcba80\",\n    \"editorBracketHighlight.foreground6\": \"#c4a7e780\",\n    \"editorBracketMatch.background\": \"#0000\",\n    \"editorBracketMatch.border\": \"#908caa\",\n    \"editorBracketPairGuide.activeBackground1\": \"#31748f\",\n    \"editorBracketPairGuide.activeBackground2\": \"#ebbcba\",\n    \"editorBracketPairGuide.activeBackground3\": \"#c4a7e7\",\n    \"editorBracketPairGuide.activeBackground4\": \"#9ccfd8\",\n    \"editorBracketPairGuide.activeBackground5\": \"#f6c177\",\n    \"editorBracketPairGuide.activeBackground6\": \"#eb6f92\",\n    \"editorBracketPairGuide.background1\": \"#31748f80\",\n    \"editorBracketPairGuide.background2\": \"#ebbcba80\",\n    \"editorBracketPairGuide.background3\": \"#c4a7e780\",\n    \"editorBracketPairGuide.background4\": \"#9ccfd880\",\n    \"editorBracketPairGuide.background5\": \"#f6c17780\",\n    \"editorBracketPairGuide.background6\": \"#eb6f9280\",\n    \"editorCodeLens.foreground\": \"#ebbcba\",\n    \"editorCursor.background\": \"#e0def4\",\n    \"editorCursor.foreground\": \"#6e6a86\",\n    \"editorError.border\": \"#0000\",\n    \"editorError.foreground\": \"#eb6f92\",\n    \"editorGhostText.foreground\": \"#908caa\",\n    \"editorGroup.border\": \"#0000\",\n    \"editorGroup.dropBackground\": \"#1f1d2e\",\n    \"editorGroup.emptyBackground\": \"#0000\",\n    \"editorGroup.focusedEmptyBorder\": \"#0000\",\n    \"editorGroupHeader.noTabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBackground\": \"#0000\",\n    \"editorGroupHeader.tabsBorder\": \"#0000\",\n    \"editorGutter.addedBackground\": \"#9ccfd8\",\n    \"editorGutter.background\": \"#0000\",\n    \"editorGutter.commentRangeForeground\": \"#908caa\",\n    \"editorGutter.deletedBackground\": \"#eb6f92\",\n    \"editorGutter.foldingControlForeground\": \"#c4a7e7\",\n    \"editorGutter.modifiedBackground\": \"#ebbcba\",\n    \"editorHint.border\": \"#0000\",\n    \"editorHint.foreground\": \"#908caa\",\n    \"editorHoverWidget.background\": \"#1f1d2e\",\n    \"editorHoverWidget.border\": \"#6e6a8680\",\n    \"editorHoverWidget.foreground\": \"#908caa\",\n    \"editorHoverWidget.highlightForeground\": \"#e0def4\",\n    \"editorHoverWidget.statusBarBackground\": \"#0000\",\n    \"editorIndentGuide.activeBackground\": \"#6e6a86\",\n    \"editorIndentGuide.background\": \"#6e6a8666\",\n    \"editorInfo.border\": \"#26233a\",\n    \"editorInfo.foreground\": \"#9ccfd8\",\n    \"editorInlayHint.background\": \"#26233a\",\n    \"editorInlayHint.foreground\": \"#908caa\",\n    \"editorInlayHint.parameterBackground\": \"#26233a\",\n    \"editorInlayHint.parameterForeground\": \"#c4a7e7\",\n    \"editorInlayHint.typeBackground\": \"#26233a\",\n    \"editorInlayHint.typeForeground\": \"#9ccfd8\",\n    \"editorLightBulb.foreground\": \"#31748f\",\n    \"editorLightBulbAutoFix.foreground\": \"#ebbcba\",\n    \"editorLineNumber.activeForeground\": \"#e0def4\",\n    \"editorLineNumber.foreground\": \"#908caa\",\n    \"editorLink.activeForeground\": \"#ebbcba\",\n    \"editorMarkerNavigation.background\": \"#1f1d2e\",\n    \"editorMarkerNavigationError.background\": \"#1f1d2e\",\n    \"editorMarkerNavigationInfo.background\": \"#1f1d2e\",\n    \"editorMarkerNavigationWarning.background\": \"#1f1d2e\",\n    \"editorOverviewRuler.addedForeground\": \"#9ccfd880\",\n    \"editorOverviewRuler.background\": \"#191724\",\n    \"editorOverviewRuler.border\": \"#6e6a8666\",\n    \"editorOverviewRuler.bracketMatchForeground\": \"#908caa\",\n    \"editorOverviewRuler.commonContentForeground\": \"#6e6a861a\",\n    \"editorOverviewRuler.currentContentForeground\": \"#6e6a8633\",\n    \"editorOverviewRuler.deletedForeground\": \"#eb6f9280\",\n    \"editorOverviewRuler.errorForeground\": \"#eb6f9280\",\n    \"editorOverviewRuler.findMatchForeground\": \"#6e6a8666\",\n    \"editorOverviewRuler.incomingContentForeground\": \"#c4a7e780\",\n    \"editorOverviewRuler.infoForeground\": \"#9ccfd880\",\n    \"editorOverviewRuler.modifiedForeground\": \"#ebbcba80\",\n    \"editorOverviewRuler.rangeHighlightForeground\": \"#6e6a8666\",\n    \"editorOverviewRuler.selectionHighlightForeground\": \"#6e6a8666\",\n    \"editorOverviewRuler.warningForeground\": \"#f6c17780\",\n    \"editorOverviewRuler.wordHighlightForeground\": \"#6e6a8633\",\n    \"editorOverviewRuler.wordHighlightStrongForeground\": \"#6e6a8666\",\n    \"editorPane.background\": \"#0000\",\n    \"editorRuler.foreground\": \"#6e6a8666\",\n    \"editorSuggestWidget.background\": \"#1f1d2e\",\n    \"editorSuggestWidget.border\": \"#0000\",\n    \"editorSuggestWidget.focusHighlightForeground\": \"#ebbcba\",\n    \"editorSuggestWidget.foreground\": \"#908caa\",\n    \"editorSuggestWidget.highlightForeground\": \"#ebbcba\",\n    \"editorSuggestWidget.selectedBackground\": \"#6e6a8633\",\n    \"editorSuggestWidget.selectedForeground\": \"#e0def4\",\n    \"editorSuggestWidget.selectedIconForeground\": \"#e0def4\",\n    \"editorUnnecessaryCode.border\": \"#0000\",\n    \"editorUnnecessaryCode.opacity\": \"#00000080\",\n    \"editorWarning.border\": \"#0000\",\n    \"editorWarning.foreground\": \"#f6c177\",\n    \"editorWhitespace.foreground\": \"#6e6a86\",\n    \"editorWidget.background\": \"#1f1d2e\",\n    \"editorWidget.border\": \"#26233a\",\n    \"editorWidget.foreground\": \"#908caa\",\n    \"editorWidget.resizeBorder\": \"#6e6a86\",\n    \"errorForeground\": \"#eb6f92\",\n    \"extensionBadge.remoteBackground\": \"#c4a7e7\",\n    \"extensionBadge.remoteForeground\": \"#191724\",\n    \"extensionButton.prominentBackground\": \"#ebbcba\",\n    \"extensionButton.prominentForeground\": \"#191724\",\n    \"extensionButton.prominentHoverBackground\": \"#ebbcbae6\",\n    \"extensionIcon.starForeground\": \"#ebbcba\",\n    \"extensionIcon.verifiedForeground\": \"#c4a7e7\",\n    \"focusBorder\": \"#6e6a8633\",\n    \"foreground\": \"#e0def4\",\n    \"gitDecoration.addedResourceForeground\": \"#9ccfd8\",\n    \"gitDecoration.conflictingResourceForeground\": \"#eb6f92\",\n    \"gitDecoration.deletedResourceForeground\": \"#908caa\",\n    \"gitDecoration.ignoredResourceForeground\": \"#6e6a86\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ebbcba\",\n    \"gitDecoration.renamedResourceForeground\": \"#31748f\",\n    \"gitDecoration.stageDeletedResourceForeground\": \"#eb6f92\",\n    \"gitDecoration.stageModifiedResourceForeground\": \"#c4a7e7\",\n    \"gitDecoration.submoduleResourceForeground\": \"#f6c177\",\n    \"gitDecoration.untrackedResourceForeground\": \"#f6c177\",\n    \"icon.foreground\": \"#908caa\",\n    \"input.background\": \"#26233a80\",\n    \"input.border\": \"#6e6a8633\",\n    \"input.foreground\": \"#e0def4\",\n    \"input.placeholderForeground\": \"#908caa\",\n    \"inputOption.activeBackground\": \"#ebbcba\",\n    \"inputOption.activeBorder\": \"#0000\",\n    \"inputOption.activeForeground\": \"#191724\",\n    \"inputValidation.errorBackground\": \"#1f1d2e\",\n    \"inputValidation.errorBorder\": \"#6e6a8666\",\n    \"inputValidation.errorForeground\": \"#eb6f92\",\n    \"inputValidation.infoBackground\": \"#1f1d2e\",\n    \"inputValidation.infoBorder\": \"#6e6a8666\",\n    \"inputValidation.infoForeground\": \"#9ccfd8\",\n    \"inputValidation.warningBackground\": \"#1f1d2e\",\n    \"inputValidation.warningBorder\": \"#6e6a8666\",\n    \"inputValidation.warningForeground\": \"#9ccfd880\",\n    \"keybindingLabel.background\": \"#26233a\",\n    \"keybindingLabel.border\": \"#6e6a8666\",\n    \"keybindingLabel.bottomBorder\": \"#6e6a8666\",\n    \"keybindingLabel.foreground\": \"#c4a7e7\",\n    \"keybindingTable.headerBackground\": \"#26233a\",\n    \"keybindingTable.rowsBackground\": \"#1f1d2e\",\n    \"list.activeSelectionBackground\": \"#6e6a8633\",\n    \"list.activeSelectionForeground\": \"#e0def4\",\n    \"list.activeSelectionIconForeground\": \"#e0def4\",\n    \"list.deemphasizedForeground\": \"#908caa\",\n    \"list.dropBackground\": \"#1f1d2e\",\n    \"list.errorForeground\": \"#eb6f92\",\n    \"list.filterMatchBackground\": \"#1f1d2e\",\n    \"list.filterMatchBorder\": \"#ebbcba\",\n    \"list.focusBackground\": \"#6e6a8666\",\n    \"list.focusForeground\": \"#e0def4\",\n    \"list.focusOutline\": \"#6e6a8633\",\n    \"list.highlightForeground\": \"#ebbcba\",\n    \"list.hoverBackground\": \"#6e6a861a\",\n    \"list.hoverForeground\": \"#e0def4\",\n    \"list.inactiveFocusBackground\": \"#6e6a861a\",\n    \"list.inactiveSelectionBackground\": \"#1f1d2e\",\n    \"list.inactiveSelectionForeground\": \"#e0def4\",\n    \"list.inactiveSelectionIconForeground\": \"#908caa\",\n    \"list.invalidItemForeground\": \"#eb6f92\",\n    \"list.warningForeground\": \"#f6c177\",\n    \"listFilterWidget.background\": \"#1f1d2e\",\n    \"listFilterWidget.noMatchesOutline\": \"#eb6f92\",\n    \"listFilterWidget.outline\": \"#26233a\",\n    \"menu.background\": \"#1f1d2e\",\n    \"menu.border\": \"#6e6a861a\",\n    \"menu.foreground\": \"#e0def4\",\n    \"menu.selectionBackground\": \"#6e6a8633\",\n    \"menu.selectionBorder\": \"#26233a\",\n    \"menu.selectionForeground\": \"#e0def4\",\n    \"menu.separatorBackground\": \"#6e6a8666\",\n    \"menubar.selectionBackground\": \"#6e6a8633\",\n    \"menubar.selectionBorder\": \"#6e6a861a\",\n    \"menubar.selectionForeground\": \"#e0def4\",\n    \"merge.border\": \"#26233a\",\n    \"merge.commonContentBackground\": \"#6e6a8633\",\n    \"merge.commonHeaderBackground\": \"#6e6a8633\",\n    \"merge.currentContentBackground\": \"#f6c17780\",\n    \"merge.currentHeaderBackground\": \"#f6c17780\",\n    \"merge.incomingContentBackground\": \"#9ccfd880\",\n    \"merge.incomingHeaderBackground\": \"#9ccfd880\",\n    \"minimap.background\": \"#1f1d2e\",\n    \"minimap.errorHighlight\": \"#eb6f9280\",\n    \"minimap.findMatchHighlight\": \"#6e6a8633\",\n    \"minimap.selectionHighlight\": \"#6e6a8633\",\n    \"minimap.warningHighlight\": \"#f6c17780\",\n    \"minimapGutter.addedBackground\": \"#9ccfd8\",\n    \"minimapGutter.deletedBackground\": \"#eb6f92\",\n    \"minimapGutter.modifiedBackground\": \"#ebbcba\",\n    \"minimapSlider.activeBackground\": \"#6e6a8666\",\n    \"minimapSlider.background\": \"#6e6a8633\",\n    \"minimapSlider.hoverBackground\": \"#6e6a8633\",\n    \"notificationCenter.border\": \"#6e6a8633\",\n    \"notificationCenterHeader.background\": \"#1f1d2e\",\n    \"notificationCenterHeader.foreground\": \"#908caa\",\n    \"notificationLink.foreground\": \"#c4a7e7\",\n    \"notifications.background\": \"#1f1d2e\",\n    \"notifications.border\": \"#6e6a8633\",\n    \"notifications.foreground\": \"#e0def4\",\n    \"notificationsErrorIcon.foreground\": \"#eb6f92\",\n    \"notificationsInfoIcon.foreground\": \"#9ccfd8\",\n    \"notificationsWarningIcon.foreground\": \"#f6c177\",\n    \"notificationToast.border\": \"#6e6a8633\",\n    \"panel.background\": \"#1f1d2e\",\n    \"panel.border\": \"#0000\",\n    \"panel.dropBorder\": \"#26233a\",\n    \"panelInput.border\": \"#1f1d2e\",\n    \"panelSection.dropBackground\": \"#6e6a8633\",\n    \"panelSectionHeader.background\": \"#1f1d2e\",\n    \"panelSectionHeader.foreground\": \"#e0def4\",\n    \"panelTitle.activeBorder\": \"#6e6a8666\",\n    \"panelTitle.activeForeground\": \"#e0def4\",\n    \"panelTitle.inactiveForeground\": \"#908caa\",\n    \"peekView.border\": \"#26233a\",\n    \"peekViewEditor.background\": \"#1f1d2e\",\n    \"peekViewEditor.matchHighlightBackground\": \"#6e6a8666\",\n    \"peekViewResult.background\": \"#1f1d2e\",\n    \"peekViewResult.fileForeground\": \"#908caa\",\n    \"peekViewResult.lineForeground\": \"#908caa\",\n    \"peekViewResult.matchHighlightBackground\": \"#6e6a8666\",\n    \"peekViewResult.selectionBackground\": \"#6e6a8633\",\n    \"peekViewResult.selectionForeground\": \"#e0def4\",\n    \"peekViewTitle.background\": \"#26233a\",\n    \"peekViewTitleDescription.foreground\": \"#908caa\",\n    \"pickerGroup.border\": \"#6e6a8666\",\n    \"pickerGroup.foreground\": \"#c4a7e7\",\n    \"ports.iconRunningProcessForeground\": \"#ebbcba\",\n    \"problemsErrorIcon.foreground\": \"#eb6f92\",\n    \"problemsInfoIcon.foreground\": \"#9ccfd8\",\n    \"problemsWarningIcon.foreground\": \"#f6c177\",\n    \"progressBar.background\": \"#ebbcba\",\n    \"quickInput.background\": \"#1f1d2e\",\n    \"quickInput.foreground\": \"#908caa\",\n    \"quickInputList.focusBackground\": \"#6e6a8633\",\n    \"quickInputList.focusForeground\": \"#e0def4\",\n    \"quickInputList.focusIconForeground\": \"#e0def4\",\n    \"scrollbar.shadow\": \"#0000\",\n    \"scrollbarSlider.activeBackground\": \"#31748f80\",\n    \"scrollbarSlider.background\": \"#6e6a8633\",\n    \"scrollbarSlider.hoverBackground\": \"#6e6a8666\",\n    \"searchEditor.findMatchBackground\": \"#6e6a8633\",\n    \"selection.background\": \"#6e6a8666\",\n    \"settings.focusedRowBackground\": \"#1f1d2e\",\n    \"settings.headerForeground\": \"#e0def4\",\n    \"settings.modifiedItemIndicator\": \"#ebbcba\",\n    \"settings.focusedRowBorder\": \"#6e6a8633\",\n    \"settings.rowHoverBackground\": \"#1f1d2e\",\n    \"sideBar.background\": \"#191724\",\n    \"sideBar.dropBackground\": \"#1f1d2e\",\n    \"sideBar.foreground\": \"#908caa\",\n    \"sideBarSectionHeader.background\": \"#0000\",\n    \"sideBarSectionHeader.border\": \"#6e6a8633\",\n    \"statusBar.background\": \"#191724\",\n    \"statusBar.debuggingBackground\": \"#c4a7e7\",\n    \"statusBar.debuggingForeground\": \"#191724\",\n    \"statusBar.foreground\": \"#908caa\",\n    \"statusBar.noFolderBackground\": \"#191724\",\n    \"statusBar.noFolderForeground\": \"#908caa\",\n    \"statusBarItem.activeBackground\": \"#6e6a8666\",\n    \"statusBarItem.hoverBackground\": \"#6e6a8633\",\n    \"statusBarItem.prominentBackground\": \"#26233a\",\n    \"statusBarItem.prominentForeground\": \"#e0def4\",\n    \"statusBarItem.prominentHoverBackground\": \"#6e6a8633\",\n    \"statusBarItem.remoteBackground\": \"#191724\",\n    \"statusBarItem.remoteForeground\": \"#f6c177\",\n    \"statusBarItem.errorBackground\": \"#191724\",\n    \"statusBarItem.errorForeground\": \"#eb6f92\",\n    \"symbolIcon.arrayForeground\": \"#908caa\",\n    \"symbolIcon.classForeground\": \"#908caa\",\n    \"symbolIcon.colorForeground\": \"#908caa\",\n    \"symbolIcon.constantForeground\": \"#908caa\",\n    \"symbolIcon.constructorForeground\": \"#908caa\",\n    \"symbolIcon.enumeratorForeground\": \"#908caa\",\n    \"symbolIcon.enumeratorMemberForeground\": \"#908caa\",\n    \"symbolIcon.eventForeground\": \"#908caa\",\n    \"symbolIcon.fieldForeground\": \"#908caa\",\n    \"symbolIcon.fileForeground\": \"#908caa\",\n    \"symbolIcon.folderForeground\": \"#908caa\",\n    \"symbolIcon.functionForeground\": \"#908caa\",\n    \"symbolIcon.interfaceForeground\": \"#908caa\",\n    \"symbolIcon.keyForeground\": \"#908caa\",\n    \"symbolIcon.keywordForeground\": \"#908caa\",\n    \"symbolIcon.methodForeground\": \"#908caa\",\n    \"symbolIcon.moduleForeground\": \"#908caa\",\n    \"symbolIcon.namespaceForeground\": \"#908caa\",\n    \"symbolIcon.nullForeground\": \"#908caa\",\n    \"symbolIcon.numberForeground\": \"#908caa\",\n    \"symbolIcon.objectForeground\": \"#908caa\",\n    \"symbolIcon.operatorForeground\": \"#908caa\",\n    \"symbolIcon.packageForeground\": \"#908caa\",\n    \"symbolIcon.propertyForeground\": \"#908caa\",\n    \"symbolIcon.referenceForeground\": \"#908caa\",\n    \"symbolIcon.snippetForeground\": \"#908caa\",\n    \"symbolIcon.stringForeground\": \"#908caa\",\n    \"symbolIcon.structForeground\": \"#908caa\",\n    \"symbolIcon.textForeground\": \"#908caa\",\n    \"symbolIcon.typeParameterForeground\": \"#908caa\",\n    \"symbolIcon.unitForeground\": \"#908caa\",\n    \"symbolIcon.variableForeground\": \"#908caa\",\n    \"tab.activeBackground\": \"#6e6a861a\",\n    \"tab.activeForeground\": \"#e0def4\",\n    \"tab.activeModifiedBorder\": \"#9ccfd8\",\n    \"tab.border\": \"#0000\",\n    \"tab.hoverBackground\": \"#6e6a8633\",\n    \"tab.inactiveBackground\": \"#0000\",\n    \"tab.inactiveForeground\": \"#908caa\",\n    \"tab.inactiveModifiedBorder\": \"#9ccfd880\",\n    \"tab.lastPinnedBorder\": \"#6e6a86\",\n    \"tab.unfocusedActiveBackground\": \"#0000\",\n    \"tab.unfocusedHoverBackground\": \"#0000\",\n    \"tab.unfocusedInactiveBackground\": \"#0000\",\n    \"tab.unfocusedInactiveModifiedBorder\": \"#9ccfd880\",\n    \"terminal.ansiBlack\": \"#26233a\",\n    \"terminal.ansiBlue\": \"#9ccfd8\",\n    \"terminal.ansiBrightBlack\": \"#908caa\",\n    \"terminal.ansiBrightBlue\": \"#9ccfd8\",\n    \"terminal.ansiBrightCyan\": \"#ebbcba\",\n    \"terminal.ansiBrightGreen\": \"#31748f\",\n    \"terminal.ansiBrightMagenta\": \"#c4a7e7\",\n    \"terminal.ansiBrightRed\": \"#eb6f92\",\n    \"terminal.ansiBrightWhite\": \"#e0def4\",\n    \"terminal.ansiBrightYellow\": \"#f6c177\",\n    \"terminal.ansiCyan\": \"#ebbcba\",\n    \"terminal.ansiGreen\": \"#31748f\",\n    \"terminal.ansiMagenta\": \"#c4a7e7\",\n    \"terminal.ansiRed\": \"#eb6f92\",\n    \"terminal.ansiWhite\": \"#e0def4\",\n    \"terminal.ansiYellow\": \"#f6c177\",\n    \"terminal.dropBackground\": \"#6e6a8633\",\n    \"terminal.foreground\": \"#e0def4\",\n    \"terminal.selectionBackground\": \"#6e6a8633\",\n    \"terminal.tab.activeBorder\": \"#e0def4\",\n    \"terminalCursor.background\": \"#e0def4\",\n    \"terminalCursor.foreground\": \"#6e6a86\",\n    \"textBlockQuote.background\": \"#1f1d2e\",\n    \"textBlockQuote.border\": \"#6e6a8633\",\n    \"textCodeBlock.background\": \"#1f1d2e\",\n    \"textLink.activeForeground\": \"#c4a7e7e6\",\n    \"textLink.foreground\": \"#c4a7e7\",\n    \"textPreformat.foreground\": \"#f6c177\",\n    \"textSeparator.foreground\": \"#908caa\",\n    \"titleBar.activeBackground\": \"#191724\",\n    \"titleBar.activeForeground\": \"#908caa\",\n    \"titleBar.inactiveBackground\": \"#1f1d2e\",\n    \"titleBar.inactiveForeground\": \"#908caa\",\n    \"toolbar.activeBackground\": \"#6e6a8666\",\n    \"toolbar.hoverBackground\": \"#6e6a8633\",\n    \"tree.indentGuidesStroke\": \"#908caa\",\n    \"walkThrough.embeddedEditorBackground\": \"#191724\",\n    \"welcomePage.background\": \"#191724\",\n    \"welcomePage.buttonBackground\": \"#1f1d2e\",\n    \"welcomePage.buttonHoverBackground\": \"#26233a\",\n    \"widget.shadow\": \"#0101011a\",\n    \"window.activeBorder\": \"#1f1d2e\",\n    \"window.inactiveBorder\": \"#1f1d2e\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\"],\n      \"settings\": {\n        \"foreground\": \"#6e6a86\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"constant\"],\n      \"settings\": {\n        \"foreground\": \"#31748f\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.numeric\",\n        \"constant.language\",\n        \"constant.charcter.escape\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ebbcba\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name\"],\n      \"settings\": {\n        \"foreground\": \"#ebbcba\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.section\",\n        \"entity.name.tag\",\n        \"entity.name.namespace\",\n        \"entity.name.type\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name\", \"entity.other.inherited-class\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"invalid\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.deprecated\"],\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"keyword\"],\n      \"settings\": {\n        \"foreground\": \"#31748f\"\n      }\n    },\n    {\n      \"scope\": [\"markup.inserted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"markup.deleted.diff\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\"\n      }\n    },\n    {\n      \"scope\": [\"meta.diff.range\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\"\n      }\n    },\n    {\n      \"scope\": [\"meta.tag\", \"meta.brace\"],\n      \"settings\": {\n        \"foreground\": \"#e0def4\"\n      }\n    },\n    {\n      \"scope\": [\"meta.import\", \"meta.export\"],\n      \"settings\": {\n        \"foreground\": \"#31748f\"\n      }\n    },\n    {\n      \"scope\": \"meta.directive.vue\",\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-name.css\",\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": \"meta.property-value.css\",\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": \"meta.tag.other.html\",\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation\"],\n      \"settings\": {\n        \"foreground\": \"#908caa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.accessor\"],\n      \"settings\": {\n        \"foreground\": \"#31748f\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.string\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.tag\"],\n      \"settings\": {\n        \"foreground\": \"#6e6a86\"\n      }\n    },\n    {\n      \"scope\": [\"storage.type\", \"storage.modifier\"],\n      \"settings\": {\n        \"foreground\": \"#31748f\"\n      }\n    },\n    {\n      \"scope\": [\"string\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"support\"],\n      \"settings\": {\n        \"foreground\": \"#9ccfd8\"\n      }\n    },\n    {\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"foreground\": \"#f6c177\"\n      }\n    },\n    {\n      \"scope\": [\"support.function\"],\n      \"settings\": {\n        \"foreground\": \"#eb6f92\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\"variable\"],\n      \"settings\": {\n        \"foreground\": \"#ebbcba\",\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": [\n        \"variable.other\",\n        \"variable.language\",\n        \"variable.function\",\n        \"variable.argument\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#e0def4\"\n      }\n    },\n    {\n      \"scope\": [\"variable.parameter\"],\n      \"settings\": {\n        \"foreground\": \"#c4a7e7\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/slack-dark.json",
    "content": "{\n  \"name\": \"slack-dark\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"activityBarBadge.background\": \"#1D978D\",\n    \"editor.background\": \"#222222\",\n    \"editor.foreground\": \"#E6E6E6\",\n    \"editor.inactiveSelectionBackground\": \"#3a3d41\",\n    \"editor.selectionHighlightBackground\": \"#add6ff26\",\n    \"editorIndentGuide.activeBackground\": \"#707070\",\n    \"editorIndentGuide.background\": \"#404040\",\n    \"input.placeholderForeground\": \"#7A7A7A\",\n    \"list.dropBackground\": \"#383b3d\",\n    \"list.activeSelectionBackground\": \"#222222\",\n    \"list.focusBackground\": \"#0077B5\",\n    \"menu.background\": \"#252526\",\n    \"menu.foreground\": \"#E6E6E6\",\n    \"settings.numberInputBackground\": \"#292929\",\n    \"settings.textInputBackground\": \"#292929\",\n    \"sideBarTitle.foreground\": \"#E6E6E6\",\n    \"statusBar.background\": \"#222222\",\n    \"statusBar.noFolderBackground\": \"#141414\",\n    \"statusBar.debuggingBackground\": \"#1D978D\",\n    \"list.hoverBackground\": \"#222222\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.deletedResourceForeground\": \"#FFF\",\n    \"gitDecoration.untrackedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.ignoredResourceForeground\": \"#877583\",\n    \"gitDecoration.addedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFF\",\n    \"editor.lineHighlightBorder\": \"#141414\",\n    \"editor.lineHighlightBackground\": \"#141414\",\n    \"editorSuggestWidget.selectedBackground\": \"#0077B5\",\n    \"sideBarSectionHeader.background\": \"#222222\",\n    \"activityBar.background\": \"#222222\",\n    \"button.background\": \"#0077B5\",\n    \"button.foreground\": \"#FFF\",\n    \"button.hoverBackground\": \"#005076\",\n    \"extensionButton.prominentBackground\": \"#0077B5\",\n    \"extensionButton.prominentForeground\": \"#FFF\",\n    \"extensionButton.prominentHoverBackground\": \"#005076\",\n    \"debugExceptionWidget.background\": \"#141414\",\n    \"debugExceptionWidget.border\": \"#FFF\",\n    \"debugToolBar.background\": \"#141414\",\n    \"titleBar.activeBackground\": \"#222222\",\n    \"titleBar.activeForeground\": \"#E6E6E6\",\n    \"titleBar.inactiveBackground\": \"#222222\",\n    \"titleBar.inactiveForeground\": \"#7A7A7A\",\n    \"focusBorder\": \"#0077B5\",\n    \"textLink.activeForeground\": \"#0077B5\",\n    \"textLink.foreground\": \"#0077B5\",\n    \"editorLink.activeForeground\": \"#0077B5\",\n    \"notificationLink.foreground\": \"#0077B5\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"meta.embedded\", \"source.groovy.embedded\"],\n      \"settings\": {\n        \"foreground\": \"#D4D4D4\"\n      }\n    },\n    {\n      \"scope\": \"emphasis\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"strong\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"header\",\n      \"settings\": {\n        \"foreground\": \"#000080\"\n      }\n    },\n    {\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"foreground\": \"#6A9955\"\n      }\n    },\n    {\n      \"scope\": \"constant.language\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": [\"constant.numeric\"],\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"constant.regexp\",\n      \"settings\": {\n        \"foreground\": \"#646695\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.tag.css\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name.class.css\",\n        \"entity.other.attribute-name.class.mixin.css\",\n        \"entity.other.attribute-name.id.css\",\n        \"entity.other.attribute-name.parent-selector.css\",\n        \"entity.other.attribute-name.pseudo-class.css\",\n        \"entity.other.attribute-name.pseudo-element.css\",\n        \"source.css.less entity.other.attribute-name.id\",\n        \"entity.other.attribute-name.attribute.scss\",\n        \"entity.other.attribute-name.scss\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"scope\": \"markup.underline\",\n      \"settings\": {\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.quote.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#6A9955\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#6796e6\"\n      }\n    },\n    {\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"name\": \"brackets of XML/HTML tags\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#808080\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.string\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"meta.preprocessor.numeric\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": \"meta.structure.dictionary.key.python\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"storage.modifier\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.tag\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.value\",\n      \"settings\": {\n        \"foreground\": \"#ce9178\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#d16969\"\n      }\n    },\n    {\n      \"name\": \"String interpolation\",\n      \"scope\": [\n        \"punctuation.definition.template-expression.begin\",\n        \"punctuation.definition.template-expression.end\",\n        \"punctuation.section.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"name\": \"Reset JavaScript string interpolation expression\",\n      \"scope\": [\"meta.template.expression\"],\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"scope\": [\n        \"support.type.vendored.property-name\",\n        \"support.type.property-name\",\n        \"variable.css\",\n        \"variable.scss\",\n        \"variable.other.less\",\n        \"source.coffee.embedded\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator\",\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"scope\": [\n        \"keyword.operator.new\",\n        \"keyword.operator.expression\",\n        \"keyword.operator.cast\",\n        \"keyword.operator.sizeof\",\n        \"keyword.operator.instanceof\",\n        \"keyword.operator.logical.python\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"keyword.other.unit\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.section.embedded.begin.php\",\n        \"punctuation.section.embedded.end.php\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"support.function.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#9cdcfe\"\n      }\n    },\n    {\n      \"scope\": \"constant.sha.git-rebase\",\n      \"settings\": {\n        \"foreground\": \"#b5cea8\"\n      }\n    },\n    {\n      \"name\": \"coloring of the Java import and package identifiers\",\n      \"scope\": [\n        \"storage.modifier.import.java\",\n        \"variable.language.wildcard.java\",\n        \"storage.modifier.package.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d4d4d4\"\n      }\n    },\n    {\n      \"name\": \"this.self\",\n      \"scope\": \"variable.language\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"name\": \"Function declarations\",\n      \"scope\": [\n        \"entity.name.function\",\n        \"support.function\",\n        \"support.constant.handlebars\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#DCDCAA\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references\",\n      \"scope\": [\n        \"meta.return-type\",\n        \"support.class\",\n        \"support.type\",\n        \"entity.name.type\",\n        \"entity.name.class\",\n        \"storage.type.numeric.go\",\n        \"storage.type.byte.go\",\n        \"storage.type.boolean.go\",\n        \"storage.type.string.go\",\n        \"storage.type.uintptr.go\",\n        \"storage.type.error.go\",\n        \"storage.type.rune.go\",\n        \"storage.type.cs\",\n        \"storage.type.generic.cs\",\n        \"storage.type.modifier.cs\",\n        \"storage.type.variable.cs\",\n        \"storage.type.annotation.java\",\n        \"storage.type.generic.java\",\n        \"storage.type.java\",\n        \"storage.type.object.array.java\",\n        \"storage.type.primitive.array.java\",\n        \"storage.type.primitive.java\",\n        \"storage.type.token.java\",\n        \"storage.type.groovy\",\n        \"storage.type.annotation.groovy\",\n        \"storage.type.parameters.groovy\",\n        \"storage.type.generic.groovy\",\n        \"storage.type.object.array.groovy\",\n        \"storage.type.primitive.array.groovy\",\n        \"storage.type.primitive.groovy\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#4EC9B0\"\n      }\n    },\n    {\n      \"name\": \"Types declaration and references, TS grammar specific\",\n      \"scope\": [\n        \"meta.type.cast.expr\",\n        \"meta.type.new.expr\",\n        \"support.constant.math\",\n        \"support.constant.dom\",\n        \"support.constant.json\",\n        \"entity.other.inherited-class\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#4EC9B0\"\n      }\n    },\n    {\n      \"name\": \"Control flow keywords\",\n      \"scope\": \"keyword.control\",\n      \"settings\": {\n        \"foreground\": \"#C586C0\"\n      }\n    },\n    {\n      \"name\": \"Variable and parameter name\",\n      \"scope\": [\n        \"variable\",\n        \"meta.definition.variable.name\",\n        \"support.variable\",\n        \"entity.name.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#9CDCFE\"\n      }\n    },\n    {\n      \"name\": \"Object keys, TS grammar specific\",\n      \"scope\": [\"meta.object-literal.key\"],\n      \"settings\": {\n        \"foreground\": \"#9CDCFE\"\n      }\n    },\n    {\n      \"name\": \"CSS property value\",\n      \"scope\": [\n        \"support.constant.property-value\",\n        \"support.constant.font-name\",\n        \"support.constant.media-type\",\n        \"support.constant.media\",\n        \"constant.other.color.rgb-value\",\n        \"constant.other.rgb-value\",\n        \"support.constant.color\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#CE9178\"\n      }\n    },\n    {\n      \"name\": \"Regular expression groups\",\n      \"scope\": [\n        \"punctuation.definition.group.regexp\",\n        \"punctuation.definition.group.assertion.regexp\",\n        \"punctuation.definition.character-class.regexp\",\n        \"punctuation.character.set.begin.regexp\",\n        \"punctuation.character.set.end.regexp\",\n        \"keyword.operator.negation.regexp\",\n        \"support.other.parenthesis.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#CE9178\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.character.character-class.regexp\",\n        \"constant.other.character-class.set.regexp\",\n        \"constant.other.character-class.regexp\",\n        \"constant.character.set.regexp\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d16969\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator.or.regexp\", \"keyword.control.anchor.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#DCDCAA\"\n      }\n    },\n    {\n      \"scope\": \"keyword.operator.quantifier.regexp\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"constant.character\",\n      \"settings\": {\n        \"foreground\": \"#569cd6\"\n      }\n    },\n    {\n      \"scope\": \"constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#d7ba7d\"\n      }\n    },\n    {\n      \"scope\": \"token.info-token\",\n      \"settings\": {\n        \"foreground\": \"#6796e6\"\n      }\n    },\n    {\n      \"scope\": \"token.warn-token\",\n      \"settings\": {\n        \"foreground\": \"#cd9731\"\n      }\n    },\n    {\n      \"scope\": \"token.error-token\",\n      \"settings\": {\n        \"foreground\": \"#f44747\"\n      }\n    },\n    {\n      \"scope\": \"token.debug-token\",\n      \"settings\": {\n        \"foreground\": \"#b267e6\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/slack-ochin.json",
    "content": "{\n  \"name\": \"slack-ochin\",\n  \"type\": \"dark\",\n  \"colors\": {\n    \"foreground\": \"#616161\",\n    \"focusBorder\": \"#161F26\",\n    \"widget.shadow\": \"#161F2694\",\n    \"input.background\": \"#FFF\",\n    \"input.border\": \"#161F26\",\n    \"input.foreground\": \"#000\",\n    \"input.placeholderForeground\": \"#a0a0a0\",\n    \"inputOption.activeBorder\": \"#3E313C\",\n    \"inputValidation.errorBackground\": \"#F44C5E\",\n    \"inputValidation.errorForeground\": \"#FFF\",\n    \"inputValidation.infoBackground\": \"#6182b8\",\n    \"inputValidation.infoForeground\": \"#FFF\",\n    \"inputValidation.warningBackground\": \"#F6B555\",\n    \"inputValidation.warningForeground\": \"#000\",\n    \"list.activeSelectionBackground\": \"#5899C5\",\n    \"list.activeSelectionForeground\": \"#fff\",\n    \"list.hoverBackground\": \"#d5e1ea\",\n    \"list.hoverForeground\": \"#fff\",\n    \"list.focusBackground\": \"#d5e1ea\",\n    \"list.focusForeground\": \"#fff\",\n    \"list.inactiveSelectionBackground\": \"#5899C5\",\n    \"list.inactiveSelectionForeground\": \"#fff\",\n    \"list.highlightForeground\": \"#2D3E4C\",\n    \"list.inactiveFocusBackground\": \"#161F26\",\n    \"list.invalidItemForeground\": \"#fff\",\n    \"button.background\": \"#475663\",\n    \"button.foreground\": \"#FFF\",\n    \"button.hoverBackground\": \"#161F26\",\n    \"scrollbar.shadow\": \"#ffffff00\",\n    \"scrollbarSlider.activeBackground\": \"#161F267e\",\n    \"scrollbarSlider.background\": \"#161F267e\",\n    \"scrollbarSlider.hoverBackground\": \"#161F267e\",\n    \"badge.background\": \"#8AE773\",\n    \"progressBar.background\": \"#8AE773\",\n    \"editor.background\": \"#FFF\",\n    \"editor.foreground\": \"#000\",\n    \"editor.lineHighlightBackground\": \"#EEEEEE\",\n    \"editor.wordHighlightStrongBackground\": \"#EEEEEE\",\n    \"editor.selectionBackground\": \"#AED4FB\",\n    \"editorLineNumber.foreground\": \"#b9b9b9\",\n    \"editorActiveLineNumber.foreground\": \"#475663\",\n    \"editor.findMatchBackground\": \"#AED4FB\",\n    \"editorHint.foreground\": \"#F9F9F9\",\n    \"editorHint.border\": \"#F9F9F9\",\n    \"editor.wordHighlightBackground\": \"#AED4FB\",\n    \"terminal.border\": \"#2D3E4C\",\n    \"terminal.foreground\": \"#161F26\",\n    \"terminal.ansiBlack\": \"#000000\",\n    \"terminal.ansiBlue\": \"#6182b8\",\n    \"terminal.ansiBrightBlack\": \"#90a4ae\",\n    \"terminal.ansiBrightBlue\": \"#6182b8\",\n    \"terminal.ansiBrightCyan\": \"#39adb5\",\n    \"terminal.ansiBrightGreen\": \"#91b859\",\n    \"terminal.ansiBrightMagenta\": \"#7c4dff\",\n    \"terminal.ansiBrightRed\": \"#e53935\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#ffb62c\",\n    \"terminal.ansiCyan\": \"#39adb5\",\n    \"terminal.ansiGreen\": \"#91b859\",\n    \"terminal.ansiMagenta\": \"#7c4dff\",\n    \"terminal.ansiRed\": \"#e53935\",\n    \"terminal.ansiWhite\": \"#ffffff\",\n    \"terminal.ansiYellow\": \"#ffb62c\",\n    \"terminal.selectionBackground\": \"#0006\",\n    \"panelTitle.activeForeground\": \"#161F26\",\n    \"activityBar.background\": \"#161F26\",\n    \"activityBar.foreground\": \"#FFF\",\n    \"activityBar.dropBackground\": \"#FFF\",\n    \"activityBarBadge.background\": \"#8AE773\",\n    \"activityBarBadge.foreground\": \"#FFF\",\n    \"panel.border\": \"#2D3E4C\",\n    \"dropdown.background\": \"#FFF\",\n    \"dropdown.listBackground\": \"#FFF\",\n    \"dropdown.border\": \"#DCDEDF\",\n    \"dropdown.foreground\": \"#DCDEDF\",\n    \"sideBar.background\": \"#2D3E4C\",\n    \"sideBar.foreground\": \"#DCDEDF\",\n    \"sideBarTitle.foreground\": \"#FFF\",\n    \"sideBarSectionHeader.foreground\": \"#FFF\",\n    \"sideBarSectionHeader.background\": \"#161F26\",\n    \"debugToolBar.background\": \"#161F26\",\n    \"tab.border\": \"#F3F3F3\",\n    \"tab.activeBackground\": \"#FFF\",\n    \"tab.inactiveForeground\": \"#686868\",\n    \"tab.inactiveBackground\": \"#F3F3F3\",\n    \"tab.activeForeground\": \"#000\",\n    \"editorGroupHeader.tabsBackground\": \"#2D3E4C\",\n    \"statusBar.foreground\": \"#FFF\",\n    \"statusBar.background\": \"#5899C5\",\n    \"statusBar.debuggingBackground\": \"#8AE773\",\n    \"statusBar.noFolderBackground\": \"#161F26\",\n    \"extensionButton.prominentBackground\": \"#475663\",\n    \"extensionButton.prominentForeground\": \"#F6F6F6\",\n    \"extensionButton.prominentHoverBackground\": \"#161F26\",\n    \"gitDecoration.modifiedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.deletedResourceForeground\": \"#FFF\",\n    \"gitDecoration.untrackedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.ignoredResourceForeground\": \"#877583\",\n    \"gitDecoration.addedResourceForeground\": \"#ECB22E\",\n    \"gitDecoration.conflictingResourceForeground\": \"#FFF\",\n    \"notificationCenter.border\": \"#161F26\",\n    \"notificationToast.border\": \"#161F26\",\n    \"notifications.foreground\": \"#FFF\",\n    \"notifications.background\": \"#161F26\",\n    \"notifications.border\": \"#161F26\",\n    \"notificationCenterHeader.foreground\": \"#FFF\",\n    \"notificationLink.foreground\": \"#FFF\",\n    \"titleBar.activeBackground\": \"#2D3E4C\",\n    \"titleBar.activeForeground\": \"#FFF\",\n    \"titleBar.inactiveBackground\": \"#161F26\",\n    \"titleBar.inactiveForeground\": \"#685C66\",\n    \"titleBar.border\": \"#2D3E4C\",\n    \"welcomePage.buttonBackground\": \"#F3F3F3\",\n    \"welcomePage.buttonHoverBackground\": \"#ECECEC\",\n    \"editorWidget.background\": \"#F9F9F9\",\n    \"editorWidget.border\": \"#dbdbdb\",\n    \"editorSuggestWidget.foreground\": \"#2D3E4C\",\n    \"editorSuggestWidget.highlightForeground\": \"#2D3E4C\",\n    \"editorSuggestWidget.selectedBackground\": \"#b9b9b9\",\n    \"editorGroup.emptyBackground\": \"#2D3E4C\",\n    \"editorGroup.focusedEmptyBorder\": \"#2D3E4C\",\n    \"editorPane.background\": \"#2D3E4C\",\n    \"breadcrumb.foreground\": \"#161F26\",\n    \"breadcrumb.focusForeground\": \"#475663\",\n    \"settings.headerForeground\": \"#161F26\",\n    \"settings.dropdownForeground\": \"#161F26\",\n    \"settings.dropdownBorder\": \"#161F26\",\n    \"menu.separatorBackground\": \"#F9FAFA\",\n    \"menu.background\": \"#161F26\",\n    \"menu.foreground\": \"#F9FAFA\",\n    \"textPreformat.foreground\": \"#161F26\",\n    \"editorIndentGuide.background\": \"#F3F3F3\",\n    \"editorIndentGuide.activeBackground\": \"#dbdbdb\",\n    \"debugExceptionWidget.background\": \"#AED4FB\",\n    \"debugExceptionWidget.border\": \"#161F26\",\n    \"editorMarkerNavigation.background\": \"#F9F9F9\",\n    \"editorMarkerNavigationInfo.background\": \"#6182b8\",\n    \"editorMarkerNavigationError.background\": \"#F44C5E\",\n    \"editorMarkerNavigationWarning.background\": \"#F6B555\"\n  },\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#002339\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.paragraph.markdown\",\n        \"string.other.link.description.title.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#110000\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.name.section.markdown\",\n        \"punctuation.definition.heading.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#034c7c\"\n      }\n    },\n    {\n      \"scope\": [\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\",\n        \"markup.quote.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#00AC8F\"\n      }\n    },\n    {\n      \"scope\": [\"markup.quote.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#003494\"\n      }\n    },\n    {\n      \"scope\": [\"markup.bold.markdown\", \"punctuation.definition.bold.markdown\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#4e76b5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.italic.markdown\",\n        \"punctuation.definition.italic.markdown\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#C792EA\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inline.raw.string.markdown\",\n        \"markup.fenced_code.block.markdown\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#0460b1\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.metadata.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#00AC8F\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.underline.link.image.markdown\",\n        \"markup.underline.link.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#924205\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#357b42\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#a44185\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"Constant\",\n      \"scope\": \"constant\",\n      \"settings\": {\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"Built-in constant\",\n      \"scope\": \"language.method\",\n      \"settings\": {\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"User-defined constant\",\n      \"scope\": [\"constant.character\", \"constant.other\"],\n      \"settings\": {\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#2f86d2\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": \"variable.language.this\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#000000\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#7b30d0\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#da5221\"\n      }\n    },\n    {\n      \"name\": \"Storage type\",\n      \"scope\": \"storage.type\",\n      \"settings\": {\n        \"foreground\": \"#0991b6\",\n        \"fontStyle\": \"\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": \"entity.name.class\",\n      \"settings\": {\n        \"foreground\": \"#1172c7\"\n      }\n    },\n    {\n      \"name\": \"Inherited class\",\n      \"scope\": \"entity.other.inherited-class\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#b02767\"\n      }\n    },\n    {\n      \"name\": \"Function name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#7eb233\"\n      }\n    },\n    {\n      \"name\": \"Function argument\",\n      \"scope\": \"variable.parameter\",\n      \"settings\": {\n        \"foreground\": \"#b1108e\",\n        \"fontStyle\": \"\"\n      }\n    },\n    {\n      \"name\": \"Tag name\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#0444ac\"\n      }\n    },\n    {\n      \"name\": \"Html Other\",\n      \"scope\": \"text.html.basic\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#0071ce\"\n      }\n    },\n    {\n      \"name\": \"Entity Name Type\",\n      \"scope\": \"entity.name.type\",\n      \"settings\": {\n        \"foreground\": \"#0444ac\"\n      }\n    },\n    {\n      \"name\": \"Tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#df8618\"\n      }\n    },\n    {\n      \"name\": \"Library function\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#1ab394\"\n      }\n    },\n    {\n      \"name\": \"Library constant\",\n      \"scope\": \"support.constant\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"Library class/type\",\n      \"scope\": [\"support.type\", \"support.class\"],\n      \"settings\": {\n        \"foreground\": \"#dc3eb7\"\n      }\n    },\n    {\n      \"name\": \"Library variable\",\n      \"scope\": \"support.other.variable\",\n      \"settings\": {\n        \"foreground\": \"#224555\"\n      }\n    },\n    {\n      \"name\": \"Invalid\",\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"fontStyle\": \" italic bold underline\",\n        \"foreground\": \"#207bb8\"\n      }\n    },\n    {\n      \"name\": \"Invalid deprecated\",\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"foreground\": \"#207bb8\",\n        \"fontStyle\": \" bold italic underline\"\n      }\n    },\n    {\n      \"name\": \"[JSON] - Support\",\n      \"scope\": \"source.json support\",\n      \"settings\": {\n        \"foreground\": \"#6dbdfa\"\n      }\n    },\n    {\n      \"name\": \"[JSON] - String\",\n      \"scope\": [\n        \"source.json string\",\n        \"source.json punctuation.definition.string\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#00820f\"\n      }\n    },\n    {\n      \"name\": \"Lists\",\n      \"scope\": \"markup.list\",\n      \"settings\": {\n        \"foreground\": \"#207bb8\"\n      }\n    },\n    {\n      \"name\": \"Headings\",\n      \"scope\": [\n        \"markup.heading punctuation.definition.heading\",\n        \"entity.name.section\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#4FB4D8\"\n      }\n    },\n    {\n      \"name\": \"Support\",\n      \"scope\": [\n        \"text.html.markdown meta.paragraph meta.link.inline\",\n        \"text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.begin.markdown\",\n        \"text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.end.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#87429A\"\n      }\n    },\n    {\n      \"name\": \"Quotes\",\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#87429A\"\n      }\n    },\n    {\n      \"name\": \"Bold\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#08134A\"\n      }\n    },\n    {\n      \"name\": \"Italic\",\n      \"scope\": [\"markup.italic\", \"punctuation.definition.italic\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#174781\"\n      }\n    },\n    {\n      \"name\": \"Link Url\",\n      \"scope\": \"meta.link\",\n      \"settings\": {\n        \"foreground\": \"#87429A\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/solarized-dark.json",
    "content": "{\n  \"name\": \"solarized-dark\",\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#839496\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.embedded\",\n        \"source.groovy.embedded\",\n        \"string meta.image.inline.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#839496\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#586E75\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#2AA198\"\n      }\n    },\n    {\n      \"name\": \"Regexp\",\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#D33682\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": [\"variable.language\", \"variable.other\"],\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#93A1A1\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": [\n        \"entity.name.class\",\n        \"entity.name.type\",\n        \"entity.name.namespace\",\n        \"entity.name.scope-resolution\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Function name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Variable start\",\n      \"scope\": \"punctuation.definition.variable\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Embedded code markers\",\n      \"scope\": [\n        \"punctuation.section.embedded.begin\",\n        \"punctuation.section.embedded.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Built-in constant\",\n      \"scope\": [\"constant.language\", \"meta.preprocessor\"],\n      \"settings\": {\n        \"foreground\": \"#B58900\"\n      }\n    },\n    {\n      \"name\": \"Support.construct\",\n      \"scope\": [\"support.function.construct\", \"keyword.other.new\"],\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"User-defined constant\",\n      \"scope\": [\"constant.character\", \"constant.other\"],\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Inherited class\",\n      \"scope\": \"entity.other.inherited-class\",\n      \"settings\": {\n        \"foreground\": \"#6C71C4\"\n      }\n    },\n    {\n      \"name\": \"Function argument\",\n      \"scope\": \"variable.parameter\",\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Tag name\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Tag start/end\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#586E75\"\n      }\n    },\n    {\n      \"name\": \"Tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#93A1A1\"\n      }\n    },\n    {\n      \"name\": \"Library function\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Continuation\",\n      \"scope\": \"punctuation.separator.continuation\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Library constant\",\n      \"scope\": [\"support.constant\", \"support.variable\"],\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Library class/type\",\n      \"scope\": [\"support.type\", \"support.class\"],\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Library Exception\",\n      \"scope\": \"support.type.exception\",\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Library variable\",\n      \"scope\": \"support.other.variable\",\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Invalid\",\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"diff: header\",\n      \"scope\": [\"meta.diff\", \"meta.diff.header\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"diff: deleted\",\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"diff: changed\",\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"diff: inserted\",\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Markup Quote\",\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Markup Lists\",\n      \"scope\": \"markup.list\",\n      \"settings\": {\n        \"foreground\": \"#B58900\"\n      }\n    },\n    {\n      \"name\": \"Markup Styling\",\n      \"scope\": [\"markup.bold\", \"markup.italic\"],\n      \"settings\": {\n        \"foreground\": \"#D33682\"\n      }\n    },\n    {\n      \"name\": \"Markup: Strong\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markup: Emphasis\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"name\": \"Markup Inline\",\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#2AA198\"\n      }\n    },\n    {\n      \"name\": \"Markup Headings\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Markup Setext Header\",\n      \"scope\": \"markup.heading.setext\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#268BD2\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#2AA19899\",\n    \"selection.background\": \"#2AA19899\",\n    \"input.background\": \"#003847\",\n    \"input.foreground\": \"#93A1A1\",\n    \"input.placeholderForeground\": \"#93A1A1AA\",\n    \"inputOption.activeBorder\": \"#2AA19899\",\n    \"inputValidation.infoBorder\": \"#363b5f\",\n    \"inputValidation.infoBackground\": \"#052730\",\n    \"inputValidation.warningBackground\": \"#5d5938\",\n    \"inputValidation.warningBorder\": \"#9d8a5e\",\n    \"inputValidation.errorBackground\": \"#571b26\",\n    \"inputValidation.errorBorder\": \"#a92049\",\n    \"errorForeground\": \"#ffeaea\",\n    \"badge.background\": \"#047aa6\",\n    \"progressBar.background\": \"#047aa6\",\n    \"dropdown.background\": \"#00212B\",\n    \"dropdown.border\": \"#2AA19899\",\n    \"button.background\": \"#2AA19899\",\n    \"list.activeSelectionBackground\": \"#005A6F\",\n    \"quickInputList.focusBackground\": \"#005A6F\",\n    \"list.hoverBackground\": \"#004454AA\",\n    \"list.inactiveSelectionBackground\": \"#00445488\",\n    \"list.dropBackground\": \"#00445488\",\n    \"list.highlightForeground\": \"#1ebcc5\",\n    \"editor.background\": \"#002B36\",\n    \"editor.foreground\": \"#839496\",\n    \"editorWidget.background\": \"#00212B\",\n    \"editorCursor.foreground\": \"#D30102\",\n    \"editorWhitespace.foreground\": \"#93A1A180\",\n    \"editor.lineHighlightBackground\": \"#073642\",\n    \"editorLineNumber.activeForeground\": \"#949494\",\n    \"editor.selectionBackground\": \"#274642\",\n    \"minimap.selectionHighlight\": \"#274642\",\n    \"editorIndentGuide.background\": \"#93A1A180\",\n    \"editorIndentGuide.activeBackground\": \"#C3E1E180\",\n    \"editorHoverWidget.background\": \"#004052\",\n    \"editorMarkerNavigationError.background\": \"#AB395B\",\n    \"editorMarkerNavigationWarning.background\": \"#5B7E7A\",\n    \"editor.selectionHighlightBackground\": \"#005A6FAA\",\n    \"editor.wordHighlightBackground\": \"#004454AA\",\n    \"editor.wordHighlightStrongBackground\": \"#005A6FAA\",\n    \"editorBracketHighlight.foreground1\": \"#cdcdcdff\",\n    \"editorBracketHighlight.foreground2\": \"#b58900ff\",\n    \"editorBracketHighlight.foreground3\": \"#d33682ff\",\n    \"peekViewResult.background\": \"#00212B\",\n    \"peekViewEditor.background\": \"#10192c\",\n    \"peekViewTitle.background\": \"#00212B\",\n    \"peekView.border\": \"#2b2b4a\",\n    \"peekViewEditor.matchHighlightBackground\": \"#7744AA40\",\n    \"titleBar.activeBackground\": \"#002C39\",\n    \"editorGroup.border\": \"#00212B\",\n    \"editorGroup.dropBackground\": \"#2AA19844\",\n    \"editorGroupHeader.tabsBackground\": \"#004052\",\n    \"tab.activeForeground\": \"#d6dbdb\",\n    \"tab.activeBackground\": \"#002B37\",\n    \"tab.inactiveForeground\": \"#93A1A1\",\n    \"tab.inactiveBackground\": \"#004052\",\n    \"tab.border\": \"#003847\",\n    \"tab.lastPinnedBorder\": \"#2AA19844\",\n    \"activityBar.background\": \"#003847\",\n    \"panel.border\": \"#2b2b4a\",\n    \"sideBar.background\": \"#00212B\",\n    \"sideBarTitle.foreground\": \"#93A1A1\",\n    \"statusBar.foreground\": \"#93A1A1\",\n    \"statusBar.background\": \"#00212B\",\n    \"statusBar.debuggingBackground\": \"#00212B\",\n    \"statusBar.noFolderBackground\": \"#00212B\",\n    \"statusBarItem.remoteBackground\": \"#2AA19899\",\n    \"ports.iconRunningProcessForeground\": \"#369432\",\n    \"statusBarItem.prominentBackground\": \"#003847\",\n    \"statusBarItem.prominentHoverBackground\": \"#003847\",\n    \"debugToolBar.background\": \"#00212B\",\n    \"debugExceptionWidget.background\": \"#00212B\",\n    \"debugExceptionWidget.border\": \"#AB395B\",\n    \"pickerGroup.foreground\": \"#2AA19899\",\n    \"pickerGroup.border\": \"#2AA19899\",\n    \"terminal.ansiBlack\": \"#073642\",\n    \"terminal.ansiRed\": \"#dc322f\",\n    \"terminal.ansiGreen\": \"#859900\",\n    \"terminal.ansiYellow\": \"#b58900\",\n    \"terminal.ansiBlue\": \"#268bd2\",\n    \"terminal.ansiMagenta\": \"#d33682\",\n    \"terminal.ansiCyan\": \"#2aa198\",\n    \"terminal.ansiWhite\": \"#eee8d5\",\n    \"terminal.ansiBrightBlack\": \"#002b36\",\n    \"terminal.ansiBrightRed\": \"#cb4b16\",\n    \"terminal.ansiBrightGreen\": \"#586e75\",\n    \"terminal.ansiBrightYellow\": \"#657b83\",\n    \"terminal.ansiBrightBlue\": \"#839496\",\n    \"terminal.ansiBrightMagenta\": \"#6c71c4\",\n    \"terminal.ansiBrightCyan\": \"#93a1a1\",\n    \"terminal.ansiBrightWhite\": \"#fdf6e3\"\n  },\n  \"semanticHighlighting\": true\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/solarized-light.json",
    "content": "{\n  \"name\": \"solarized-light\",\n  \"tokenColors\": [\n    {\n      \"settings\": {\n        \"foreground\": \"#657B83\"\n      }\n    },\n    {\n      \"scope\": [\n        \"meta.embedded\",\n        \"source.groovy.embedded\",\n        \"string meta.image.inline.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#657B83\"\n      }\n    },\n    {\n      \"name\": \"Comment\",\n      \"scope\": \"comment\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#93A1A1\"\n      }\n    },\n    {\n      \"name\": \"String\",\n      \"scope\": \"string\",\n      \"settings\": {\n        \"foreground\": \"#2AA198\"\n      }\n    },\n    {\n      \"name\": \"Regexp\",\n      \"scope\": \"string.regexp\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Number\",\n      \"scope\": \"constant.numeric\",\n      \"settings\": {\n        \"foreground\": \"#D33682\"\n      }\n    },\n    {\n      \"name\": \"Variable\",\n      \"scope\": [\"variable.language\", \"variable.other\"],\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Keyword\",\n      \"scope\": \"keyword\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Storage\",\n      \"scope\": \"storage\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#586E75\"\n      }\n    },\n    {\n      \"name\": \"Class name\",\n      \"scope\": [\n        \"entity.name.class\",\n        \"entity.name.type\",\n        \"entity.name.namespace\",\n        \"entity.name.scope-resolution\"\n      ],\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Function name\",\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Variable start\",\n      \"scope\": \"punctuation.definition.variable\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Embedded code markers\",\n      \"scope\": [\n        \"punctuation.section.embedded.begin\",\n        \"punctuation.section.embedded.end\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Built-in constant\",\n      \"scope\": [\"constant.language\", \"meta.preprocessor\"],\n      \"settings\": {\n        \"foreground\": \"#B58900\"\n      }\n    },\n    {\n      \"name\": \"Support.construct\",\n      \"scope\": [\"support.function.construct\", \"keyword.other.new\"],\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"User-defined constant\",\n      \"scope\": [\"constant.character\", \"constant.other\"],\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Inherited class\",\n      \"scope\": \"entity.other.inherited-class\",\n      \"settings\": {\n        \"foreground\": \"#6C71C4\"\n      }\n    },\n    {\n      \"name\": \"Function argument\",\n      \"scope\": \"variable.parameter\",\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Tag name\",\n      \"scope\": \"entity.name.tag\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Tag start/end\",\n      \"scope\": \"punctuation.definition.tag\",\n      \"settings\": {\n        \"foreground\": \"#93A1A1\"\n      }\n    },\n    {\n      \"name\": \"Tag attribute\",\n      \"scope\": \"entity.other.attribute-name\",\n      \"settings\": {\n        \"foreground\": \"#93A1A1\"\n      }\n    },\n    {\n      \"name\": \"Library function\",\n      \"scope\": \"support.function\",\n      \"settings\": {\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Continuation\",\n      \"scope\": \"punctuation.separator.continuation\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"Library constant\",\n      \"scope\": [\"support.constant\", \"support.variable\"],\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Library class/type\",\n      \"scope\": [\"support.type\", \"support.class\"],\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Library Exception\",\n      \"scope\": \"support.type.exception\",\n      \"settings\": {\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"Library variable\",\n      \"scope\": \"support.other.variable\",\n      \"settings\": {}\n    },\n    {\n      \"name\": \"Invalid\",\n      \"scope\": \"invalid\",\n      \"settings\": {\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"diff: header\",\n      \"scope\": [\"meta.diff\", \"meta.diff.header\"],\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"diff: deleted\",\n      \"scope\": \"markup.deleted\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#DC322F\"\n      }\n    },\n    {\n      \"name\": \"diff: changed\",\n      \"scope\": \"markup.changed\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#CB4B16\"\n      }\n    },\n    {\n      \"name\": \"diff: inserted\",\n      \"scope\": \"markup.inserted\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Markup Quote\",\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#859900\"\n      }\n    },\n    {\n      \"name\": \"Markup Lists\",\n      \"scope\": \"markup.list\",\n      \"settings\": {\n        \"foreground\": \"#B58900\"\n      }\n    },\n    {\n      \"name\": \"Markup Styling\",\n      \"scope\": [\"markup.bold\", \"markup.italic\"],\n      \"settings\": {\n        \"foreground\": \"#D33682\"\n      }\n    },\n    {\n      \"name\": \"Markup: Strong\",\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"name\": \"Markup: Emphasis\",\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\"\n      }\n    },\n    {\n      \"scope\": \"markup.strikethrough\",\n      \"settings\": {\n        \"fontStyle\": \"strikethrough\"\n      }\n    },\n    {\n      \"name\": \"Markup Inline\",\n      \"scope\": \"markup.inline.raw\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#2AA198\"\n      }\n    },\n    {\n      \"name\": \"Markup Headings\",\n      \"scope\": \"markup.heading\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#268BD2\"\n      }\n    },\n    {\n      \"name\": \"Markup Setext Header\",\n      \"scope\": \"markup.heading.setext\",\n      \"settings\": {\n        \"fontStyle\": \"\",\n        \"foreground\": \"#268BD2\"\n      }\n    }\n  ],\n  \"colors\": {\n    \"focusBorder\": \"#D3AF86\",\n    \"input.background\": \"#DDD6C1\",\n    \"input.foreground\": \"#586E75\",\n    \"input.placeholderForeground\": \"#586E75AA\",\n    \"inputOption.activeBorder\": \"#D3AF86\",\n    \"badge.background\": \"#B58900AA\",\n    \"progressBar.background\": \"#B58900\",\n    \"dropdown.background\": \"#EEE8D5\",\n    \"dropdown.border\": \"#D3AF86\",\n    \"button.background\": \"#AC9D57\",\n    \"selection.background\": \"#878b9180\",\n    \"list.activeSelectionBackground\": \"#DFCA88\",\n    \"list.activeSelectionForeground\": \"#6C6C6C\",\n    \"quickInputList.focusBackground\": \"#DFCA8866\",\n    \"list.hoverBackground\": \"#DFCA8844\",\n    \"list.inactiveSelectionBackground\": \"#D1CBB8\",\n    \"list.highlightForeground\": \"#B58900\",\n    \"editor.background\": \"#FDF6E3\",\n    \"editor.foreground\": \"#657B83\",\n    \"notebook.cellEditorBackground\": \"#F7F0E0\",\n    \"editorWidget.background\": \"#EEE8D5\",\n    \"editorCursor.foreground\": \"#657B83\",\n    \"editorWhitespace.foreground\": \"#586E7580\",\n    \"editor.lineHighlightBackground\": \"#EEE8D5\",\n    \"editor.selectionBackground\": \"#EEE8D5\",\n    \"minimap.selectionHighlight\": \"#EEE8D5\",\n    \"editorIndentGuide.background\": \"#586E7580\",\n    \"editorIndentGuide.activeBackground\": \"#081E2580\",\n    \"editorHoverWidget.background\": \"#CCC4B0\",\n    \"editorLineNumber.activeForeground\": \"#567983\",\n    \"peekViewResult.background\": \"#EEE8D5\",\n    \"peekViewEditor.background\": \"#FFFBF2\",\n    \"peekViewTitle.background\": \"#EEE8D5\",\n    \"peekView.border\": \"#B58900\",\n    \"peekViewEditor.matchHighlightBackground\": \"#7744AA40\",\n    \"titleBar.activeBackground\": \"#EEE8D5\",\n    \"editorGroup.border\": \"#DDD6C1\",\n    \"editorGroup.dropBackground\": \"#DDD6C1AA\",\n    \"editorGroupHeader.tabsBackground\": \"#D9D2C2\",\n    \"tab.border\": \"#DDD6C1\",\n    \"tab.activeBackground\": \"#FDF6E3\",\n    \"tab.inactiveForeground\": \"#586E75\",\n    \"tab.inactiveBackground\": \"#D3CBB7\",\n    \"tab.activeModifiedBorder\": \"#cb4b16\",\n    \"tab.lastPinnedBorder\": \"#FDF6E3\",\n    \"activityBar.background\": \"#DDD6C1\",\n    \"activityBar.foreground\": \"#584c27\",\n    \"activityBarBadge.background\": \"#B58900\",\n    \"panel.border\": \"#DDD6C1\",\n    \"sideBar.background\": \"#EEE8D5\",\n    \"sideBarTitle.foreground\": \"#586E75\",\n    \"statusBar.foreground\": \"#586E75\",\n    \"statusBar.background\": \"#EEE8D5\",\n    \"statusBar.debuggingBackground\": \"#EEE8D5\",\n    \"statusBar.noFolderBackground\": \"#EEE8D5\",\n    \"statusBarItem.remoteBackground\": \"#AC9D57\",\n    \"ports.iconRunningProcessForeground\": \"#2AA19899\",\n    \"statusBarItem.prominentBackground\": \"#DDD6C1\",\n    \"statusBarItem.prominentHoverBackground\": \"#DDD6C199\",\n    \"debugToolBar.background\": \"#DDD6C1\",\n    \"debugExceptionWidget.background\": \"#DDD6C1\",\n    \"debugExceptionWidget.border\": \"#AB395B\",\n    \"pickerGroup.border\": \"#2AA19899\",\n    \"pickerGroup.foreground\": \"#2AA19899\",\n    \"extensionButton.prominentBackground\": \"#b58900\",\n    \"extensionButton.prominentHoverBackground\": \"#584c27aa\",\n    \"terminal.ansiBlack\": \"#073642\",\n    \"terminal.ansiRed\": \"#dc322f\",\n    \"terminal.ansiGreen\": \"#859900\",\n    \"terminal.ansiYellow\": \"#b58900\",\n    \"terminal.ansiBlue\": \"#268bd2\",\n    \"terminal.ansiMagenta\": \"#d33682\",\n    \"terminal.ansiCyan\": \"#2aa198\",\n    \"terminal.ansiWhite\": \"#eee8d5\",\n    \"terminal.ansiBrightBlack\": \"#002b36\",\n    \"terminal.ansiBrightRed\": \"#cb4b16\",\n    \"terminal.ansiBrightGreen\": \"#586e75\",\n    \"terminal.ansiBrightYellow\": \"#657b83\",\n    \"terminal.ansiBrightBlue\": \"#839496\",\n    \"terminal.ansiBrightMagenta\": \"#6c71c4\",\n    \"terminal.ansiBrightCyan\": \"#93a1a1\",\n    \"terminal.ansiBrightWhite\": \"#fdf6e3\",\n    \"terminal.background\": \"#FDF6E3\",\n    \"walkThrough.embeddedEditorBackground\": \"#00000014\"\n  },\n  \"semanticHighlighting\": true\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/vitesse-dark.json",
    "content": "{\n  \"name\": \"vitesse-dark\",\n  \"base\": \"vs-dark\",\n  \"colors\": {\n    \"focusBorder\": \"#00000000\",\n    \"foreground\": \"#dbd7caee\",\n    \"descriptionForeground\": \"#dedcd590\",\n    \"errorForeground\": \"#cb7676\",\n    \"textLink.foreground\": \"#4d9375\",\n    \"textLink.activeForeground\": \"#4d9375\",\n    \"textBlockQuote.background\": \"#121212\",\n    \"textBlockQuote.border\": \"#191919\",\n    \"textCodeBlock.background\": \"#121212\",\n    \"textPreformat.foreground\": \"#d1d5da\",\n    \"textSeparator.foreground\": \"#586069\",\n    \"button.background\": \"#4d9375\",\n    \"button.foreground\": \"#121212\",\n    \"button.hoverBackground\": \"#4d9375\",\n    \"checkbox.background\": \"#181818\",\n    \"checkbox.border\": \"#2f363d\",\n    \"dropdown.background\": \"#121212\",\n    \"dropdown.border\": \"#191919\",\n    \"dropdown.foreground\": \"#dbd7caee\",\n    \"dropdown.listBackground\": \"#181818\",\n    \"input.background\": \"#181818\",\n    \"input.border\": \"#191919\",\n    \"input.foreground\": \"#dbd7caee\",\n    \"input.placeholderForeground\": \"#dedcd590\",\n    \"inputOption.activeBackground\": \"#dedcd530\",\n    \"badge.foreground\": \"#121212\",\n    \"badge.background\": \"#dedcd590\",\n    \"progressBar.background\": \"#4d9375\",\n    \"titleBar.activeForeground\": \"#bfbaaa\",\n    \"titleBar.activeBackground\": \"#121212\",\n    \"titleBar.inactiveForeground\": \"#959da5\",\n    \"titleBar.inactiveBackground\": \"#121212\",\n    \"titleBar.border\": \"#181818\",\n    \"activityBar.foreground\": \"#dbd7caee\",\n    \"activityBar.inactiveForeground\": \"#dedcd530\",\n    \"activityBar.background\": \"#121212\",\n    \"activityBarBadge.foreground\": \"#121212\",\n    \"activityBarBadge.background\": \"#bfbaaa\",\n    \"activityBar.activeBorder\": \"#4d9375\",\n    \"activityBar.border\": \"#191919\",\n    \"sideBar.foreground\": \"#bfbaaa\",\n    \"sideBar.background\": \"#121212\",\n    \"sideBar.border\": \"#191919\",\n    \"sideBarTitle.foreground\": \"#dbd7caee\",\n    \"sideBarSectionHeader.foreground\": \"#dbd7caee\",\n    \"sideBarSectionHeader.background\": \"#121212\",\n    \"sideBarSectionHeader.border\": \"#191919\",\n    \"list.hoverForeground\": \"#dbd7caee\",\n    \"list.inactiveSelectionForeground\": \"#dbd7caee\",\n    \"list.activeSelectionForeground\": \"#dbd7caee\",\n    \"list.hoverBackground\": \"#181818\",\n    \"list.inactiveSelectionBackground\": \"#181818\",\n    \"list.activeSelectionBackground\": \"#181818\",\n    \"list.inactiveFocusBackground\": \"#121212\",\n    \"list.focusBackground\": \"#181818\",\n    \"tree.indentGuidesStroke\": \"#2f363d\",\n    \"notificationCenterHeader.foreground\": \"#959da5\",\n    \"notificationCenterHeader.background\": \"#121212\",\n    \"notifications.foreground\": \"#dbd7caee\",\n    \"notifications.background\": \"#121212\",\n    \"notifications.border\": \"#191919\",\n    \"notificationsErrorIcon.foreground\": \"#cb7676\",\n    \"notificationsWarningIcon.foreground\": \"#d4976c\",\n    \"notificationsInfoIcon.foreground\": \"#6394bf\",\n    \"pickerGroup.border\": \"#444d56\",\n    \"pickerGroup.foreground\": \"#dbd7caee\",\n    \"quickInput.background\": \"#121212\",\n    \"quickInput.foreground\": \"#dbd7caee\",\n    \"statusBar.foreground\": \"#bfbaaa\",\n    \"statusBar.background\": \"#121212\",\n    \"statusBar.border\": \"#191919\",\n    \"statusBar.noFolderBackground\": \"#121212\",\n    \"statusBar.debuggingBackground\": \"#181818\",\n    \"statusBar.debuggingForeground\": \"#bfbaaa\",\n    \"statusBarItem.prominentBackground\": \"#181818\",\n    \"editorGroupHeader.tabsBackground\": \"#121212\",\n    \"editorGroupHeader.tabsBorder\": \"#191919\",\n    \"editorGroup.border\": \"#191919\",\n    \"tab.activeForeground\": \"#dbd7caee\",\n    \"tab.inactiveForeground\": \"#959da5\",\n    \"tab.inactiveBackground\": \"#121212\",\n    \"tab.activeBackground\": \"#121212\",\n    \"tab.hoverBackground\": \"#181818\",\n    \"tab.unfocusedHoverBackground\": \"#121212\",\n    \"tab.border\": \"#191919\",\n    \"tab.unfocusedActiveBorderTop\": \"#191919\",\n    \"tab.activeBorder\": \"#191919\",\n    \"tab.unfocusedActiveBorder\": \"#191919\",\n    \"tab.activeBorderTop\": \"#dedcd590\",\n    \"breadcrumb.foreground\": \"#959da5\",\n    \"breadcrumb.focusForeground\": \"#dbd7caee\",\n    \"breadcrumb.activeSelectionForeground\": \"#eeeeee15\",\n    \"breadcrumbPicker.background\": \"#121212\",\n    \"editor.foreground\": \"#dbd7caee\",\n    \"editor.background\": \"#121212\",\n    \"editorWidget.background\": \"#121212\",\n    \"editor.foldBackground\": \"#eeeeee10\",\n    \"editor.lineHighlightBackground\": \"#181818\",\n    \"editorLineNumber.foreground\": \"#dedcd530\",\n    \"editorLineNumber.activeForeground\": \"#bfbaaa\",\n    \"editorIndentGuide.background\": \"#ffffff15\",\n    \"editorIndentGuide.activeBackground\": \"#ffffff30\",\n    \"editorWhitespace.foreground\": \"#ffffff15\",\n    \"editor.findMatchBackground\": \"#e6cc7722\",\n    \"editor.findMatchHighlightBackground\": \"#e6cc7744\",\n    \"editor.inactiveSelectionBackground\": \"#eeeeee08\",\n    \"editor.selectionBackground\": \"#eeeeee15\",\n    \"editor.selectionHighlightBackground\": \"#eeeeee08\",\n    \"editor.wordHighlightBackground\": \"#1c6b4805\",\n    \"editor.wordHighlightStrongBackground\": \"#1c6b4810\",\n    \"editorBracketMatch.background\": \"#4d937520\",\n    \"diffEditor.insertedTextBackground\": \"#4d937522\",\n    \"diffEditor.removedTextBackground\": \"#ab595922\",\n    \"scrollbar.shadow\": \"#0008\",\n    \"scrollbarSlider.background\": \"#dedcd510\",\n    \"scrollbarSlider.hoverBackground\": \"#dedcd530\",\n    \"scrollbarSlider.activeBackground\": \"#dedcd530\",\n    \"editorOverviewRuler.border\": \"#111\",\n    \"panel.background\": \"#121212\",\n    \"panel.border\": \"#191919\",\n    \"panelTitle.activeBorder\": \"#4d9375\",\n    \"panelTitle.activeForeground\": \"#dbd7caee\",\n    \"panelTitle.inactiveForeground\": \"#959da5\",\n    \"panelInput.border\": \"#2f363d\",\n    \"terminal.foreground\": \"#dbd7caee\",\n    \"terminal.selectionBackground\": \"#eeeeee15\",\n    \"terminal.ansiBrightBlack\": \"#777777\",\n    \"terminal.ansiBrightBlue\": \"#6394bf\",\n    \"terminal.ansiBrightCyan\": \"#5eaab5\",\n    \"terminal.ansiBrightGreen\": \"#4d9375\",\n    \"terminal.ansiBrightMagenta\": \"#d9739f\",\n    \"terminal.ansiBrightRed\": \"#cb7676\",\n    \"terminal.ansiBrightWhite\": \"#ffffff\",\n    \"terminal.ansiBrightYellow\": \"#e6cc77\",\n    \"terminal.ansiBlack\": \"#393a34\",\n    \"terminal.ansiBlue\": \"#6394bf\",\n    \"terminal.ansiCyan\": \"#5eaab5\",\n    \"terminal.ansiGreen\": \"#4d9375\",\n    \"terminal.ansiMagenta\": \"#d9739f\",\n    \"terminal.ansiRed\": \"#cb7676\",\n    \"terminal.ansiWhite\": \"#dbd7caee\",\n    \"terminal.ansiYellow\": \"#e6cc77\",\n    \"gitDecoration.addedResourceForeground\": \"#4d9375\",\n    \"gitDecoration.modifiedResourceForeground\": \"#6394bf\",\n    \"gitDecoration.deletedResourceForeground\": \"#cb7676\",\n    \"gitDecoration.untrackedResourceForeground\": \"#5eaab5\",\n    \"gitDecoration.ignoredResourceForeground\": \"#dedcd530\",\n    \"gitDecoration.conflictingResourceForeground\": \"#d4976c\",\n    \"gitDecoration.submoduleResourceForeground\": \"#dedcd590\",\n    \"editorGutter.modifiedBackground\": \"#6394bf\",\n    \"editorGutter.addedBackground\": \"#4d9375\",\n    \"editorGutter.deletedBackground\": \"#cb7676\",\n    \"editorBracketHighlight.foreground1\": \"#5eaab5\",\n    \"editorBracketHighlight.foreground2\": \"#4d9375\",\n    \"editorBracketHighlight.foreground3\": \"#d4976c\",\n    \"editorBracketHighlight.foreground4\": \"#d9739f\",\n    \"editorBracketHighlight.foreground5\": \"#e6cc77\",\n    \"editorBracketHighlight.foreground6\": \"#6394bf\",\n    \"debugToolBar.background\": \"#121212\",\n    \"editor.stackFrameHighlightBackground\": \"#a707\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#b808\",\n    \"peekViewEditor.matchHighlightBackground\": \"#ffd33d33\",\n    \"peekViewResult.matchHighlightBackground\": \"#ffd33d33\",\n    \"peekViewEditor.background\": \"#121212\",\n    \"peekViewResult.background\": \"#121212\",\n    \"settings.headerForeground\": \"#dbd7caee\",\n    \"settings.modifiedItemIndicator\": \"#4d9375\",\n    \"welcomePage.buttonBackground\": \"#2f363d\",\n    \"welcomePage.buttonHoverBackground\": \"#444d56\",\n    \"problemsErrorIcon.foreground\": \"#cb7676\",\n    \"problemsWarningIcon.foreground\": \"#d4976c\",\n    \"problemsInfoIcon.foreground\": \"#6394bf\",\n    \"editorError.foreground\": \"#cb7676\",\n    \"editorWarning.foreground\": \"#d4976c\",\n    \"editorInfo.foreground\": \"#6394bf\",\n    \"editorHint.foreground\": \"#4d9375\",\n    \"editorGutter.commentRangeForeground\": \"#dedcd530\",\n    \"editorGutter.foldingControlForeground\": \"#dedcd590\",\n    \"editorInlayHint.foreground\": \"#666666\",\n    \"editorInlayHint.background\": \"#00000000\"\n  },\n  \"semanticHighlighting\": true,\n  \"semanticTokenColors\": {\n    \"namespace\": \"#db889a\",\n    \"property\": \"#b8a965\",\n    \"interface\": \"#5DA994\",\n    \"type\": \"#5DA994\",\n    \"class\": \"#6893BF\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\", \"string.comment\"],\n      \"settings\": {\n        \"foreground\": \"#758575dd\"\n      }\n    },\n    {\n      \"scope\": [\n        \"delimiter.bracket\",\n        \"delimiter\",\n        \"invalid.illegal.character-not-allowed-here.html\",\n        \"keyword.operator.assignment\",\n        \"keyword.operator.assignment\",\n        \"keyword.operator.rest\",\n        \"keyword.operator.spread\",\n        \"keyword.operator.type.annotation\",\n        \"meta.brace\",\n        \"meta.tag.block.any.html\",\n        \"meta.tag.inline.any.html\",\n        \"meta.tag.structure.input.void.html\",\n        \"meta.type.annotation\",\n        \"storage.type.function.arrow\",\n        \"keyword.operator.type\",\n        \"punctuation\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#666666\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant\",\n        \"entity.name.constant\",\n        \"variable.language\",\n        \"meta.definition.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c99076\"\n      }\n    },\n    {\n      \"scope\": [\"entity\", \"entity.name\"],\n      \"settings\": {\n        \"foreground\": \"#80a665\"\n      }\n    },\n    {\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#dbd7caee\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.tag\", \"tag.html\"],\n      \"settings\": {\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#80a665\"\n      }\n    },\n    {\n      \"scope\": [\"keyword\", \"storage.type.class.jsdoc\"],\n      \"settings\": {\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage\",\n        \"storage.type\",\n        \"support.type.builtin\",\n        \"constant.language.undefined\",\n        \"constant.language.null\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#cb7676\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.package\",\n        \"storage.modifier.import\",\n        \"storage.type.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#dbd7caee\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string\",\n        \"string punctuation.section.embedded source\",\n        \"attribute.value\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c98a7d\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.string\"],\n      \"settings\": {\n        \"foreground\": \"#c98a7daa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.support.type.property-name\"],\n      \"settings\": {\n        \"foreground\": \"#b8a965aa\"\n      }\n    },\n    {\n      \"scope\": \"support\",\n      \"settings\": {\n        \"foreground\": \"#b8a965\"\n      }\n    },\n    {\n      \"scope\": [\n        \"property\",\n        \"meta.property-name\",\n        \"meta.object-literal.key\",\n        \"entity.name.tag.yaml\",\n        \"attribute.name\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b8a965\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name\",\n        \"invalid.deprecated.entity.other.attribute-name.html\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#bd976a\"\n      }\n    },\n    {\n      \"scope\": [\"variable\", \"identifier\"],\n      \"settings\": {\n        \"foreground\": \"#bd976a\"\n      }\n    },\n    {\n      \"scope\": [\"support.type.primitive\", \"entity.name.type\"],\n      \"settings\": {\n        \"foreground\": \"#5da9a7\"\n      }\n    },\n    {\n      \"scope\": \"namespace\",\n      \"settings\": {\n        \"foreground\": \"#db889a\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator\", \"meta.var.expr.ts\"],\n      \"settings\": {\n        \"foreground\": \"#cb7676\"\n      }\n    },\n    {\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": \"carriage-return\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"background\": \"#f97583\",\n        \"foreground\": \"#24292e\",\n        \"content\": \"^M\"\n      }\n    },\n    {\n      \"scope\": \"message.error\",\n      \"settings\": {\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": \"string source\",\n      \"settings\": {\n        \"foreground\": \"#dbd7caee\"\n      }\n    },\n    {\n      \"scope\": \"string variable\",\n      \"settings\": {\n        \"foreground\": \"#c98a7d\"\n      }\n    },\n    {\n      \"scope\": [\"source.regexp\", \"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#c4704f\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.regexp.character-class\",\n        \"string.regexp constant.character.escape\",\n        \"string.regexp source.ruby.embedded\",\n        \"string.regexp string.regexp.arbitrary-repitition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c98a7d\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#e6cc77\"\n      }\n    },\n    {\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"foreground\": \"#c99076\"\n      }\n    },\n    {\n      \"scope\": [\"constant.numeric\", \"number\"],\n      \"settings\": {\n        \"foreground\": \"#4C9A91\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.other.unit\"],\n      \"settings\": {\n        \"foreground\": \"#cb7676\"\n      }\n    },\n    {\n      \"scope\": [\"constant.language.boolean\", \"constant.language\"],\n      \"settings\": {\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": \"meta.module-reference\",\n      \"settings\": {\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#d4976c\"\n      }\n    },\n    {\n      \"scope\": [\"markup.heading\", \"markup.heading entity.name\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#5DA994\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#dbd7caee\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#dbd7caee\"\n      }\n    },\n    {\n      \"scope\": \"markup.raw\",\n      \"settings\": {\n        \"foreground\": \"#4d9375\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.deleted\",\n        \"meta.diff.header.from-file\",\n        \"punctuation.definition.deleted\"\n      ],\n      \"settings\": {\n        \"background\": \"#86181d\",\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inserted\",\n        \"meta.diff.header.to-file\",\n        \"punctuation.definition.inserted\"\n      ],\n      \"settings\": {\n        \"background\": \"#144620\",\n        \"foreground\": \"#85e89d\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\", \"punctuation.definition.changed\"],\n      \"settings\": {\n        \"background\": \"#c24e00\",\n        \"foreground\": \"#ffab70\"\n      }\n    },\n    {\n      \"scope\": [\"markup.ignored\", \"markup.untracked\"],\n      \"settings\": {\n        \"foreground\": \"#2f363d\",\n        \"background\": \"#79b8ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.range\",\n      \"settings\": {\n        \"foreground\": \"#b392f0\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#79b8ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#79b8ff\"\n      }\n    },\n    {\n      \"scope\": \"meta.output\",\n      \"settings\": {\n        \"foreground\": \"#79b8ff\"\n      }\n    },\n    {\n      \"scope\": [\n        \"brackethighlighter.tag\",\n        \"brackethighlighter.curly\",\n        \"brackethighlighter.round\",\n        \"brackethighlighter.square\",\n        \"brackethighlighter.angle\",\n        \"brackethighlighter.quote\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#d1d5da\"\n      }\n    },\n    {\n      \"scope\": \"brackethighlighter.unmatched\",\n      \"settings\": {\n        \"foreground\": \"#fdaeb7\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.other.reference.link\",\n        \"string.other.link\",\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#c98a7d\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline.link.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#dedcd590\",\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"type.identifier\"],\n      \"settings\": {\n        \"foreground\": \"#6893BF\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name.html.vue\"],\n      \"settings\": {\n        \"foreground\": \"#80a665\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.illegal.unrecognized-tag.html\"],\n      \"settings\": {\n        \"fontStyle\": \"normal\"\n      }\n    }\n  ],\n  \"rules\": [\n    {\n      \"token\": \"comment\",\n      \"foreground\": \"758575dd\"\n    },\n    {\n      \"token\": \"punctuation.definition.comment\",\n      \"foreground\": \"758575dd\"\n    },\n    {\n      \"token\": \"string.comment\",\n      \"foreground\": \"758575dd\"\n    },\n    {\n      \"token\": \"delimiter.bracket\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"delimiter\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"invalid.illegal.character-not-allowed-here.html\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.assignment\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.assignment\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.rest\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.spread\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.type.annotation\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"meta.brace\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"meta.tag.block.any.html\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"meta.tag.inline.any.html\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"meta.tag.structure.input.void.html\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"meta.type.annotation\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"storage.type.function.arrow\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"keyword.operator.type\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"punctuation\",\n      \"foreground\": \"666666\"\n    },\n    {\n      \"token\": \"constant\",\n      \"foreground\": \"c99076\"\n    },\n    {\n      \"token\": \"entity.name.constant\",\n      \"foreground\": \"c99076\"\n    },\n    {\n      \"token\": \"variable.language\",\n      \"foreground\": \"c99076\"\n    },\n    {\n      \"token\": \"meta.definition.variable\",\n      \"foreground\": \"c99076\"\n    },\n    {\n      \"token\": \"entity\",\n      \"foreground\": \"80a665\"\n    },\n    {\n      \"token\": \"entity.name\",\n      \"foreground\": \"80a665\"\n    },\n    {\n      \"token\": \"variable.parameter.function\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"entity.name.tag\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"tag.html\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"entity.name.function\",\n      \"foreground\": \"80a665\"\n    },\n    {\n      \"token\": \"keyword\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"storage.type.class.jsdoc\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"storage\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"storage.type\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"support.type.builtin\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"constant.language.undefined\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"constant.language.null\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"storage.modifier.package\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"storage.modifier.import\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"storage.type.java\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"string\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string punctuation.section.embedded source\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"attribute.value\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"punctuation.definition.string\",\n      \"foreground\": \"c98a7daa\"\n    },\n    {\n      \"token\": \"punctuation.support.type.property-name\",\n      \"foreground\": \"b8a965aa\"\n    },\n    {\n      \"token\": \"support\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"property\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"meta.property-name\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"meta.object-literal.key\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"entity.name.tag.yaml\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"attribute.name\",\n      \"foreground\": \"b8a965\"\n    },\n    {\n      \"token\": \"entity.other.attribute-name\",\n      \"foreground\": \"bd976a\"\n    },\n    {\n      \"token\": \"invalid.deprecated.entity.other.attribute-name.html\",\n      \"foreground\": \"bd976a\"\n    },\n    {\n      \"token\": \"variable\",\n      \"foreground\": \"bd976a\"\n    },\n    {\n      \"token\": \"identifier\",\n      \"foreground\": \"bd976a\"\n    },\n    {\n      \"token\": \"support.type.primitive\",\n      \"foreground\": \"5da9a7\"\n    },\n    {\n      \"token\": \"entity.name.type\",\n      \"foreground\": \"5da9a7\"\n    },\n    {\n      \"token\": \"namespace\",\n      \"foreground\": \"db889a\"\n    },\n    {\n      \"token\": \"keyword.operator\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"meta.var.expr.ts\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"invalid.broken\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"invalid.deprecated\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"invalid.illegal\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"invalid.unimplemented\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"carriage-return\",\n      \"foreground\": \"24292e\"\n    },\n    {\n      \"token\": \"message.error\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"string source\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"string variable\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"source.regexp\",\n      \"foreground\": \"c4704f\"\n    },\n    {\n      \"token\": \"string.regexp\",\n      \"foreground\": \"c4704f\"\n    },\n    {\n      \"token\": \"string.regexp.character-class\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string.regexp constant.character.escape\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string.regexp source.ruby.embedded\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string.regexp string.regexp.arbitrary-repitition\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string.regexp constant.character.escape\",\n      \"foreground\": \"e6cc77\"\n    },\n    {\n      \"token\": \"support.constant\",\n      \"foreground\": \"c99076\"\n    },\n    {\n      \"token\": \"constant.numeric\",\n      \"foreground\": \"4C9A91\"\n    },\n    {\n      \"token\": \"number\",\n      \"foreground\": \"4C9A91\"\n    },\n    {\n      \"token\": \"keyword.other.unit\",\n      \"foreground\": \"cb7676\"\n    },\n    {\n      \"token\": \"constant.language.boolean\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"constant.language\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"meta.module-reference\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"punctuation.definition.list.begin.markdown\",\n      \"foreground\": \"d4976c\"\n    },\n    {\n      \"token\": \"markup.heading\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"markup.heading entity.name\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"markup.quote\",\n      \"foreground\": \"5DA994\"\n    },\n    {\n      \"token\": \"markup.italic\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"markup.bold\",\n      \"foreground\": \"dbd7caee\"\n    },\n    {\n      \"token\": \"markup.raw\",\n      \"foreground\": \"4d9375\"\n    },\n    {\n      \"token\": \"markup.deleted\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"meta.diff.header.from-file\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"punctuation.definition.deleted\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"markup.inserted\",\n      \"foreground\": \"85e89d\"\n    },\n    {\n      \"token\": \"meta.diff.header.to-file\",\n      \"foreground\": \"85e89d\"\n    },\n    {\n      \"token\": \"punctuation.definition.inserted\",\n      \"foreground\": \"85e89d\"\n    },\n    {\n      \"token\": \"markup.changed\",\n      \"foreground\": \"ffab70\"\n    },\n    {\n      \"token\": \"punctuation.definition.changed\",\n      \"foreground\": \"ffab70\"\n    },\n    {\n      \"token\": \"markup.ignored\",\n      \"foreground\": \"2f363d\"\n    },\n    {\n      \"token\": \"markup.untracked\",\n      \"foreground\": \"2f363d\"\n    },\n    {\n      \"token\": \"meta.diff.range\",\n      \"foreground\": \"b392f0\"\n    },\n    {\n      \"token\": \"meta.diff.header\",\n      \"foreground\": \"79b8ff\"\n    },\n    {\n      \"token\": \"meta.separator\",\n      \"foreground\": \"79b8ff\"\n    },\n    {\n      \"token\": \"meta.output\",\n      \"foreground\": \"79b8ff\"\n    },\n    {\n      \"token\": \"brackethighlighter.tag\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.curly\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.round\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.square\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.angle\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.quote\",\n      \"foreground\": \"d1d5da\"\n    },\n    {\n      \"token\": \"brackethighlighter.unmatched\",\n      \"foreground\": \"fdaeb7\"\n    },\n    {\n      \"token\": \"constant.other.reference.link\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"string.other.link\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"punctuation.definition.string.begin.markdown\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"punctuation.definition.string.end.markdown\",\n      \"foreground\": \"c98a7d\"\n    },\n    {\n      \"token\": \"markup.underline.link.markdown\",\n      \"foreground\": \"dedcd590\"\n    },\n    {\n      \"token\": \"type.identifier\",\n      \"foreground\": \"6893BF\"\n    },\n    {\n      \"token\": \"entity.other.attribute-name.html.vue\",\n      \"foreground\": \"80a665\"\n    },\n    {\n      \"token\": \"invalid.illegal.unrecognized-tag.html\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/shiki/themes/vitesse-light.json",
    "content": "{\n  \"name\": \"vitesse-light\",\n  \"base\": \"vs\",\n  \"colors\": {\n    \"focusBorder\": \"#00000000\",\n    \"foreground\": \"#393a34\",\n    \"descriptionForeground\": \"#393a3490\",\n    \"errorForeground\": \"#ab5959\",\n    \"textLink.foreground\": \"#1c6b48\",\n    \"textLink.activeForeground\": \"#1c6b48\",\n    \"textBlockQuote.background\": \"#ffffff\",\n    \"textBlockQuote.border\": \"#f0f0f0\",\n    \"textCodeBlock.background\": \"#ffffff\",\n    \"textPreformat.foreground\": \"#586069\",\n    \"textSeparator.foreground\": \"#d1d5da\",\n    \"button.background\": \"#1c6b48\",\n    \"button.foreground\": \"#ffffff\",\n    \"button.hoverBackground\": \"#1c6b48\",\n    \"checkbox.background\": \"#f5f5f5\",\n    \"checkbox.border\": \"#d1d5da\",\n    \"dropdown.background\": \"#ffffff\",\n    \"dropdown.border\": \"#f0f0f0\",\n    \"dropdown.foreground\": \"#393a34\",\n    \"dropdown.listBackground\": \"#f5f5f5\",\n    \"input.background\": \"#f5f5f5\",\n    \"input.border\": \"#f0f0f0\",\n    \"input.foreground\": \"#393a34\",\n    \"input.placeholderForeground\": \"#393a3490\",\n    \"inputOption.activeBackground\": \"#393a3450\",\n    \"badge.foreground\": \"#ffffff\",\n    \"badge.background\": \"#393a3490\",\n    \"progressBar.background\": \"#1c6b48\",\n    \"titleBar.activeForeground\": \"#4e4f47\",\n    \"titleBar.activeBackground\": \"#ffffff\",\n    \"titleBar.inactiveForeground\": \"#6a737d\",\n    \"titleBar.inactiveBackground\": \"#ffffff\",\n    \"titleBar.border\": \"#f5f5f5\",\n    \"activityBar.foreground\": \"#393a34\",\n    \"activityBar.inactiveForeground\": \"#393a3450\",\n    \"activityBar.background\": \"#ffffff\",\n    \"activityBarBadge.foreground\": \"#ffffff\",\n    \"activityBarBadge.background\": \"#4e4f47\",\n    \"activityBar.activeBorder\": \"#1c6b48\",\n    \"activityBar.border\": \"#f0f0f0\",\n    \"sideBar.foreground\": \"#4e4f47\",\n    \"sideBar.background\": \"#ffffff\",\n    \"sideBar.border\": \"#f0f0f0\",\n    \"sideBarTitle.foreground\": \"#393a34\",\n    \"sideBarSectionHeader.foreground\": \"#393a34\",\n    \"sideBarSectionHeader.background\": \"#ffffff\",\n    \"sideBarSectionHeader.border\": \"#f0f0f0\",\n    \"list.hoverForeground\": \"#393a34\",\n    \"list.inactiveSelectionForeground\": \"#393a34\",\n    \"list.activeSelectionForeground\": \"#393a34\",\n    \"list.hoverBackground\": \"#f5f5f5\",\n    \"list.inactiveSelectionBackground\": \"#f5f5f5\",\n    \"list.activeSelectionBackground\": \"#f5f5f5\",\n    \"list.inactiveFocusBackground\": \"#ffffff\",\n    \"list.focusBackground\": \"#f5f5f5\",\n    \"tree.indentGuidesStroke\": \"#e1e4e8\",\n    \"notificationCenterHeader.foreground\": \"#6a737d\",\n    \"notificationCenterHeader.background\": \"#ffffff\",\n    \"notifications.foreground\": \"#393a34\",\n    \"notifications.background\": \"#ffffff\",\n    \"notifications.border\": \"#f0f0f0\",\n    \"notificationsErrorIcon.foreground\": \"#ab5959\",\n    \"notificationsWarningIcon.foreground\": \"#a65e2b\",\n    \"notificationsInfoIcon.foreground\": \"#296aa3\",\n    \"pickerGroup.border\": \"#e1e4e8\",\n    \"pickerGroup.foreground\": \"#393a34\",\n    \"quickInput.background\": \"#ffffff\",\n    \"quickInput.foreground\": \"#393a34\",\n    \"statusBar.foreground\": \"#4e4f47\",\n    \"statusBar.background\": \"#ffffff\",\n    \"statusBar.border\": \"#f0f0f0\",\n    \"statusBar.noFolderBackground\": \"#ffffff\",\n    \"statusBar.debuggingBackground\": \"#f5f5f5\",\n    \"statusBar.debuggingForeground\": \"#4e4f47\",\n    \"statusBarItem.prominentBackground\": \"#f5f5f5\",\n    \"editorGroupHeader.tabsBackground\": \"#ffffff\",\n    \"editorGroupHeader.tabsBorder\": \"#f0f0f0\",\n    \"editorGroup.border\": \"#f0f0f0\",\n    \"tab.activeForeground\": \"#393a34\",\n    \"tab.inactiveForeground\": \"#6a737d\",\n    \"tab.inactiveBackground\": \"#ffffff\",\n    \"tab.activeBackground\": \"#ffffff\",\n    \"tab.hoverBackground\": \"#f5f5f5\",\n    \"tab.unfocusedHoverBackground\": \"#ffffff\",\n    \"tab.border\": \"#f0f0f0\",\n    \"tab.unfocusedActiveBorderTop\": \"#f0f0f0\",\n    \"tab.activeBorder\": \"#f0f0f0\",\n    \"tab.unfocusedActiveBorder\": \"#f0f0f0\",\n    \"tab.activeBorderTop\": \"#393a3490\",\n    \"breadcrumb.foreground\": \"#6a737d\",\n    \"breadcrumb.focusForeground\": \"#393a34\",\n    \"breadcrumb.activeSelectionForeground\": \"#22222215\",\n    \"breadcrumbPicker.background\": \"#ffffff\",\n    \"editor.foreground\": \"#393a34\",\n    \"editor.background\": \"#ffffff\",\n    \"editorWidget.background\": \"#ffffff\",\n    \"editor.foldBackground\": \"#22222210\",\n    \"editor.lineHighlightBackground\": \"#f5f5f5\",\n    \"editorLineNumber.foreground\": \"#393a3450\",\n    \"editorLineNumber.activeForeground\": \"#4e4f47\",\n    \"editorIndentGuide.background\": \"#00000015\",\n    \"editorIndentGuide.activeBackground\": \"#00000030\",\n    \"editorWhitespace.foreground\": \"#00000015\",\n    \"editor.findMatchBackground\": \"#e6cc7744\",\n    \"editor.findMatchHighlightBackground\": \"#e6cc7766\",\n    \"editor.inactiveSelectionBackground\": \"#22222208\",\n    \"editor.selectionBackground\": \"#22222215\",\n    \"editor.selectionHighlightBackground\": \"#22222208\",\n    \"editor.wordHighlightBackground\": \"#1c6b4805\",\n    \"editor.wordHighlightStrongBackground\": \"#1c6b4810\",\n    \"editorBracketMatch.background\": \"#1c6b4820\",\n    \"diffEditor.insertedTextBackground\": \"#1c6b4815\",\n    \"diffEditor.removedTextBackground\": \"#ab595910\",\n    \"scrollbar.shadow\": \"#6a737d33\",\n    \"scrollbarSlider.background\": \"#393a3410\",\n    \"scrollbarSlider.hoverBackground\": \"#393a3450\",\n    \"scrollbarSlider.activeBackground\": \"#393a3450\",\n    \"editorOverviewRuler.border\": \"#fff\",\n    \"panel.background\": \"#ffffff\",\n    \"panel.border\": \"#f0f0f0\",\n    \"panelTitle.activeBorder\": \"#1c6b48\",\n    \"panelTitle.activeForeground\": \"#393a34\",\n    \"panelTitle.inactiveForeground\": \"#6a737d\",\n    \"panelInput.border\": \"#e1e4e8\",\n    \"terminal.foreground\": \"#393a34\",\n    \"terminal.selectionBackground\": \"#22222215\",\n    \"terminal.ansiBrightBlack\": \"#aaaaaa\",\n    \"terminal.ansiBrightBlue\": \"#296aa3\",\n    \"terminal.ansiBrightCyan\": \"#2993a3\",\n    \"terminal.ansiBrightGreen\": \"#1e754f\",\n    \"terminal.ansiBrightMagenta\": \"#a13865\",\n    \"terminal.ansiBrightRed\": \"#ab5959\",\n    \"terminal.ansiBrightWhite\": \"#dddddd\",\n    \"terminal.ansiBrightYellow\": \"#bda437\",\n    \"terminal.ansiBlack\": \"#121212\",\n    \"terminal.ansiBlue\": \"#296aa3\",\n    \"terminal.ansiCyan\": \"#2993a3\",\n    \"terminal.ansiGreen\": \"#1e754f\",\n    \"terminal.ansiMagenta\": \"#a13865\",\n    \"terminal.ansiRed\": \"#ab5959\",\n    \"terminal.ansiWhite\": \"#dbd7caee\",\n    \"terminal.ansiYellow\": \"#bda437\",\n    \"gitDecoration.addedResourceForeground\": \"#1e754f\",\n    \"gitDecoration.modifiedResourceForeground\": \"#296aa3\",\n    \"gitDecoration.deletedResourceForeground\": \"#ab5959\",\n    \"gitDecoration.untrackedResourceForeground\": \"#2993a3\",\n    \"gitDecoration.ignoredResourceForeground\": \"#393a3450\",\n    \"gitDecoration.conflictingResourceForeground\": \"#a65e2b\",\n    \"gitDecoration.submoduleResourceForeground\": \"#393a3490\",\n    \"editorGutter.modifiedBackground\": \"#296aa3\",\n    \"editorGutter.addedBackground\": \"#1e754f\",\n    \"editorGutter.deletedBackground\": \"#ab5959\",\n    \"editorBracketHighlight.foreground1\": \"#2993a3\",\n    \"editorBracketHighlight.foreground2\": \"#1e754f\",\n    \"editorBracketHighlight.foreground3\": \"#a65e2b\",\n    \"editorBracketHighlight.foreground4\": \"#a13865\",\n    \"editorBracketHighlight.foreground5\": \"#bda437\",\n    \"editorBracketHighlight.foreground6\": \"#296aa3\",\n    \"debugToolBar.background\": \"#ffffff\",\n    \"editor.stackFrameHighlightBackground\": \"#fffbdd\",\n    \"editor.focusedStackFrameHighlightBackground\": \"#fff5b1\",\n    \"peekViewEditor.background\": \"#ffffff\",\n    \"peekViewResult.background\": \"#ffffff\",\n    \"settings.headerForeground\": \"#393a34\",\n    \"settings.modifiedItemIndicator\": \"#1c6b48\",\n    \"welcomePage.buttonBackground\": \"#f6f8fa\",\n    \"welcomePage.buttonHoverBackground\": \"#e1e4e8\",\n    \"problemsErrorIcon.foreground\": \"#ab5959\",\n    \"problemsWarningIcon.foreground\": \"#a65e2b\",\n    \"problemsInfoIcon.foreground\": \"#296aa3\",\n    \"editorError.foreground\": \"#ab5959\",\n    \"editorWarning.foreground\": \"#a65e2b\",\n    \"editorInfo.foreground\": \"#296aa3\",\n    \"editorHint.foreground\": \"#1e754f\",\n    \"editorGutter.commentRangeForeground\": \"#393a3450\",\n    \"editorGutter.foldingControlForeground\": \"#393a3490\",\n    \"editorInlayHint.foreground\": \"#999999\",\n    \"editorInlayHint.background\": \"#00000000\"\n  },\n  \"semanticHighlighting\": true,\n  \"semanticTokenColors\": {\n    \"namespace\": \"#b05a78\",\n    \"property\": \"#998418\",\n    \"interface\": \"#2e8f82\",\n    \"type\": \"#2e8f82\",\n    \"class\": \"#5a6aa6\"\n  },\n  \"tokenColors\": [\n    {\n      \"scope\": [\"comment\", \"punctuation.definition.comment\", \"string.comment\"],\n      \"settings\": {\n        \"foreground\": \"#a0ada0\"\n      }\n    },\n    {\n      \"scope\": [\n        \"delimiter.bracket\",\n        \"delimiter\",\n        \"invalid.illegal.character-not-allowed-here.html\",\n        \"keyword.operator.assignment\",\n        \"keyword.operator.assignment\",\n        \"keyword.operator.rest\",\n        \"keyword.operator.spread\",\n        \"keyword.operator.type.annotation\",\n        \"meta.brace\",\n        \"meta.tag.block.any.html\",\n        \"meta.tag.inline.any.html\",\n        \"meta.tag.structure.input.void.html\",\n        \"meta.type.annotation\",\n        \"storage.type.function.arrow\",\n        \"keyword.operator.type\",\n        \"punctuation\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#999999\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant\",\n        \"entity.name.constant\",\n        \"variable.language\",\n        \"meta.definition.variable\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#a65e2b\"\n      }\n    },\n    {\n      \"scope\": [\"entity\", \"entity.name\"],\n      \"settings\": {\n        \"foreground\": \"#59873a\"\n      }\n    },\n    {\n      \"scope\": \"variable.parameter.function\",\n      \"settings\": {\n        \"foreground\": \"#393a34\"\n      }\n    },\n    {\n      \"scope\": [\"entity.name.tag\", \"tag.html\"],\n      \"settings\": {\n        \"foreground\": \"#1e754f\"\n      }\n    },\n    {\n      \"scope\": \"entity.name.function\",\n      \"settings\": {\n        \"foreground\": \"#59873a\"\n      }\n    },\n    {\n      \"scope\": [\"keyword\", \"storage.type.class.jsdoc\"],\n      \"settings\": {\n        \"foreground\": \"#1e754f\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage\",\n        \"storage.type\",\n        \"support.type.builtin\",\n        \"constant.language.undefined\",\n        \"constant.language.null\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#ab5959\"\n      }\n    },\n    {\n      \"scope\": [\n        \"storage.modifier.package\",\n        \"storage.modifier.import\",\n        \"storage.type.java\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#393a34\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string\",\n        \"string punctuation.section.embedded source\",\n        \"attribute.value\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b56959\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.definition.string\"],\n      \"settings\": {\n        \"foreground\": \"#b56959aa\"\n      }\n    },\n    {\n      \"scope\": [\"punctuation.support.type.property-name\"],\n      \"settings\": {\n        \"foreground\": \"#998418aa\"\n      }\n    },\n    {\n      \"scope\": \"support\",\n      \"settings\": {\n        \"foreground\": \"#998418\"\n      }\n    },\n    {\n      \"scope\": [\n        \"property\",\n        \"meta.property-name\",\n        \"meta.object-literal.key\",\n        \"entity.name.tag.yaml\",\n        \"attribute.name\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#998418\"\n      }\n    },\n    {\n      \"scope\": [\n        \"entity.other.attribute-name\",\n        \"invalid.deprecated.entity.other.attribute-name.html\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b07d48\"\n      }\n    },\n    {\n      \"scope\": [\"variable\", \"identifier\"],\n      \"settings\": {\n        \"foreground\": \"#b07d48\"\n      }\n    },\n    {\n      \"scope\": [\"support.type.primitive\", \"entity.name.type\"],\n      \"settings\": {\n        \"foreground\": \"#2e808f\"\n      }\n    },\n    {\n      \"scope\": \"namespace\",\n      \"settings\": {\n        \"foreground\": \"#b05a78\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.operator\", \"meta.var.expr.ts\"],\n      \"settings\": {\n        \"foreground\": \"#ab5959\"\n      }\n    },\n    {\n      \"scope\": \"invalid.broken\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": \"invalid.deprecated\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": \"invalid.illegal\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": \"invalid.unimplemented\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": \"carriage-return\",\n      \"settings\": {\n        \"fontStyle\": \"italic underline\",\n        \"background\": \"#d73a49\",\n        \"foreground\": \"#fafbfc\",\n        \"content\": \"^M\"\n      }\n    },\n    {\n      \"scope\": \"message.error\",\n      \"settings\": {\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": \"string source\",\n      \"settings\": {\n        \"foreground\": \"#393a34\"\n      }\n    },\n    {\n      \"scope\": \"string variable\",\n      \"settings\": {\n        \"foreground\": \"#b56959\"\n      }\n    },\n    {\n      \"scope\": [\"source.regexp\", \"string.regexp\"],\n      \"settings\": {\n        \"foreground\": \"#ab5e3f\"\n      }\n    },\n    {\n      \"scope\": [\n        \"string.regexp.character-class\",\n        \"string.regexp constant.character.escape\",\n        \"string.regexp source.ruby.embedded\",\n        \"string.regexp string.regexp.arbitrary-repitition\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b56959\"\n      }\n    },\n    {\n      \"scope\": \"string.regexp constant.character.escape\",\n      \"settings\": {\n        \"foreground\": \"#bda437\"\n      }\n    },\n    {\n      \"scope\": [\"support.constant\"],\n      \"settings\": {\n        \"foreground\": \"#a65e2b\"\n      }\n    },\n    {\n      \"scope\": [\"constant.numeric\", \"number\"],\n      \"settings\": {\n        \"foreground\": \"#2f798a\"\n      }\n    },\n    {\n      \"scope\": [\"keyword.other.unit\"],\n      \"settings\": {\n        \"foreground\": \"#ab5959\"\n      }\n    },\n    {\n      \"scope\": [\"constant.language.boolean\", \"constant.language\"],\n      \"settings\": {\n        \"foreground\": \"#1e754f\"\n      }\n    },\n    {\n      \"scope\": \"meta.module-reference\",\n      \"settings\": {\n        \"foreground\": \"#1c6b48\"\n      }\n    },\n    {\n      \"scope\": \"punctuation.definition.list.begin.markdown\",\n      \"settings\": {\n        \"foreground\": \"#a65e2b\"\n      }\n    },\n    {\n      \"scope\": [\"markup.heading\", \"markup.heading entity.name\"],\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#1c6b48\"\n      }\n    },\n    {\n      \"scope\": \"markup.quote\",\n      \"settings\": {\n        \"foreground\": \"#2e8f82\"\n      }\n    },\n    {\n      \"scope\": \"markup.italic\",\n      \"settings\": {\n        \"fontStyle\": \"italic\",\n        \"foreground\": \"#393a34\"\n      }\n    },\n    {\n      \"scope\": \"markup.bold\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#393a34\"\n      }\n    },\n    {\n      \"scope\": \"markup.raw\",\n      \"settings\": {\n        \"foreground\": \"#1c6b48\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.deleted\",\n        \"meta.diff.header.from-file\",\n        \"punctuation.definition.deleted\"\n      ],\n      \"settings\": {\n        \"background\": \"#ffeef0\",\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": [\n        \"markup.inserted\",\n        \"meta.diff.header.to-file\",\n        \"punctuation.definition.inserted\"\n      ],\n      \"settings\": {\n        \"background\": \"#f0fff4\",\n        \"foreground\": \"#22863a\"\n      }\n    },\n    {\n      \"scope\": [\"markup.changed\", \"punctuation.definition.changed\"],\n      \"settings\": {\n        \"background\": \"#ffebda\",\n        \"foreground\": \"#e36209\"\n      }\n    },\n    {\n      \"scope\": [\"markup.ignored\", \"markup.untracked\"],\n      \"settings\": {\n        \"foreground\": \"#f6f8fa\",\n        \"background\": \"#005cc5\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.range\",\n      \"settings\": {\n        \"foreground\": \"#6f42c1\",\n        \"fontStyle\": \"bold\"\n      }\n    },\n    {\n      \"scope\": \"meta.diff.header\",\n      \"settings\": {\n        \"foreground\": \"#005cc5\"\n      }\n    },\n    {\n      \"scope\": \"meta.separator\",\n      \"settings\": {\n        \"fontStyle\": \"bold\",\n        \"foreground\": \"#005cc5\"\n      }\n    },\n    {\n      \"scope\": \"meta.output\",\n      \"settings\": {\n        \"foreground\": \"#005cc5\"\n      }\n    },\n    {\n      \"scope\": [\n        \"brackethighlighter.tag\",\n        \"brackethighlighter.curly\",\n        \"brackethighlighter.round\",\n        \"brackethighlighter.square\",\n        \"brackethighlighter.angle\",\n        \"brackethighlighter.quote\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#586069\"\n      }\n    },\n    {\n      \"scope\": \"brackethighlighter.unmatched\",\n      \"settings\": {\n        \"foreground\": \"#b31d28\"\n      }\n    },\n    {\n      \"scope\": [\n        \"constant.other.reference.link\",\n        \"string.other.link\",\n        \"punctuation.definition.string.begin.markdown\",\n        \"punctuation.definition.string.end.markdown\"\n      ],\n      \"settings\": {\n        \"foreground\": \"#b56959\"\n      }\n    },\n    {\n      \"scope\": [\"markup.underline.link.markdown\"],\n      \"settings\": {\n        \"foreground\": \"#393a3490\",\n        \"fontStyle\": \"underline\"\n      }\n    },\n    {\n      \"scope\": [\"type.identifier\"],\n      \"settings\": {\n        \"foreground\": \"#5a6aa6\"\n      }\n    },\n    {\n      \"scope\": [\"entity.other.attribute-name.html.vue\"],\n      \"settings\": {\n        \"foreground\": \"#59873a\"\n      }\n    },\n    {\n      \"scope\": [\"invalid.illegal.unrecognized-tag.html\"],\n      \"settings\": {\n        \"fontStyle\": \"normal\"\n      }\n    }\n  ],\n  \"rules\": [\n    {\n      \"token\": \"comment\",\n      \"foreground\": \"a0ada0\"\n    },\n    {\n      \"token\": \"punctuation.definition.comment\",\n      \"foreground\": \"a0ada0\"\n    },\n    {\n      \"token\": \"string.comment\",\n      \"foreground\": \"a0ada0\"\n    },\n    {\n      \"token\": \"delimiter.bracket\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"delimiter\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"invalid.illegal.character-not-allowed-here.html\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.assignment\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.assignment\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.rest\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.spread\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.type.annotation\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"meta.brace\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"meta.tag.block.any.html\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"meta.tag.inline.any.html\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"meta.tag.structure.input.void.html\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"meta.type.annotation\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"storage.type.function.arrow\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"keyword.operator.type\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"punctuation\",\n      \"foreground\": \"999999\"\n    },\n    {\n      \"token\": \"constant\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"entity.name.constant\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"variable.language\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"meta.definition.variable\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"entity\",\n      \"foreground\": \"59873a\"\n    },\n    {\n      \"token\": \"entity.name\",\n      \"foreground\": \"59873a\"\n    },\n    {\n      \"token\": \"variable.parameter.function\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"entity.name.tag\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"tag.html\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"entity.name.function\",\n      \"foreground\": \"59873a\"\n    },\n    {\n      \"token\": \"keyword\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"storage.type.class.jsdoc\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"storage\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"storage.type\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"support.type.builtin\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"constant.language.undefined\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"constant.language.null\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"storage.modifier.package\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"storage.modifier.import\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"storage.type.java\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"string\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string punctuation.section.embedded source\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"attribute.value\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"punctuation.definition.string\",\n      \"foreground\": \"b56959aa\"\n    },\n    {\n      \"token\": \"punctuation.support.type.property-name\",\n      \"foreground\": \"998418aa\"\n    },\n    {\n      \"token\": \"support\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"property\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"meta.property-name\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"meta.object-literal.key\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"entity.name.tag.yaml\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"attribute.name\",\n      \"foreground\": \"998418\"\n    },\n    {\n      \"token\": \"entity.other.attribute-name\",\n      \"foreground\": \"b07d48\"\n    },\n    {\n      \"token\": \"invalid.deprecated.entity.other.attribute-name.html\",\n      \"foreground\": \"b07d48\"\n    },\n    {\n      \"token\": \"variable\",\n      \"foreground\": \"b07d48\"\n    },\n    {\n      \"token\": \"identifier\",\n      \"foreground\": \"b07d48\"\n    },\n    {\n      \"token\": \"support.type.primitive\",\n      \"foreground\": \"2e808f\"\n    },\n    {\n      \"token\": \"entity.name.type\",\n      \"foreground\": \"2e808f\"\n    },\n    {\n      \"token\": \"namespace\",\n      \"foreground\": \"b05a78\"\n    },\n    {\n      \"token\": \"keyword.operator\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"meta.var.expr.ts\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"invalid.broken\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"invalid.deprecated\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"invalid.illegal\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"invalid.unimplemented\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"carriage-return\",\n      \"foreground\": \"fafbfc\"\n    },\n    {\n      \"token\": \"message.error\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"string source\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"string variable\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"source.regexp\",\n      \"foreground\": \"ab5e3f\"\n    },\n    {\n      \"token\": \"string.regexp\",\n      \"foreground\": \"ab5e3f\"\n    },\n    {\n      \"token\": \"string.regexp.character-class\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string.regexp constant.character.escape\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string.regexp source.ruby.embedded\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string.regexp string.regexp.arbitrary-repitition\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string.regexp constant.character.escape\",\n      \"foreground\": \"bda437\"\n    },\n    {\n      \"token\": \"support.constant\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"constant.numeric\",\n      \"foreground\": \"2f798a\"\n    },\n    {\n      \"token\": \"number\",\n      \"foreground\": \"2f798a\"\n    },\n    {\n      \"token\": \"keyword.other.unit\",\n      \"foreground\": \"ab5959\"\n    },\n    {\n      \"token\": \"constant.language.boolean\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"constant.language\",\n      \"foreground\": \"1e754f\"\n    },\n    {\n      \"token\": \"meta.module-reference\",\n      \"foreground\": \"1c6b48\"\n    },\n    {\n      \"token\": \"punctuation.definition.list.begin.markdown\",\n      \"foreground\": \"a65e2b\"\n    },\n    {\n      \"token\": \"markup.heading\",\n      \"foreground\": \"1c6b48\"\n    },\n    {\n      \"token\": \"markup.heading entity.name\",\n      \"foreground\": \"1c6b48\"\n    },\n    {\n      \"token\": \"markup.quote\",\n      \"foreground\": \"2e8f82\"\n    },\n    {\n      \"token\": \"markup.italic\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"markup.bold\",\n      \"foreground\": \"393a34\"\n    },\n    {\n      \"token\": \"markup.raw\",\n      \"foreground\": \"1c6b48\"\n    },\n    {\n      \"token\": \"markup.deleted\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"meta.diff.header.from-file\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"punctuation.definition.deleted\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"markup.inserted\",\n      \"foreground\": \"22863a\"\n    },\n    {\n      \"token\": \"meta.diff.header.to-file\",\n      \"foreground\": \"22863a\"\n    },\n    {\n      \"token\": \"punctuation.definition.inserted\",\n      \"foreground\": \"22863a\"\n    },\n    {\n      \"token\": \"markup.changed\",\n      \"foreground\": \"e36209\"\n    },\n    {\n      \"token\": \"punctuation.definition.changed\",\n      \"foreground\": \"e36209\"\n    },\n    {\n      \"token\": \"markup.ignored\",\n      \"foreground\": \"f6f8fa\"\n    },\n    {\n      \"token\": \"markup.untracked\",\n      \"foreground\": \"f6f8fa\"\n    },\n    {\n      \"token\": \"meta.diff.range\",\n      \"foreground\": \"6f42c1\"\n    },\n    {\n      \"token\": \"meta.diff.header\",\n      \"foreground\": \"005cc5\"\n    },\n    {\n      \"token\": \"meta.separator\",\n      \"foreground\": \"005cc5\"\n    },\n    {\n      \"token\": \"meta.output\",\n      \"foreground\": \"005cc5\"\n    },\n    {\n      \"token\": \"brackethighlighter.tag\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.curly\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.round\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.square\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.angle\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.quote\",\n      \"foreground\": \"586069\"\n    },\n    {\n      \"token\": \"brackethighlighter.unmatched\",\n      \"foreground\": \"b31d28\"\n    },\n    {\n      \"token\": \"constant.other.reference.link\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"string.other.link\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"punctuation.definition.string.begin.markdown\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"punctuation.definition.string.end.markdown\",\n      \"foreground\": \"b56959\"\n    },\n    {\n      \"token\": \"markup.underline.link.markdown\",\n      \"foreground\": \"393a3490\"\n    },\n    {\n      \"token\": \"type.identifier\",\n      \"foreground\": \"5a6aa6\"\n    },\n    {\n      \"token\": \"entity.other.attribute-name.html.vue\",\n      \"foreground\": \"59873a\"\n    },\n    {\n      \"token\": \"invalid.illegal.unrecognized-tag.html\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/src/lib/stripe.ts",
    "content": "import type { Project } from \"@prisma/client\";\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { env } from \"env/client.mjs\";\nimport { PLANS, type PlanName } from \"server/common/plans\";\nimport { trpc } from \"utils/trpc\";\n\nexport const useAbbyStripe = () => {\n  const { mutateAsync: createCheckoutSession } =\n    trpc.project.createStripeCheckoutSession.useMutation();\n  const { mutateAsync: createBillingPortalUrl } =\n    trpc.project.createStripeBillingPortalUrl.useMutation();\n\n  const redirectToCheckout = (projectId: string, plan: PlanName) =>\n    Promise.all([\n      loadStripe(env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY),\n      createCheckoutSession({\n        plan,\n        projectId,\n      }),\n    ]).then(([stripe, sessionId]) => {\n      if (!stripe || !sessionId) return;\n\n      stripe.redirectToCheckout({\n        sessionId,\n      });\n    });\n\n  const redirectToBillingPortal = async (projectId: string) => {\n    const url = await createBillingPortalUrl({ projectId });\n    if (!url) return;\n    window.location.assign(url);\n  };\n  return { redirectToBillingPortal, redirectToCheckout };\n};\n\nconst MILLISECONDS_IN_A_DAY = 86_400_000;\n\nexport const BETA_PRICE_ID = \"BETA\";\n\nexport const isBetaPlan = (project: Project) =>\n  project.stripePriceId === BETA_PRICE_ID;\n/**\n * @returns the project's paid plan or null if the project is a free one\n *\n * @example\n * ```ts\n * const project = await prisma.project.findFirst(...)\n * const plan = getProjectPaidPlan(project)\n * ```\n */\nexport const getProjectPaidPlan = <T extends Project>(project: T | null) => {\n  // beta plans last for ever and have special rules\n  if (project !== null && isBetaPlan(project)) return BETA_PRICE_ID;\n\n  if (\n    !project ||\n    !project.stripePriceId ||\n    !project.currentPeriodEnd ||\n    // We give projects a grace period of 24 hours to pay their invoices\n    project.currentPeriodEnd.getTime() + MILLISECONDS_IN_A_DAY < Date.now()\n  ) {\n    return null;\n  }\n\n  const plan = Object.keys(PLANS).find(\n    (plan) => PLANS[plan as PlanName] === project.stripePriceId\n  );\n\n  return (plan as PlanName) ?? null;\n};\n"
  },
  {
    "path": "apps/web/src/lib/tracking.ts",
    "content": "import { useOpenPanel } from \"@openpanel/nextjs\";\nimport { usePlausible } from \"next-plausible\";\nimport { useCallback } from \"react\";\nimport type { EventOptionsTuple } from \"server/common/tracking\";\nimport type { PlausibleEvents } from \"types/plausible-events\";\n\nexport const useTracking = () => {\n  const trackPlausible = usePlausible<PlausibleEvents>();\n  const { track: trackOpenPanel } = useOpenPanel();\n\n  return useCallback(\n    <N extends keyof PlausibleEvents>(\n      eventName: N,\n      ...rest: PlausibleEvents[N] extends never\n        ? []\n        : EventOptionsTuple<PlausibleEvents[N]>\n    ) => {\n      trackPlausible(eventName, ...rest);\n      trackOpenPanel(eventName, ...rest);\n    },\n    [trackPlausible, trackOpenPanel]\n  );\n};\n"
  },
  {
    "path": "apps/web/src/lib/utils.ts",
    "content": "import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n"
  },
  {
    "path": "apps/web/src/middleware.ts",
    "content": "import { withAuth } from \"next-auth/middleware\";\nimport { type NextMiddleware, NextResponse } from \"next/server\";\n\nexport default withAuth(\n  // `withAuth` augments your `Request` with the user's token.\n  async function middleware(req) {\n    const projectId = req.nextUrl.searchParams.get(\"projectId\");\n    const pathName = req.nextUrl.pathname;\n\n    // redirect to /welcome if user has not completed onboarding\n    if (\n      pathName.startsWith(\"/projects\") &&\n      req.nextauth.token?.user &&\n      // required check since old sessions don't have this field\n      \"hasCompletedOnboarding\" in req.nextauth.token.user &&\n      req.nextauth.token.user.hasCompletedOnboarding === false\n    ) {\n      const newUrl = new URL(req.nextUrl);\n      newUrl.pathname = \"/welcome\";\n      return NextResponse.redirect(newUrl);\n    }\n\n    if (pathName === \"/projects\" && !projectId) {\n      const newUrl = new URL(req.nextUrl);\n      const tokenUser = req.nextauth.token?.user;\n\n      newUrl.pathname = `/projects/${\n        tokenUser?.lastOpenProjectId ?? tokenUser?.projectIds[0]\n      }/flags`;\n      return NextResponse.redirect(newUrl);\n    }\n  },\n  {\n    callbacks: {\n      authorized: ({ token, req }) => {\n        const pathName = req.nextUrl.pathname;\n\n        // onboarding needs authentification\n        if (pathName === \"/welcome\") return token !== null;\n\n        // basic auth check for /profile\n        if (pathName.startsWith(\"/profile\")) return token !== null;\n\n        if (!pathName.startsWith(\"/projects\")) return true;\n        const projectId = req.nextUrl.pathname.split(\"/\")[2];\n        if (!projectId) {\n          // If the path is /projects, we want to allow it.\n          // because we redirect afterwards\n          if (pathName === \"/projects\") return true;\n          return false;\n        }\n\n        return token?.user.projectIds.includes(projectId) ?? false;\n      },\n    },\n  }\n) as NextMiddleware;\n\nexport const config = {\n  matcher: [\n    \"/projects/:path*\",\n    \"/marketing\",\n    \"/profile\",\n    \"/profile/generate-token\",\n    \"/welcome\",\n  ],\n};\n"
  },
  {
    "path": "apps/web/src/pages/_app.tsx",
    "content": "import type { Session } from \"next-auth\";\nimport { SessionProvider } from \"next-auth/react\";\nimport { DefaultSeo } from \"next-seo\";\nimport { ThemeProvider } from \"next-themes\";\nimport type { AppProps, AppType } from \"next/app\";\nimport { Toaster } from \"react-hot-toast\";\nimport { trpc } from \"../utils/trpc\";\n\nimport { OpenPanelComponent } from \"@openpanel/nextjs\";\nimport { TooltipProvider } from \"components/Tooltip\";\nimport { env } from \"env/client.mjs\";\nimport { AbbyDevtools, AbbyProvider, withAbby } from \"lib/abby\";\nimport type { NextPage } from \"next\";\nimport { useRouter } from \"next/router\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport \"@fontsource/martian-mono/600.css\";\n\nimport \"../styles/shadcn.css\";\nimport \"@code-hike/mdx/dist/index.css\";\nimport PlausibleProvider from \"next-plausible\";\n\nexport type NextPageWithLayout<P = unknown, IP = P> = NextPage<P, IP> & {\n  getLayout?: (page: ReactElement) => ReactNode;\n};\n\ntype AppPropsWithLayout = AppProps & {\n  Component: NextPageWithLayout;\n};\n\nconst seoDescription =\n  \"Discover the benefits of using Abby, the open-source feature management and A/B testing SaaS. Increase transparency, collaboration, and trust. Try it now!\";\n\nconst MyApp: AppType<{ session: Session | null }> = ({\n  Component,\n  pageProps: { session, __ABBY_PROJECT_DATA__, ...pageProps },\n}: AppPropsWithLayout) => {\n  const router = useRouter();\n\n  const currentPageUrl = `https://www.tryabby.com${router.asPath}`;\n  // Use the layout defined at the page level, if available\n  const getLayout = Component.getLayout ?? ((page) => page);\n  return (\n    <>\n      {env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID && (\n        <OpenPanelComponent\n          clientId={env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID}\n          trackScreenViews={true}\n        />\n      )}\n      <AbbyProvider initialData={__ABBY_PROJECT_DATA__}>\n        {/* we render different devtools on the landing page */}\n        {router.asPath !== \"/\" && <AbbyDevtools />}\n        <ThemeProvider attribute=\"class\" defaultTheme=\"dark\">\n          <TooltipProvider>\n            <SessionProvider session={session}>\n              <PlausibleProvider\n                domain={env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN ?? \"\"}\n              >\n                <main className={\"font-sans\"}>\n                  <DefaultSeo\n                    defaultTitle=\"Abby - Open Source A/B Testing & Feature Flags\"\n                    titleTemplate=\"%s\"\n                    description={seoDescription}\n                    canonical={currentPageUrl}\n                    openGraph={{\n                      url: currentPageUrl,\n                      title: \"Abby\",\n                      type: \"website\",\n                      description: seoDescription,\n                      images: [\n                        {\n                          url: `${\n                            process.env.VERCEL_URL\n                              ? `https://${process.env.VERCEL_URL}`\n                              : \"https://www.tryabby.com\"\n                          }/og.png`,\n                          width: 1200,\n                          height: 630,\n                          alt: \"Abby\",\n                          type: \"image/png\",\n                        },\n                      ],\n                      siteName: \"Abby\",\n                    }}\n                  />\n                  <Toaster />\n                  {getLayout(<Component {...pageProps} />)}\n                </main>\n              </PlausibleProvider>\n            </SessionProvider>\n          </TooltipProvider>\n        </ThemeProvider>\n      </AbbyProvider>\n    </>\n  );\n};\n\nexport default trpc.withTRPC(withAbby(MyApp));\n"
  },
  {
    "path": "apps/web/src/pages/_document.tsx",
    "content": "import { Head, Html, Main, NextScript } from \"next/document\";\n\nexport default function Document() {\n  return (\n    <Html>\n      <Head>\n        <link\n          rel=\"preload\"\n          href=\"/Mona-Sans.woff2\"\n          as=\"font\"\n          type=\"font/woff2\"\n          crossOrigin=\"anonymous\"\n        />\n        <link rel=\"icon\" href=\"/favicon.png\" />\n      </Head>\n      <body>\n        <Main />\n        <NextScript />\n      </body>\n    </Html>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/pages/_error.jsx",
    "content": "import * as Sentry from \"@sentry/nextjs\";\n// biome-ignore lint/suspicious/noShadowRestrictedNames: <explanation>\nimport Error from \"next/error\";\n\nconst CustomErrorComponent = (props) => {\n  return <Error statusCode={props.statusCode} />;\n};\n\nCustomErrorComponent.getInitialProps = async (contextData) => {\n  // In case this is running in a serverless function, await this in order to give Sentry\n  // time to send the error before the lambda exits\n  await Sentry.captureUnderscoreErrorException(contextData);\n\n  // This will contain the status code of the response\n  return Error.getInitialProps(contextData);\n};\n\nexport default CustomErrorComponent;\n"
  },
  {
    "path": "apps/web/src/pages/api/[[...route]].ts",
    "content": "import { handle } from \"@hono/node-server/vercel\";\nimport { app } from \"api\";\n\nexport default handle(app);\n\nexport const config = {\n  api: {\n    bodyParser: false,\n  },\n};\n"
  },
  {
    "path": "apps/web/src/pages/api/auth/[...nextauth].ts",
    "content": "import { PrismaAdapter } from \"@next-auth/prisma-adapter\";\nimport NextAuth, { type NextAuthOptions } from \"next-auth\";\nimport EmailProvider from \"next-auth/providers/email\";\nimport GithubProvider from \"next-auth/providers/github\";\nimport GoogleProvider from \"next-auth/providers/google\";\n\nimport { trackSignup } from \"lib/logsnag\";\nimport { env } from \"../../../env/server.mjs\";\nimport { prisma } from \"../../../server/db/client\";\nimport { ProjectService } from \"../../../server/services/ProjectService\";\n\nimport type { NextApiRequest, NextApiResponse } from \"next\";\n\nexport const authOptions: NextAuthOptions = {\n  pages: {\n    signIn: \"/login\",\n    newUser: \"/welcome\",\n  },\n  session: {\n    strategy: \"jwt\",\n  },\n  callbacks: {\n    // Include user.id on session\n    session({ session, token }) {\n      if (token.user) {\n        session.user = {\n          ...session.user,\n          id: token.user.id,\n          image: token.user.image,\n          projectIds: token.user.projectIds,\n          hasCompletedOnboarding: token.user.hasCompletedOnboarding,\n          lastOpenProjectId: session.user?.lastOpenProjectId\n            ? session.user?.lastOpenProjectId\n            : token.user.projectIds[0],\n        };\n      }\n\n      return session;\n    },\n    async jwt({ token, user, trigger, session }) {\n      if (trigger === \"update\" && session) {\n        if (\"lastOpenProjectId\" in session) {\n          token.user.lastOpenProjectId = session.lastOpenProjectId;\n        }\n        if (\"projectIds\" in session) {\n          token.user.projectIds = session.projectIds;\n        }\n        if (\"hasCompletedOnboarding\" in session) {\n          token.user.hasCompletedOnboarding = session.hasCompletedOnboarding;\n        }\n        if (\"name\" in session) {\n          token.name = session.name;\n        }\n      }\n      if (user) {\n        const dbUser = await prisma.user.findUnique({\n          where: { id: user.id },\n          include: {\n            projects: {\n              select: { projectId: true },\n            },\n          },\n        });\n\n        token.user = {\n          ...(token.user ?? {}),\n          id: user.id,\n          image:\n            user.image ??\n            `https://avatars.dicebear.com/api/initials/${user?.email}.svg`,\n          hasCompletedOnboarding: dbUser?.hasCompletedOnboarding ?? false,\n          projectIds: (dbUser?.projects ?? []).map(\n            (project) => project.projectId\n          ),\n        };\n      }\n\n      return token;\n    },\n  },\n  events: {\n    async createUser({ user }) {\n      await ProjectService.createProject({\n        userId: user.id,\n        projectName: \"My Project\",\n      });\n      await trackSignup();\n    },\n  },\n  // Configure one or more authentication providers\n  adapter: PrismaAdapter(prisma),\n  providers: [\n    GithubProvider({\n      clientId: env.GITHUB_ID,\n      clientSecret: env.GITHUB_SECRET,\n    }),\n    EmailProvider({\n      from: `Abby <${env.ABBY_FROM_EMAIL}>`,\n      server: env.EMAIL_SERVER,\n    }),\n    // conditionally add Google provider if client ID and secret are set\n    ...(env.GOOGLE_CLIENT_ID && env.GOOGLE_CLIENT_SECRET\n      ? [\n          GoogleProvider({\n            clientId: env.GOOGLE_CLIENT_ID,\n            clientSecret: env.GOOGLE_CLIENT_SECRET,\n          }),\n        ]\n      : []),\n    // ...add more providers here\n  ],\n};\n\nexport default (req: NextApiRequest, res: NextApiResponse) => {\n  if (\n    req.url &&\n    new URL(req.url, \"https://tryabby.com\").pathname ===\n      \"/api/auth/callback/email\" &&\n    req.method !== \"GET\"\n  ) {\n    console.log(\"Suspicous request to /api/auth/callback/email\", req.method);\n    return res.status(200).end();\n  }\n  return NextAuth(authOptions)(req, res);\n};\n"
  },
  {
    "path": "apps/web/src/pages/api/checkout/index.ts",
    "content": "import { type Stripe, loadStripe } from \"@stripe/stripe-js\";\n\nlet stripePromise: Promise<Stripe | null> | null = null;\n\nconst getStripe = () => {\n  if (!stripePromise) {\n    if (!process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY) return;\n    stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY);\n  }\n  return stripePromise as Promise<Stripe>;\n};\n\nexport async function checkout({\n  lineItems,\n}: {\n  lineItems: { price: string; quantity: number }[];\n}) {\n  const stripe = await getStripe();\n  if (!stripe) return;\n  await stripe.redirectToCheckout({\n    mode: \"payment\",\n    lineItems,\n    successUrl: `${window.location.origin}?session_id={CHECKOUT_SESSION_ID}`,\n    cancelUrl: window.location.origin,\n  });\n}\n"
  },
  {
    "path": "apps/web/src/pages/api/invalidate-limits.ts",
    "content": "import dayjs from \"dayjs\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport { PLANS } from \"server/common/plans\";\nimport { prisma } from \"server/db/client\";\nimport { RequestCache } from \"server/services/RequestCache\";\nimport { z } from \"zod\";\n\nconst incomingQuerySchema = z.object({\n  secretKey: z.literal(\"yfMWV3TC0xyLvEKoHjslTp8GeKFEFRDtfVckg3Y2LHA=\"),\n});\n\nexport default async function invalidateProjectLimitsHandler(\n  req: NextApiRequest,\n  res: NextApiResponse\n) {\n  const { success } = await incomingQuerySchema.spa(req.query);\n\n  if (!success) {\n    // fail silently\n    console.warn(\"Invalid request to invalidate project limits\");\n    return res.status(200);\n  }\n\n  const nonStripeProjectsToUpdate = await prisma.project.findMany({\n    where: {\n      OR: [\n        { stripePriceId: { equals: null } },\n        { stripePriceId: { equals: PLANS.BETA } },\n        { stripePriceId: { equals: PLANS.STARTUP_LIFETIME } },\n      ],\n      currentPeriodEnd: {\n        lte: new Date(),\n      },\n    },\n  });\n\n  if (nonStripeProjectsToUpdate.length === 0) {\n    console.info(\"No projects to update\");\n    return res.end();\n  }\n\n  console.info(\n    `Updating plan for ${nonStripeProjectsToUpdate.length} projects`\n  );\n\n  await prisma.project.updateMany({\n    where: {\n      id: {\n        in: nonStripeProjectsToUpdate.map((p) => p.id),\n      },\n    },\n    data: {\n      currentPeriodEnd: dayjs().add(30, \"days\").toISOString(),\n    },\n  });\n\n  await RequestCache.reset(nonStripeProjectsToUpdate.map((p) => p.id));\n\n  res.end();\n}\n"
  },
  {
    "path": "apps/web/src/pages/api/stripe.ts",
    "content": "import dayjs from \"dayjs\";\nimport { env as serverEnv } from \"env/server.mjs\";\nimport { buffer } from \"micro\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport { stripe } from \"server/common/stripe\";\nimport { prisma } from \"server/db/client\";\nimport { RequestCache } from \"server/services/RequestCache\";\nimport type Stripe from \"stripe\";\n\nconst secondsToMsDate = (seconds: number) => new Date(seconds * 1000);\n\n// Replace this endpoint secret with your endpoint's unique secret\n// If you are testing with the CLI, find the secret by running 'stripe listen'\n// If you are using an endpoint defined with the API or dashboard, look in your webhook settings\n// at https://dashboard.stripe.com/webhooks\nconst endpointSecret = serverEnv.STRIPE_WEBHOOK_SECRET;\n\ninterface StripeSession {\n  id: string;\n  customer: string;\n  current_period_end: number;\n  metadata: {\n    projectId: string;\n  };\n  subscription: string;\n  items: {\n    data: {\n      price: {\n        id: string;\n      };\n    }[];\n  };\n}\n\nexport default async function handleStripeWebhook(\n  req: NextApiRequest,\n  res: NextApiResponse\n) {\n  const sig = req.headers[\"stripe-signature\"];\n\n  if (!sig) {\n    return res.status(400).send(\"Webhook Error: Missing signature\");\n  }\n\n  let event: Stripe.Event;\n\n  try {\n    event = stripe.webhooks.constructEvent(\n      await buffer(req),\n      sig,\n      endpointSecret\n    );\n  } catch (err) {\n    console.error(err);\n    // On error, log and return the error message\n    console.log(\n      `❌ Error message: ${err instanceof Error ? err.message : err}`\n    );\n    return res\n      .status(400)\n      .send(`Webhook Error: ${err instanceof Error ? err.message : err}`);\n  }\n\n  const session = event.data?.object as StripeSession;\n\n  // Handle the event\n  switch (event.type) {\n    case \"checkout.session.completed\": {\n      const subscription = await stripe.subscriptions.retrieve(\n        session.subscription\n      );\n\n      await RequestCache.reset(session.metadata.projectId);\n\n      await prisma.project.update({\n        where: {\n          id: session.metadata.projectId,\n        },\n        data: {\n          currentPeriodEnd: secondsToMsDate(subscription.current_period_end),\n          stripeSubscriptionId: subscription.id,\n          stripeCustomerId: session.customer,\n          stripePriceId: subscription.items.data[0]?.price.id,\n        },\n      });\n      break;\n    }\n    case \"customer.subscription.deleted\": {\n      await prisma.project.update({\n        where: {\n          stripeSubscriptionId: session.id,\n        },\n        data: {\n          currentPeriodEnd: dayjs().add(30, \"days\").toISOString(),\n          stripePriceId: null,\n        },\n      });\n      break;\n    }\n    default: {\n      // Unexpected event type\n      console.log(`Unhandled event type ${event.type}.`);\n    }\n  }\n\n  // Return a 200 response to acknowledge receipt of the event\n  res.end();\n}\n\nexport const config = {\n  api: {\n    bodyParser: false,\n  },\n};\n"
  },
  {
    "path": "apps/web/src/pages/api/trpc/[trpc].ts",
    "content": "import { createNextApiHandler } from \"@trpc/server/adapters/next\";\n\nimport { env } from \"../../../env/server.mjs\";\nimport { createContext } from \"../../../server/trpc/context\";\nimport { appRouter } from \"../../../server/trpc/router/_app\";\n\n// export API handler\nexport default createNextApiHandler({\n  router: appRouter,\n  batching: { enabled: false },\n  createContext,\n  onError:\n    env.NODE_ENV === \"development\"\n      ? ({ path, error }) => {\n          console.error(`❌ tRPC failed on ${path}: ${error}`);\n        }\n      : undefined,\n});\n"
  },
  {
    "path": "apps/web/src/pages/checkout/index.tsx",
    "content": "import type { NextPage } from \"next\";\nimport { checkout } from \"pages/api/checkout\";\n\nconst Projects: NextPage = () => {\n  return (\n    <>\n      <button\n        type=\"button\"\n        onClick={() => {\n          checkout({\n            lineItems: [\n              {\n                price: \"price_1MCMSULANJ3E1Ww3bNfa8hQj\",\n                quantity: 1,\n              },\n            ],\n          });\n        }}\n      >\n        BUY!\n      </button>\n    </>\n  );\n};\n\nexport default Projects;\n"
  },
  {
    "path": "apps/web/src/pages/contact.tsx",
    "content": "import clsx from \"clsx\";\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport { Label } from \"components/ui/label\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\nimport { MarketingLayout } from \"../components/MarketingLayout\";\n\nexport default function ContactPage() {\n  const { register, handleSubmit, formState } = useForm<{\n    mailadress: string;\n    message: string;\n    name: string;\n    surname: string;\n  }>();\n\n  const sendDataMutation = trpc.misc.contactPageEmail.useMutation();\n  const sendData = async (values: {\n    mailadress: string;\n    message: string;\n    name: string;\n    surname: string;\n  }) => {\n    await sendDataMutation.mutateAsync(values);\n  };\n  const onSubmit = handleSubmit(async (values) => {\n    try {\n      const { name, mailadress, surname, message } = values;\n      await sendData({ name, mailadress, surname, message });\n      toast.success(\"Send!\");\n    } catch (_error) {\n      toast.error(\"Please try again!\");\n    }\n  });\n  const _inputFieldStyle =\n    \"text border-2 border-width border-solid rounded w-full pl-2 mr-5 py-1 bg-inherit text-sm\";\n\n  return (\n    <>\n      <MarketingLayout>\n        <main className=\" mx-auto flex h-full w-full min-w-min flex-col items-center justify-center bg-ab_primary-background pb-20 text-ab_primary-foreground sm:mt-5 sm:h-4/5\">\n          <div className=\"mb-10  flex w-full flex-col  md:my-auto md:w-8/12\">\n            <div className=\"mx-auto mb-10 flex self-center\">\n              <h2 className=\"mark self-center font-bold sm:text-xl md:text-4xl \">\n                Contact us\n              </h2>\n              <svg\n                className=\"h-14 w-16 sm:h-32 sm:w-32\"\n                viewBox=\"0 0 120 90\"\n                fill=\"none\"\n              >\n                <title>Envelope</title>\n                <path\n                  d=\"M59.2441 60.5857L59.6913 60.8093L60.1385 60.5857L118.383 31.4637V88.5369H1V31.4637L59.2441 60.5857ZM59.6913 43.6504L1 14.3048V1H118.383V14.3048L59.6913 43.6504Z\"\n                  stroke=\"#F9A8D4\"\n                  strokeWidth=\"2\"\n                />\n              </svg>\n            </div>\n            <div className=\"mx-auto max-w-xs text-center\">\n              Drop your email and we&apos;ll get back to you soon.\n            </div>\n          </div>\n          <form\n            className=\"mx-auto flex w-full max-w-sm flex-col flex-wrap items-start md:w-8/12\"\n            onSubmit={onSubmit}\n          >\n            <div className=\"mb-4 flex w-full flex-grow flex-col \">\n              <Label className=\"mb-1 \">First Name</Label>\n              <Input\n                {...register(\"name\", {\n                  required: \"Please enter your first name\",\n                })}\n                className={clsx(formState.errors.name && \"border-red-500\")}\n                placeholder=\"First Name\"\n              />\n              {formState.errors.name && (\n                <p className=\"mb-3 text-center text-xs text-red-500\">\n                  {formState.errors.name.message}\n                </p>\n              )}\n            </div>\n            <div className=\"mb-4 flex w-full flex-grow flex-col\">\n              <Label className=\"mb-1\">Last Name</Label>\n              <Input\n                {...register(\"surname\", {\n                  required: \"Please enter your last name\",\n                })}\n                className={clsx(formState.errors.surname && \"border-red-500\")}\n                placeholder=\"Last Name\"\n              />\n              {formState.errors.surname && (\n                <p className=\"mb-3 text-center text-xs text-red-500\">\n                  {formState.errors.surname.message}\n                </p>\n              )}\n            </div>\n            <div className=\" mb-4 flex w-full flex-grow flex-col\">\n              <Label className=\"mb-1\" htmlFor=\"mail adress\">\n                Email\n              </Label>\n              <Input\n                {...register(\"mailadress\", {\n                  required: \"Please enter an email\",\n                })}\n                className={clsx(\n                  formState.errors.mailadress && \"border-red-500\"\n                )}\n                autoComplete=\"email\"\n                placeholder=\"your@mailadress.com\"\n              />\n              {formState.errors.mailadress && (\n                <p className=\"mb-3 text-center text-xs text-red-500\">\n                  {formState.errors.mailadress.message}\n                </p>\n              )}\n            </div>\n            <div className=\"mb-4 flex w-full flex-grow flex-col\">\n              <Label className=\"mb-1\" htmlFor=\"your message\">\n                Your message\n              </Label>\n              <textarea\n                {...register(\"message\", {\n                  required: \"Please enter a message\",\n                })}\n                rows={5}\n                className={clsx(\n                  \"min-h-max w-full rounded border-solid border-muted bg-inherit\",\n                  formState.errors.message && \"border-red-500\"\n                )}\n                placeholder=\"Your message text here\"\n              />\n              {formState.errors.message && (\n                <p className=\"mb-3 text-center text-xs text-red-500\">\n                  {formState.errors.message.message}\n                </p>\n              )}\n            </div>\n            <Button className=\"mb-4 mt-5 w-24 self-center\" type=\"submit\">\n              Submit\n            </Button>\n          </form>\n          <span className=\"max-auto inline max-w-sm text-xs text-ab_primary-foreground\">\n            By submitting this form you agree to our{\" \"}\n            <a href=\"/terms\" className=\"text-pink-300\">\n              Terms of use\n            </a>{\" \"}\n            and{\" \"}\n            <a href=\"/privacy\" className=\"text-pink-300\">\n              Privacy Policy\n            </a>\n          </span>\n        </main>\n      </MarketingLayout>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/pages/devtools.tsx",
    "content": "import { HttpService } from \"@tryabby/core\";\nimport abbyDevtools from \"@tryabby/devtools\";\nimport { createAbby } from \"@tryabby/next\";\nimport { DevtoolsArrow } from \"components/DevtoolsArrow\";\nimport { MarketingLayout } from \"components/MarketingLayout\";\nimport { SignupButton } from \"components/SignupButton\";\nimport { cn } from \"lib/utils\";\nimport type { InferGetStaticPropsType } from \"next\";\nimport type { NextPageWithLayout } from \"./_app\";\n\nconst { useAbby, AbbyProvider, useFeatureFlag, withDevtools, __abby__ } =\n  createAbby({\n    projectId: \"clha6feng0002l709segjhb2d\",\n    currentEnvironment: process.env.NODE_ENV,\n    environments: [\"development\", \"production\"],\n    tests: {\n      MarketingButton: {\n        variants: [\"Dark\", \"Funky\", \"Light\"],\n      },\n    },\n    flags: [\"ToggleMeIfYoureExcited\", \"showEasterEgg\", \"showHeading\"],\n    cookies: { disableByDefault: true, expiresInDays: 30 },\n  });\n\nexport const AbbyProdDevtools = withDevtools(abbyDevtools, {\n  dangerouslyForceShow: true,\n});\n\nconst DevtoolsPage = () => {\n  const showEasterEgg = useFeatureFlag(\"showEasterEgg\");\n  const showHeading = useFeatureFlag(\"showHeading\");\n  const isExcited = useFeatureFlag(\"ToggleMeIfYoureExcited\");\n  const { variant } = useAbby(\"MarketingButton\");\n\n  return (\n    <>\n      <section className=\"container relative px-6 font-mono lg:px-16\">\n        <div className=\"flex flex-col items-center\">\n          <div className=\"flex min-h-screen flex-col py-12 lg:py-24\">\n            <h1 className=\"mb-8 text-center text-4xl font-extrabold lg:text-5xl\">\n              <span className=\"mark\">Quit</span> the console.(&quot;Flag is\n              &quot; + isOn)\n            </h1>\n            <div className=\"space-y-4 text-center text-lg font-medium lg:text-2xl\">\n              <h2>\n                Debugging is already hard, Debugging a Service is even harder\n                😮‍💨\n              </h2>\n              <h2 className=\"font-semibold\">\n                Abby is here to help you with that\n              </h2>\n            </div>\n            <video\n              className=\"mx-auto mt-24 w-full max-w-3xl rounded-md shadow-xl shadow-gray-100/10 xl:max-w-5xl\"\n              autoPlay\n              loop\n              muted\n              playsInline\n              preload=\"metadata\"\n            >\n              <source src=\"/videos/devtools.mp4\" type=\"video/mp4\" />\n            </video>\n            <span className=\"mt-12 text-center text-[10px] text-zinc-400 lg:text-xs\">\n              Psst: If you&apos;re already too excited, just look at the bottom\n              right{\" \"}\n              {isExcited && (\n                <>\n                  <br />\n                  <span className=\"bg-gradient-to-t from-purple-400 to-pink-500 bg-clip-text font-bold text-transparent\">\n                    I knew it ! (you can see the other stuff at the bottom of\n                    the page. Scroll down)\n                  </span>\n                </>\n              )}\n            </span>\n          </div>\n          <div className=\"relative h-full w-screen bg-zinc-800 py-24 text-center\">\n            <div className=\"mb-24\">\n              <h2 className=\"text-2xl font-bold lg:text-4xl\">\n                Your Developers:\n              </h2>\n              <span className=\"-mt-2 text-[10px] text-zinc-400 lg:text-xs\">\n                (results may differ)\n              </span>\n            </div>\n            <div className=\"grid grid-cols-1 items-center gap-y-12 lg:grid-cols-[1fr,auto,1fr]\">\n              <div className=\"flex flex-col items-center space-y-3\">\n                <h3 className=\"text-2xl font-bold\">Before Abby Devtools</h3>\n                <img\n                  loading=\"lazy\"\n                  height={200}\n                  width={340}\n                  src=\"https://media0.giphy.com/media/9o9dh1JRGThC1qxGTJ/giphy.gif\"\n                  alt=\"I hate my job office rage\"\n                />\n              </div>\n              <h3 className=\"bg-gradient-to-r from-yellow-400 to-orange-600 bg-clip-text text-3xl font-extrabold text-transparent lg:text-5xl\">\n                VS.\n              </h3>\n              <div className=\"flex flex-col items-center space-y-3\">\n                <h3 className=\"text-2xl font-bold text-pink-500\">\n                  After Abby Devtools\n                </h3>\n                <img\n                  loading=\"lazy\"\n                  height={200}\n                  width={340}\n                  src=\"https://media0.giphy.com/media/8xgqLTTgWqHWU/giphy.gif\"\n                  alt=\"Thumbs Brent\"\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <section className=\"my-12\">\n          <h3 className=\"mb-12 text-2xl font-semibold leading-loose lg:leading-normal\">\n            And the best thing: You&apos;re just one{\" \"}\n            <code className=\"block rounded-md bg-zinc-700 px-2 py-1 text-lg lg:inline-block lg:text-2xl\">\n              <span className=\"text-blue-300\">npm</span> i @tryabby/devtools\n            </code>{\" \"}\n            away\n          </h3>\n          <h4 className=\"text-lg\">\n            But let&apos; be honest, you just don&apos;t add something to your\n            application, right? No worries\n          </h4>\n          <button\n            type=\"button\"\n            className={cn(\n              \"mb-3 mt-12 rounded-lg px-5 py-2.5 font-medium focus:ring-4\",\n              variant === \"Light\" &&\n                \"bg-blue-700 text-white hover:bg-blue-800 focus:outline-none focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800\",\n              variant === \"Dark\" &&\n                \"bg-gray-800 text-white hover:bg-gray-900 focus:outline-none focus:ring-gray-300 dark:border-gray-700 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700\",\n              variant === \"Funky\" &&\n                \"bg-gradient-to-r from-purple-500 via-purple-600 to-purple-700  text-white shadow-lg shadow-purple-500/50 hover:bg-gradient-to-br focus:outline-none focus:ring-purple-300 dark:shadow-lg dark:shadow-purple-800/80 dark:focus:ring-purple-800\"\n            )}\n            onClick={() => {\n              window.postMessage(\"abby:open-devtools\");\n            }}\n          >\n            Just click here\n          </button>\n          <div className=\"flex flex-col items-center space-y-6\">\n            {showHeading && (\n              <h1 className=\"h-7 text-xl\">You just toggled me!</h1>\n            )}\n            {isExcited && (\n              <p className=\"bg-gradient-to-t from-purple-400 to-pink-500 bg-clip-text font-bold text-transparent\">\n                and it appears like you actually it\n              </p>\n            )}\n            {showEasterEgg && (\n              <div>\n                <img\n                  loading=\"lazy\"\n                  height={200}\n                  width={340}\n                  alt=\"Rick Astley - Never Gonna Give You Up\"\n                  src=\"https://media0.giphy.com/media/Ju7l5y9osyymQ/giphy.gif?cid=ecf05e47ff0smpv9wsk1e2f2tyurfjunbdz18ff167x2k9ib&ep=v1_gifs_related&rid=giphy.gif&ct=g\"\n                />\n                <p>You just got rickrolled</p>\n              </div>\n            )}\n          </div>\n        </section>\n\n        <div className=\"flex flex-col items-center\">\n          <div className=\"relative h-full w-screen bg-zinc-800 py-24 text-center\">\n            <h2 className=\"mb-6 text-2xl font-bold lg:text-4xl\">\n              Ready to dive in?\n            </h2>\n            <p className=\"text-base lg:text-lg\">\n              Sign up for Abby for free and start to enjoy a Feature Flag & A/B\n              Testing solution that was made for developers\n            </p>\n            <SignupButton className=\"bg-white text-zinc-900\" />\n          </div>\n        </div>\n      </section>\n\n      <DevtoolsArrow />\n    </>\n  );\n};\n\nconst OuterPage: NextPageWithLayout<\n  InferGetStaticPropsType<typeof getStaticProps>\n> = ({ abbyData }) => {\n  return (\n    <AbbyProvider initialData={abbyData ?? undefined}>\n      <AbbyProdDevtools />\n      <DevtoolsPage />\n    </AbbyProvider>\n  );\n};\n\nOuterPage.getLayout = (page) => (\n  <MarketingLayout seoTitle=\"Devtools\">{page}</MarketingLayout>\n);\n\nexport const getStaticProps = async () => {\n  const config = __abby__.getConfig();\n  const data = await HttpService.getProjectData({\n    projectId: config.projectId,\n    environment: config.currentEnvironment,\n  });\n  return {\n    props: { abbyData: data },\n  };\n};\n\nexport default OuterPage;\n"
  },
  {
    "path": "apps/web/src/pages/imprint.mdx",
    "content": "import { MarketingLayout } from \"components/MarketingLayout\";\n\n# Imprint\n\n**dynabase Technologies GmbH**  \nVon-Werth-Str. 37  \n50670 Köln  \nTelefon: [+49-221-588-307-0](tel:+49-221-588-307-0)  \nTelefax: [+49-221-588-307-0](fax:+49-221-588-307-00)\nE-Mail: [mail@dynabase.de](mailto:mail@dynabase.de)\n\nGeschäftsführer: Daniel Angileri, Norman Wenk  \nRegistergericht: Amtsgericht Köln  \nRegisternummer: HRB 91004 - USt-IdNr.: DE312712619  \nInhaltlich Verantwortliche: Daniel Angileri, Norman Wenk\n\nexport default ({ children }) => (\n  <MarketingLayout seoTitle=\"Imprint\" isMarkdown>\n    {children}\n  </MarketingLayout>\n);\n\nexport const getStaticProps = () => {\n  return {\n    props: {},\n  };\n};\n"
  },
  {
    "path": "apps/web/src/pages/index.tsx",
    "content": "import { DOCS_URL, HttpService } from \"@tryabby/core\";\nimport DevtoolsFactory from \"@tryabby/devtools\";\nimport { createAbby } from \"@tryabby/next\";\nimport { BaseCodeSnippet } from \"components/CodeSnippet\";\nimport { DevtoolsArrow } from \"components/DevtoolsArrow\";\nimport { Divider } from \"components/Divider\";\nimport { EventCounter } from \"components/EventCounter\";\nimport { Feature } from \"components/Feature\";\nimport { Integrations } from \"components/Integrations\";\nimport { MarketingLayout } from \"components/MarketingLayout\";\nimport { PricingTable } from \"components/Pricing\";\nimport { UsedBy } from \"components/UsedBy\";\nimport { useTracking } from \"lib/tracking\";\nimport {\n  Blocks,\n  Clock,\n  Code2,\n  ExternalLink,\n  FlaskConical,\n  Server,\n  Shield,\n} from \"lucide-react\";\nimport type { InferGetStaticPropsType } from \"next\";\nimport { useTheme } from \"next-themes\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { useEffect } from \"react\";\nimport { FaQuestion } from \"react-icons/fa\";\nimport { twMerge } from \"tailwind-merge\";\nimport { generateCodeSnippets } from \"utils/snippets\";\nimport abbyScreenshot from \"../../public/screenshot.png\";\nimport type { NextPageWithLayout } from \"./_app\";\n\nconst { useAbby, AbbyProvider, useFeatureFlag, __abby__, withDevtools } =\n  createAbby({\n    projectId: \"clk8ld04v0000l0085dqsxpsr\",\n    currentEnvironment: \"production\",\n    environments: [\"production\", \"development\"],\n    tests: {\n      SignupButton: {\n        variants: [\"A\", \"B\", \"C\"],\n      },\n      heroMedia: {\n        variants: [\"Image\", \"Video\"],\n      },\n    },\n    flags: [\"ForceDarkTheme\"],\n    cookies: { disableByDefault: false, expiresInDays: 365 },\n  });\n\nconst Devtools = withDevtools(DevtoolsFactory, {\n  dangerouslyForceShow: true,\n});\n\nconst AmpersandIcon = ({ className }: { className?: string }) => (\n  <svg\n    width=\"95\"\n    height=\"101\"\n    viewBox=\"0 0 95 101\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className={className}\n  >\n    <title>Ampersand</title>\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M15.3337 97.1621L15.3271 97.1592C10.6573 95.0532 6.90695 91.9612 4.12888 87.8867L4.11426 87.8652L4.10019 87.8434C1.38285 83.6268 0.0693359 78.6271 0.0693359 72.936C0.0693359 68.7908 0.992738 64.8959 2.84516 61.2802C4.6738 57.6261 7.22397 54.3573 10.4686 51.4732L10.4788 51.4641L10.489 51.4553C12.8467 49.4162 15.4862 47.6775 18.3995 46.2349C17.2184 44.93 16.1387 43.594 15.1619 42.2265L15.1523 42.213L15.1429 42.1995C13.3503 39.6002 11.9458 36.9339 10.9436 34.2005C9.92393 31.4196 9.41334 28.5412 9.41334 25.576C9.41334 20.6226 10.6564 16.2148 13.2053 12.4345C15.7185 8.62189 19.1558 5.66294 23.4622 3.55556L23.4696 3.55193L23.4771 3.54836C27.888 1.4348 32.9286 0.40799 38.5493 0.40799C43.6763 0.40799 48.2691 1.44203 52.2683 3.57544C56.3223 5.60756 59.5396 8.49144 61.8713 12.2184C64.2276 15.8984 65.3813 20.1176 65.3813 24.808C65.3813 28.5927 64.5944 32.1362 63.0044 35.4098C61.4207 38.6702 59.1443 41.4968 56.2067 43.8863C53.9583 45.7703 51.4327 47.3834 48.6387 48.7307L60.3246 61.605C60.6035 60.8805 60.8483 60.1018 61.0571 59.2669L61.0665 59.2293L61.0773 59.192C61.651 57.2251 62.1021 55.216 62.4305 53.164L62.4366 53.1258L62.4442 53.0878C62.8455 51.081 63.0453 49.079 63.0453 47.08V45.08H90.5973V63.16H79.3689C79.0137 64.7933 78.5349 66.4433 77.9351 68.1094C77.1387 70.3217 76.207 72.4109 75.1382 74.3744C74.761 75.1269 74.3682 75.8456 73.9594 76.5295L94.7013 99H66.5916L58.9082 90.5347C56.0152 93.3545 52.4425 95.571 48.2313 97.2011L48.2231 97.2043L48.2149 97.2074C42.7778 99.2575 37.0769 100.28 31.1253 100.28C25.3398 100.28 20.0665 99.2555 15.3403 97.1651L15.3337 97.1621ZM57.563 89.0527C58.0423 88.5828 58.5006 88.0957 58.9377 87.5915L67.4773 97H90.1333L71.4462 76.7556C71.6949 76.3886 71.9388 76.0072 72.1778 75.6114C72.3001 75.4089 72.4211 75.2027 72.5408 74.9928C72.8226 74.4987 73.0974 73.9838 73.3653 73.448C74.3893 71.5707 75.2853 69.5653 76.0533 67.432C76.8213 65.2987 77.376 63.208 77.7173 61.16H88.5973V47.08H65.0453C65.0453 49.2133 64.832 51.3467 64.4053 53.48C64.064 55.6133 63.5947 57.704 62.9973 59.752C62.6823 61.0121 62.2865 62.1752 61.81 63.2415C61.512 63.9082 61.1825 64.537 60.8213 65.128L45.7173 48.488V47.848C46.177 47.6574 46.6293 47.4602 47.0743 47.2563C47.1275 47.2319 47.1807 47.2074 47.2337 47.1828C50.1106 45.8492 52.6772 44.2363 54.9333 42.344C57.664 40.1253 59.7547 37.5227 61.2053 34.536C62.656 31.5493 63.3813 28.3067 63.3813 24.808C63.3813 20.456 62.3147 16.616 60.1813 13.288C58.048 9.87466 55.104 7.22932 51.3493 5.35199C47.68 3.38932 43.4133 2.40799 38.5493 2.40799C33.1733 2.40799 28.4373 3.38932 24.3413 5.35199C20.3307 7.31466 17.1733 10.0453 14.8693 13.544C12.5653 16.9573 11.4133 20.968 11.4133 25.576C11.4133 28.3067 11.8827 30.952 12.8213 33.512C13.76 36.072 15.0827 38.5893 16.7893 41.064C17.8329 42.525 19.0041 43.9541 20.3029 45.3513C20.6423 45.7164 20.9904 46.0793 21.3472 46.44C21.4959 46.5904 21.6462 46.7403 21.7979 46.8899C21.507 47.0101 21.2188 47.1329 20.9333 47.2585C20.5641 47.4208 20.1993 47.5877 19.8391 47.7591C16.8464 49.1833 14.1658 50.9196 11.7973 52.968C8.72534 55.6987 6.336 58.7707 4.62934 62.184C2.92267 65.512 2.06934 69.096 2.06934 72.936C2.06934 78.312 3.30667 82.92 5.78134 86.76C8.34134 90.5147 11.7973 93.3733 16.1493 95.336C20.5867 97.2987 25.5787 98.28 31.1253 98.28C36.8427 98.28 42.304 97.2987 47.5093 95.336C51.5238 93.782 54.8751 91.6875 57.563 89.0527ZM48.6562 76.2638C48.5788 76.3712 48.5001 76.4773 48.4202 76.5822C48.09 77.0153 47.7381 77.4268 47.3647 77.8166C46.2428 78.9876 44.9257 79.9634 43.4133 80.744C40.768 82.1093 37.696 82.792 34.1973 82.792C31.6373 82.792 29.3333 82.3227 27.2853 81.384C25.3227 80.4453 23.744 79.08 22.5493 77.288C21.44 75.4107 20.8853 73.192 20.8853 70.632C20.8853 68.4987 21.2693 66.5787 22.0373 64.872C22.8907 63.08 24.0853 61.544 25.6213 60.264C27.1573 58.8987 28.9493 57.7467 30.9973 56.808L48.6562 76.2638ZM46.0167 76.3314L30.5329 59.2721C29.19 59.9969 27.9982 60.8271 26.9501 61.7588L26.9262 61.78L26.9017 61.8004C25.5916 62.8922 24.5799 64.1915 23.8524 65.7123C23.2214 67.1227 22.8853 68.7508 22.8853 70.632C22.8853 72.8739 23.3636 74.7135 24.2439 76.224C25.2299 77.6865 26.5159 78.7961 28.1338 79.5728C29.8833 80.3718 31.8924 80.792 34.1973 80.792C37.4327 80.792 40.1801 80.1621 42.4961 78.9668C43.8565 78.2646 45.0272 77.3881 46.0167 76.3314ZM44.0559 30.5698L44.0755 30.5325C44.7812 29.1917 45.1253 27.8039 45.1253 26.344C45.1253 24.2468 44.4802 22.6872 43.2791 21.4862L43.2419 21.449L43.2067 21.4099C42.096 20.1758 40.6149 19.512 38.5493 19.512C36.9836 19.512 35.7431 19.8644 34.7453 20.488L34.7061 20.5125L34.6659 20.5351C33.6198 21.1236 32.8169 21.9264 32.2285 22.9725C31.6349 24.0278 31.3333 25.1816 31.3333 26.472C31.3333 27.7342 31.576 28.9626 32.0705 30.1706C32.5928 31.3597 33.3102 32.5755 34.2382 33.8171C35.0799 34.8507 35.9728 35.8322 36.9172 36.7618C38.6032 36.0315 39.9934 35.1974 41.1134 34.2759C42.4498 33.1612 43.4084 31.9367 44.0379 30.6078L44.0559 30.5698ZM42.3893 35.816C40.9387 37.0107 39.1467 38.0347 37.0133 38.888H36.2453C34.9653 37.6933 33.7707 36.4133 32.6613 35.048C31.6373 33.6827 30.8267 32.3173 30.2293 30.952C29.632 29.5013 29.3333 28.008 29.3333 26.472C29.3333 24.8507 29.7173 23.3573 30.4853 21.992C31.2533 20.6267 32.32 19.56 33.6853 18.792C35.0507 17.9387 36.672 17.512 38.5493 17.512C41.1093 17.512 43.1573 18.3653 44.6933 20.072C46.3147 21.6933 47.1253 23.784 47.1253 26.344C47.1253 28.136 46.6987 29.8427 45.8453 31.464C45.0773 33.0853 43.9253 34.536 42.3893 35.816Z\"\n      fill=\"#F9A8D4\"\n    />\n  </svg>\n);\n\nconst Home: NextPageWithLayout<\n  Omit<InferGetStaticPropsType<typeof getStaticProps>, \"abbyData\">\n> = ({ codeSnippet }) => {\n  const { setTheme } = useTheme();\n  const { onAct, variant } = useAbby(\"SignupButton\");\n  const { variant: heroMediaVariant, onAct: onHeroMediaAct } =\n    useAbby(\"heroMedia\");\n\n  const forceDarkTheme = useFeatureFlag(\"ForceDarkTheme\");\n\n  const trackEvent = useTracking();\n\n  useEffect(() => {\n    if (forceDarkTheme) {\n      setTheme(\"dark\");\n    } else {\n      setTheme(\"light\");\n    }\n  }, [forceDarkTheme, setTheme]);\n\n  return (\n    <>\n      <Devtools />\n      <section\n        className={twMerge(\n          \"min-h-screen bg-ab_primary-background text-ab_primary-foreground\",\n          forceDarkTheme && \"dark\"\n        )}\n      >\n        <div className=\"flex flex-col items-center px-6 pb-12 pt-24 md:px-16\">\n          <div className=\"relative\">\n            <AmpersandIcon className=\"absolute -right-36 -top-0 hidden h-36 w-36 rotate-3 lg:block\" />\n            <h1 className=\"text-center text-5xl font-extrabold\">\n              Type-Safe <span className=\"mark\">Feature Flags</span> <br />\n              <span className=\"inline lg:hidden\">&</span>\n              <br />\n              Flexible <span className=\"mark\">Remote Config</span>\n            </h1>\n          </div>\n          <h2 className=\"mx-auto mt-16 max-w-2xl text-center text-lg leading-relaxed\">\n            Abby is <b>Open Source</b> and <b>fully typed</b> with SDKs for{\" \"}\n            <b>React</b> and <b>Next.js</b>. <br />\n            Test in different environments, debug with devtools.\n            <br /> Cut through feature deployment complexity with one service,\n            built for developers.\n          </h2>\n\n          <div className=\"flex flex-col items-center\">\n            <Link\n              href=\"/signup\"\n              onClick={() => {\n                trackEvent(\"Sign Up Clicked\");\n                onAct();\n                onHeroMediaAct();\n              }}\n              className={twMerge(\n                \"mt-12 rounded-xl bg-ab_accent-background px-6 py-2 text-xl font-semibold text-ab_accent-foreground no-underline transition-transform duration-150 ease-in-out hover:scale-110\"\n              )}\n            >\n              {variant === \"A\" && \"Test Now\"}\n              {variant === \"B\" && \"Sign Up for Free\"}\n              {variant === \"C\" && \"Get Started\"}\n            </Link>\n            <span className=\"mt-4 text-xs\">\n              Start free, scale at a fair price.\n            </span>\n          </div>\n          <EventCounter />\n          {heroMediaVariant === \"Image\" && (\n            <Image\n              src={abbyScreenshot}\n              alt=\"Screenshot of Abby's Dashboard\"\n              className=\"mt-12 hidden w-10/12 rounded-xl border border-ab_accent-background shadow-2xl md:block lg:max-w-5xl\"\n              width={1920}\n              height={1080}\n              priority\n            />\n          )}\n          {heroMediaVariant === \"Video\" && (\n            <video\n              className=\"mt-12 hidden w-10/12 rounded-xl border border-ab_accent-background shadow-2xl md:block lg:max-w-5xl\"\n              autoPlay\n              loop\n              muted\n              playsInline\n              preload=\"metadata\"\n            >\n              <source src=\"/videos/hero.mp4\" type=\"video/mp4\" />\n            </video>\n          )}\n        </div>\n      </section>\n      <section id=\"integrations\" className=\"py-24\">\n        <Integrations />\n      </section>\n      <Divider />\n      <section id=\"features\" className=\"py-48\">\n        <div className=\"container px-6 md:px-16\">\n          <h1 className=\"mb-6 text-center text-4xl font-bold\">\n            <span className=\"mark\">Why</span> choose Abby?\n          </h1>\n          <h2 className=\"mb-8 text-center text-lg\">\n            Born out of an engineer&apos;s frustration internally, and now\n            adopted by engineering teams at fast-growing startups and\n            enterprises.\n          </h2>\n\n          <div className=\"grid grid-cols-1 gap-8 md:grid-cols-2\">\n            <Feature\n              icon={Blocks}\n              title=\"Tightly Integrated\"\n              subtitle=\"Built for a modern tech stack\"\n            >\n              SDKs for different frameworks, including React and Next.js. All of\n              them fully type-safe.\n            </Feature>\n            <Feature\n              icon={Server}\n              title=\"Backend Coverage\"\n              subtitle=\"Optimized for server-side\"\n            >\n              Support for SSR or SSG included out of the box for a snappy user\n              experience.\n            </Feature>\n            <Feature\n              icon={FlaskConical}\n              title=\"Environments\"\n              subtitle=\"Test safely\"\n            >\n              Utilize different environments for each feature flag or remote\n              config variable. Create various environments to test features\n              before they go live.\n            </Feature>\n            <Feature\n              icon={Clock}\n              title=\"Reliability First\"\n              subtitle=\"Reduce downtime risk\"\n            >\n              SDKs with built in fallbacks to reduce the risk of downtime and\n              ensure a stable testing environment.\n            </Feature>\n            <Feature\n              icon={Shield}\n              title=\"Privacy and Transparency\"\n              subtitle=\"Ethically made for humanity\"\n            >\n              Fully open source, anonymized data, with the option to self-host\n              (if you really wanted to).\n            </Feature>\n            <Feature\n              icon={Code2}\n              title=\"DevTools Included\"\n              subtitle=\"Contextual debugging\"\n            >\n              Install Abby&apos;s devtools to debug feature flags and remote\n              config variables on the fly. First-Party CLI in Beta.\n            </Feature>\n          </div>\n        </div>\n      </section>\n      <Divider />\n      <section id=\"usedBy\" className=\"py-24\">\n        <UsedBy />\n      </section>\n      <Divider />\n      <section className=\"py-48\" id=\"devtools\">\n        <div className=\"container px-6 md:px-16\">\n          <h1 className=\"mb-6 text-center text-4xl font-bold\">\n            Painless Debugging with <span className=\"mark\">Abby Devtools</span>\n          </h1>\n          <h2 className=\"mb-12 text-center text-lg \">\n            Debugging your feature flags & remote config variables has never\n            been easier. Simply install the optional Devtools and get started.\n            <br />\n            <b>Simple.</b> <b>Framework Agnostic.</b>\n          </h2>\n          <video\n            className=\"mx-auto w-full max-w-4xl rounded-md shadow-2xl\"\n            autoPlay\n            loop\n            muted\n            playsInline\n            preload=\"metadata\"\n          >\n            <source src=\"/videos/devtools_new.mp4\" type=\"video/mp4\" />\n          </video>\n\n          <div className=\"flex items-center\">\n            <Link\n              href={\"/devtools\"}\n              className=\"mx-auto mt-8 rounded-lg bg-ab_accent-background px-4 py-2 font-semibold uppercase text-ab_accent-foreground transition-transform duration-200 ease-in-out hover:scale-110\"\n            >\n              Learn More about our Devtools\n            </Link>\n          </div>\n        </div>\n      </section>\n      <Divider />\n      <section className=\"py-48\">\n        <div className=\"container px-6 md:px-16\">\n          <h1 className=\"mb-6 text-center text-4xl font-bold\">\n            Can&apos;t wait to <span className=\"mark\">try it</span> out?\n          </h1>\n          <h2 className=\"mb-8 text-center text-lg\">\n            Skip the Docs and get right into the code. Define your tests and\n            enjoy the magic. <br />\n            <b>Fully typed.</b> <b>Easy to use.</b>\n          </h2>\n          <div className=\"mx-auto max-w-4xl shadow-2xl\">\n            <BaseCodeSnippet\n              className=\"rounded-md border border-ab_accent-background\"\n              {...codeSnippet}\n            />\n          </div>\n          <div className=\"flex items-center\">\n            <Link\n              href={DOCS_URL}\n              className=\"mx-auto mt-8 flex items-center space-x-2 rounded-lg bg-ab_primary-foreground px-4 py-2 font-semibold uppercase text-ab_primary-background transition-transform duration-200 ease-in-out hover:scale-110\"\n            >\n              <span>Read the Docs</span>{\" \"}\n              <ExternalLink className=\"-mt-1 h-5 w-5 stroke-2\" />\n            </Link>\n          </div>\n        </div>\n      </section>\n      <Divider />\n      <section id=\"pricing\" className=\"py-48\">\n        <div className=\"container px-6 md:px-16\">\n          <h1 className=\"mb-6 text-center text-4xl font-bold\">\n            <span className=\"mark\">Fair pricing</span> that scales with usage,\n            not seats.\n          </h1>\n          <h2 className=\"mb-8 text-center text-lg\">\n            Start using feature flags and remote config variables for free.\n            Scale up at reasonable pricing for small engineering teams and\n            enterprises.\n          </h2>\n          <PricingTable />\n        </div>\n      </section>\n      <Divider />\n      <section className=\"py-48\">\n        <div className=\"container relative px-6 md:px-16\">\n          <div className=\"relative mb-6 \">\n            <div className=\"absolute -top-24 right-0 z-0 hidden text-ab_accent-background md:block\">\n              <FaQuestion className=\"h-36 w-36 fill-none stroke-[6px]\" />\n            </div>\n            <h1 className=\"z-10 text-center text-4xl font-bold\">\n              Still have questions?\n            </h1>\n          </div>\n          <h2 className=\"mb-8 text-center text-lg\">\n            Integrations, pricing, programming memes. Our engineers respond\n            pretty quickly.\n          </h2>\n          <div className=\"flex items-center\">\n            <Link\n              href={\"/contact\"}\n              className=\"mx-auto mt-8 rounded-lg bg-ab_accent-background px-4 py-2 font-semibold text-ab_accent-foreground transition-transform duration-200 ease-in-out hover:scale-110\"\n            >\n              Contact us\n            </Link>\n          </div>\n        </div>\n      </section>\n      <Divider />\n      <section className=\"py-48\">\n        <div className=\"container relative px-6 md:px-16\">\n          <div className=\"relative mb-6 \">\n            <div className=\"absolute -top-24 right-0 z-0 hidden text-ab_accent-background md:block\">\n              <FaQuestion className=\"h-36 w-36 fill-none stroke-[6px]\" />\n            </div>\n            <h1 className=\"z-10 text-center text-4xl font-bold\">\n              When you hear feature flags, do you think of flag lore?\n            </h1>\n          </div>\n          <h2 className=\"mb-8 text-center text-lg\">\n            If you&apos;re not yet familiar with website optimization and\n            feature testing you can learn more about the terms and background of\n            A/B tests (also known as Split tests) here.\n          </h2>\n          <div className=\"flex items-center\">\n            <Link\n              href={\"/tips-and-insights\"}\n              className=\"mx-auto mt-8 rounded-lg bg-ab_accent-background px-4 py-2 font-semibold uppercase text-ab_accent-foreground transition-transform duration-200 ease-in-out hover:scale-110\"\n            >\n              Discover Tips & Insights\n            </Link>\n          </div>\n        </div>\n      </section>\n      <DevtoolsArrow />\n    </>\n  );\n};\n\nconst HomeWrapper: NextPageWithLayout<\n  InferGetStaticPropsType<typeof getStaticProps>\n> = ({ codeSnippet, abbyData }) => (\n  <AbbyProvider initialData={abbyData ?? undefined}>\n    <Home codeSnippet={codeSnippet} />\n  </AbbyProvider>\n);\n\nHomeWrapper.getLayout = (page) => <MarketingLayout>{page}</MarketingLayout>;\n\nexport const getStaticProps = async () => {\n  const config = __abby__.getConfig();\n  const data = await HttpService.getProjectData({\n    projectId: config.projectId,\n    environment: config.currentEnvironment,\n  });\n  const codeSnippet = await generateCodeSnippets({\n    projectId: \"<PROJECT_ID>\",\n    tests: [\n      {\n        name: \"footer\",\n        options: [\n          {\n            identifier: \"oldFooter\",\n          },\n          {\n            identifier: \"newFooter\",\n          },\n        ],\n      },\n      {\n        name: \"ctaButton\",\n        options: [\n          {\n            identifier: \"dark\",\n          },\n          {\n            identifier: \"light\",\n          },\n          {\n            identifier: \"cyberpunk\",\n          },\n        ],\n      },\n    ],\n    flags: [\n      {\n        name: \"showPrices\",\n        type: \"BOOLEAN\",\n      },\n      {\n        name: \"userLimit\",\n        type: \"NUMBER\",\n      },\n      {\n        name: \"appMode\",\n        type: \"STRING\",\n      },\n    ],\n  });\n\n  return {\n    props: {\n      abbyData: data,\n      codeSnippet,\n    },\n  };\n};\n\nexport default HomeWrapper;\n"
  },
  {
    "path": "apps/web/src/pages/integrations/[integration]/index.tsx",
    "content": "import { DOCS_URL } from \"@tryabby/core\";\nimport { INTEGRATIONS } from \"components/Integrations\";\nimport { MarketingLayout } from \"components/MarketingLayout\";\nimport { SignupButton } from \"components/SignupButton\";\nimport type {\n  GetStaticPaths,\n  GetStaticProps,\n  InferGetStaticPropsType,\n} from \"next\";\nimport { NextSeo } from \"next-seo\";\nimport Link from \"next/link\";\nimport type { NextPageWithLayout } from \"pages/_app\";\n\nconst IntegrationPage: NextPageWithLayout<\n  InferGetStaticPropsType<typeof getStaticProps>\n> = (props) => {\n  const integration = INTEGRATIONS.find(\n    (i) => i.docsUrlSlug === props.integrationSlug\n  );\n\n  if (!integration) {\n    return null;\n  }\n\n  return (\n    <>\n      <NextSeo\n        title={`Abby ${integration.name} SDK | Abby`}\n        description={`Feature Flags, Remote Config & A/B Testing for ${integration.name}. Fully typed & Open Source`}\n      />\n      <section className=\"w-full py-12\">\n        <div className=\"container grid items-center justify-center gap-4 px-4 text-center md:px-6 lg:gap-10\">\n          <div className=\"space-y-3\">\n            <h2 className=\"text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl\">\n              Abby {integration.name} SDK\n            </h2>\n            <p className=\"mx-auto max-w-[700px] text-zinc-500 dark:text-zinc-400 md:text-xl/relaxed lg:text-base/relaxed xl:text-xl/relaxed\">\n              Statically typed Feature Flags, Remote Config & A/B testing for{\" \"}\n              <span style={{ color: integration.logoFill }}>\n                {integration.name}\n              </span>\n            </p>\n          </div>\n          <div className=\"mt-8 grid w-full grid-cols-1 gap-24 md:grid-cols-[1fr,auto]\">\n            <div className=\"flex flex-col items-center space-y-4\">\n              <div className=\"text-5xl\" style={{ color: integration.logoFill }}>\n                {integration.logo}\n              </div>\n              <h3 className=\"text-lg font-bold\">SDK Features</h3>\n              <ul className=\"list-disc text-left text-sm text-zinc-500 dark:text-zinc-400\">\n                <li>Feature Flags</li>\n                <li>Remote Config</li>\n                <li>A/B Testing</li>\n                <li>Full Typescript Support</li>\n                <li>\n                  Fully typed <b>without</b> a build step\n                </li>\n                <li>Devtools for managing flags, configs, and experiments</li>\n                {integration.additionalFeatures?.map((feature) => (\n                  <li key={feature}>{feature}</li>\n                ))}\n              </ul>\n            </div>\n            <div className=\"flex flex-col space-y-4\">\n              <h3 className=\"text-lg font-bold\">Installation</h3>\n              <code className=\"rounded bg-gray-100 p-2 text-sm dark:bg-gray-800\">\n                npm install{\" \"}\n                <span className=\"text-primary\">\n                  @tryabby/{integration.npmPackage}\n                </span>\n              </code>\n              <div className=\"flex justify-center space-x-4\">\n                <Link\n                  className=\"inline-flex h-10 items-center justify-center rounded-md bg-zinc-900 px-8 text-sm font-medium text-zinc-50 shadow transition-colors hover:bg-zinc-900/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-zinc-950 disabled:pointer-events-none disabled:opacity-50 dark:bg-zinc-50 dark:text-zinc-900 dark:hover:bg-zinc-50/90 dark:focus-visible:ring-zinc-300\"\n                  href={`${DOCS_URL}integrations/${integration.docsUrlSlug}`}\n                >\n                  SDK Docs\n                </Link>\n              </div>\n            </div>\n          </div>\n          <div className=\"mt-10\">\n            <h3 className=\"mb-4 text-xl font-bold\">About Abby</h3>\n            <p className=\"mx-auto max-w-[700px] text-zinc-500 dark:text-zinc-400 lg:text-base/relaxed \">\n              Abby is an open-source Feature Flagging, Remote Config, and A/B\n              Testing service. Abby&apos; {integration.name} SDK is fully typed\n              and open source.\n              <br />\n              Abby is the easiest way to manage your features and experiments\n              for Developers and Product Managers. Start now with our forever\n              free plan.\n            </p>\n          </div>\n          <SignupButton />\n        </div>\n      </section>\n    </>\n  );\n};\n\nIntegrationPage.getLayout = (page) => {\n  return <MarketingLayout>{page}</MarketingLayout>;\n};\n\nexport default IntegrationPage;\n\nexport const getStaticProps = ((ctx) => {\n  const integrationSlug = ctx.params?.integration;\n\n  if (typeof integrationSlug !== \"string\") {\n    return {\n      notFound: true,\n    };\n  }\n  return {\n    props: {\n      integrationSlug,\n    },\n  };\n}) satisfies GetStaticProps;\n\nexport const getStaticPaths: GetStaticPaths = () => {\n  return {\n    paths: INTEGRATIONS.map((i) => ({\n      params: {\n        integration: i.docsUrlSlug,\n      },\n    })),\n    fallback: false,\n  };\n};\n"
  },
  {
    "path": "apps/web/src/pages/integrations/index.tsx",
    "content": "import { INTEGRATIONS } from \"components/Integrations\";\nimport { MarketingLayout } from \"components/MarketingLayout\";\nimport { Button } from \"components/ui/button\";\nimport Link from \"next/link\";\nimport type { NextPageWithLayout } from \"../_app\";\n\nconst IntegrationsMainPage: NextPageWithLayout = () => {\n  return (\n    <main className=\"flex-1 py-12 md:py-24 lg:py-32\">\n      <div className=\"container px-4 text-center md:px-6\">\n        <h1 className=\"text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl lg:text-6xl/none\">\n          Our Integrations and SDKs\n        </h1>\n        <p className=\"mx-auto mt-4 max-w-[700px] text-zinc-500 dark:text-zinc-400 md:text-xl\">\n          We provide a wide range of integrations and SDKs to help you get the\n          most out of our service.\n        </p>\n      </div>\n      <div className=\"container mt-24 grid gap-8 px-4 sm:grid-cols-2 md:px-6 lg:grid-cols-3 \">\n        {INTEGRATIONS.map((integration) => (\n          <div\n            key={integration.name}\n            className=\"flex flex-col items-center space-y-4\"\n          >\n            <div className=\"text-5xl\" style={{ color: integration.logoFill }}>\n              {integration.logo}\n            </div>\n            <h2 className=\"text-xl font-bold\">{integration.name}</h2>\n            <p className=\"max-w-[300px] text-center text-zinc-500 dark:text-zinc-400\">\n              {integration.description}\n            </p>\n            <Link href={`/integrations/${integration.docsUrlSlug}`}>\n              <Button variant=\"outline\">Learn More</Button>\n            </Link>\n          </div>\n        ))}\n      </div>\n    </main>\n  );\n};\n\nIntegrationsMainPage.getLayout = (page) => {\n  return (\n    <MarketingLayout seoTitle=\"Integations & SDKs | Abby\">\n      {page}\n    </MarketingLayout>\n  );\n};\n\nexport default IntegrationsMainPage;\n"
  },
  {
    "path": "apps/web/src/pages/invites/[inviteId].tsx",
    "content": "import type { GetServerSideProps, NextPage } from \"next\";\nimport { getSession, useSession } from \"next-auth/react\";\nimport { useRouter } from \"next/router\";\nimport { prisma } from \"../../server/db/client\";\n\nimport Link from \"next/link\";\nimport { trpc } from \"utils/trpc\";\n\nexport const getServerSideProps: GetServerSideProps = async (ctx) => {\n  const session = await getSession(ctx);\n\n  const user = await prisma.user.findUnique({\n    where: { email: session?.user?.email ?? \"\" },\n  });\n\n  // no logged in user, required to accept invite\n  if (!user || !user.email)\n    return { props: {}, redirect: { destination: \"/\" } };\n\n  //  TODO: check if user is already in project or invite is expired\n  const invite = await prisma.projectInvite.findFirst({\n    where: { id: ctx.params?.inviteId as string, email: user.email },\n    include: { project: true },\n  });\n\n  if (!invite) {\n    return {\n      props: {},\n      redirect: {\n        destination: \"/\",\n      },\n    };\n  }\n\n  return {\n    props: {},\n  };\n};\n\nconst Projects: NextPage = () => {\n  const { data: session } = useSession();\n  const router = useRouter();\n  const { inviteId } = router.query;\n\n  const { data, isLoading } = trpc.invite.getInviteData.useQuery({\n    inviteId: inviteId as string,\n  });\n\n  const projectInviteMutation = trpc.invite.acceptInvite.useMutation();\n\n  const acceptInvite = async () => {\n    await projectInviteMutation.mutateAsync({\n      inviteId: inviteId as string,\n    });\n\n    router.push(`/projects/${data?.project?.id}`);\n  };\n\n  if (isLoading || !session) return null;\n\n  return (\n    <main className=\"flex h-screen w-screen items-center justify-center bg-pink-100\">\n      <div className=\"max-w-2xl rounded-md bg-white p-8 text-gray-900 shadow-2xl\">\n        <div className=\"mb-12 flex justify-center\">\n          <img\n            src={session.user?.image}\n            className=\"h-24 w-24 rounded-full\"\n            alt=\"\"\n          />\n        </div>\n        <div className=\"text-center text-lg\">\n          <h2>You have been invited to</h2>\n          <p className=\"my-3 text-xl font-bold\">{data?.project?.name}</p>\n          <button\n            type=\"button\"\n            className=\"rounded-lg bg-gray-900 px-3 py-2 font-semibold text-white transition-transform duration-150 ease-in-out hover:scale-110\"\n            onClick={acceptInvite}\n          >\n            Accept Invitation\n          </button>\n          <p className=\"my-4 text-sm\">or</p>\n          <Link href=\"/projects\" className=\"block text-sm text-gray-500\">\n            Go back to projects\n          </Link>\n        </div>\n      </div>\n    </main>\n  );\n};\n\nexport default Projects;\n"
  },
  {
    "path": "apps/web/src/pages/invites/index.tsx",
    "content": "import type { GetServerSideProps, NextPage } from \"next\";\n\nexport const getServerSideProps: GetServerSideProps = async (_ctx) => {\n  return {\n    props: {},\n    redirect: {\n      destination: \"/\",\n    },\n  };\n};\n\nconst Invite: NextPage = () => {\n  return null;\n};\n\nexport default Invite;\n"
  },
  {
    "path": "apps/web/src/pages/login.tsx",
    "content": "import Link from \"next/link\";\n\nimport Logo from \"components/Logo\";\nimport { UserAuthForm } from \"components/UserAuthForm\";\nimport { buttonVariants } from \"components/ui/button\";\nimport { cn } from \"lib/utils\";\nimport { useRouter } from \"next/router\";\n\nconst DEFAULT_CALLBACK_URL = \"/projects\";\n\nexport default function AuthenticationPage() {\n  const router = useRouter();\n\n  const callbackUrl =\n    typeof router.query.callbackUrl === \"string\"\n      ? router.query.callbackUrl\n      : DEFAULT_CALLBACK_URL;\n  return (\n    <>\n      <div className=\"container relative flex h-screen flex-col items-center justify-center bg-background md:grid lg:max-w-none lg:grid-cols-2 lg:px-0\">\n        <Link\n          href=\"/signup\"\n          className={cn(\n            buttonVariants({ variant: \"ghost\" }),\n            \"absolute right-4 top-4 md:right-8 md:top-8\"\n          )}\n        >\n          Sign Up\n        </Link>\n        <div className=\"relative hidden h-full flex-col bg-accent p-10 text-white dark:border-r lg:flex\">\n          <div className=\"absolute inset-0 bg-accent\" />\n          <div className=\"relative z-20 flex items-center text-lg font-medium\">\n            <Logo />\n          </div>\n          <div className=\"relative z-20 mt-auto\">\n            <blockquote className=\"space-y-2\">\n              <p className=\"text-lg\">\n                &ldquo;Feature Flagging & Remote Config for the rest of\n                us.&rdquo;\n              </p>\n              {/* <footer className=\"text-sm\">Sofia Davis</footer> */}\n            </blockquote>\n          </div>\n        </div>\n        <div className=\"lg:p-8\">\n          <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n            <div className=\"mb-6 flex justify-center md:hidden\">\n              <Logo />\n            </div>\n            <div className=\"flex flex-col space-y-2 text-center\">\n              <h1 className=\"text-2xl font-semibold tracking-tight\">\n                Login to your account\n              </h1>\n              <p className=\"text-sm text-muted-foreground\">\n                Enter your email below to login\n              </p>\n            </div>\n            <UserAuthForm callbackUrl={callbackUrl} />\n            <p className=\"px-8 text-center text-sm text-muted-foreground\">\n              By clicking continue, you agree to our{\" \"}\n              <Link\n                href=\"/terms\"\n                className=\"underline underline-offset-4 hover:text-primary\"\n              >\n                Terms of Service\n              </Link>{\" \"}\n              and{\" \"}\n              <Link\n                href=\"/privacy\"\n                className=\"underline underline-offset-4 hover:text-primary\"\n              >\n                Privacy Policy\n              </Link>\n              .\n            </p>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/pages/nextjs.mdx",
    "content": "import { MarketingLayout } from \"components/MarketingLayout\";\nimport { SignupButton } from \"components/SignupButton\";\nimport { AsyncCodeExample } from \"components/AsyncCodeExample\";\nimport { DOCS_URL } from \"@tryabby/core\";\nimport Image from \"next/image\";\nimport CoverImage from \"../../public/abby_next.png\";\n\n# Abby + Next.js\n\n<Image\n  src={CoverImage}\n  className=\"mx-auto rounded-sm shadow-md\"\n  alt=\"Abby + Next.js Logos\"\n  priority\n/>\n\nAbby is an Open-Source tool for A/B Testing and Feature Flags.\nThe motivation behind building Abby was to provide a simple and easy to use tool\nfor A/B Testing and Feature Flags that flawlessly integrates with Next.js.\n\nThis means the following:\n\n### 1. Ease of use\n\nNext.js is an amazing framework that offers the best Developer Experience and makes building highly scalable\napplications a breeze. Abby is built with the same philosophy in mind. It should be easy to use and integrate\nwith your existing Next.js application. You should be able to set it up once in under a minute and forget about it.\n\n### 2. Type Safety\n\nAbby is built with TypeScript and offers full type safety. This means that you can use Abby without worrying\nabout typos or other mistakes that can be easily made when using a tool like Abby. Other third party tools\noften offer outdated or incomplete type definitions or are embedded via a script. Abby is a package that is properly versioned,\ntyped and can be installed with your favorite package manager.\n\n**Example:**\n\n<div className=\"not-prose mx-auto max-w-5xl\">\n  <AsyncCodeExample />\n  <div className=\"flex items-center\">\n    <a\n      href={DOCS_URL}\n      className=\"mx-auto mt-8 rounded-lg bg-gray-900 px-4 py-2 text-white transition-transform duration-200 ease-in-out hover:scale-110\"\n    >\n      Read the Docs\n    </a>\n  </div>\n</div>\n\n### 3. Deeply Integrate with Next.js\n\nThere are many possible ways of creating pages in Next.js. You can render the pages on the server, on the client,\nor even statically. Abby works with all of the ways and makes sure that the A/B Testing and Feature Flags are\napplied to the pages correctly. All of this while keeping the Developer Experience as good as possible.\n\nexport default ({ children }) => (\n  <MarketingLayout seoTitle=\"Abby & Next.js\" isMarkdown>\n    {children}\n    <hr />\n    <div className=\"mx-auto mt-12 w-full rounded-lg p-4 text-center text-lg font-semibold leading-loose shadow-lg\">\n      Abby is an Open Source SaaS for developers to streamline A/B testing and\n      feature flagging.\n      <br />\n      Make data-driven decisions and improve user experience with ease.\n      <br />\n      Made for developers, by developers.\n      <SignupButton className=\"mt-2 px-3 py-3 text-lg\" />\n    </div>\n  </MarketingLayout>\n);\n\nexport const getStaticProps = () => {\n  return {\n    props: {},\n  };\n};\n"
  },
  {
    "path": "apps/web/src/pages/privacy.mdx",
    "content": "import { MarketingLayout } from \"components/MarketingLayout\";\n\n# Privacy Policy / Datenschutzerklärung\n\n## Einleitung\n\nMit der folgenden Datenschutzerklärung möchten wir Sie darüber aufklären, welche Arten Ihrer personenbezogenen Daten (nachfolgend auch kurz als \"Daten“ bezeichnet) wir zu welchen Zwecken und in welchem Umfang verarbeiten. Die Datenschutzerklärung gilt für alle von uns durchgeführten Verarbeitungen personenbezogener Daten, sowohl im Rahmen der Erbringung unserer Leistungen als auch insbesondere auf unseren Webseiten, in mobilen Applikationen sowie innerhalb externer Onlinepräsenzen, wie z.B. unserer Social-Media-Profile (nachfolgend zusammenfassend bezeichnet als \"Onlineangebot“).\n\nDie verwendeten Begriffe sind nicht geschlechtsspezifisch.\n\nStand: 1. Januar 2023\n\n## Verantwortlicher\n\nName/Fa.: dynabase Technologies GmbH\nStraße Nr.: Von-Werth-Str. 37\nPLZ, Ort, Land: 50670 Köln, Deutschland\n\nVertretungsberechtigte Personen: Daniel Angileri, Norman Wenk\n\nE-Mail-Adresse: mail@dynabase.de\n\nTelefon: +49-221-588-307-0\n\nImpressum: https://www.tryabby.com/imprint\n\nKontakt Datenschutzbeauftragter\nLegaltrust GmbH\n\nAnsprechpartner:\nHerr Michael Michalak\nLietzenburger Str. 94\n10719 Berlin\n\nTel. 030 / 887 27 609\nFax. 030 / 887 27 606\n\nE-Mail: datenschutz@prive.eu\n\nhttps://app.prive.eu\n\n## Übersicht der Verarbeitungen\n\nDie nachfolgende Übersicht fasst die Arten der verarbeiteten Daten und die Zwecke ihrer Verarbeitung zusammen und verweist auf die betroffenen Personen.\n\n### Arten der verarbeiteten Daten\n\nBestandsdaten (z.B. Namen, Adressen).\nInhaltsdaten (z.B. Texteingaben, Fotografien, Videos).\nKontaktdaten (z.B. E-Mail, Telefonnummern).\nMeta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nNutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).\nStandortdaten (Daten, die den Standort des Endgeräts eines Endnutzers angeben).\nVertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie).\nZahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie).\n\n### Kategorien betroffener Personen\n\nGeschäfts- und Vertragspartner.\nInteressenten.\nKunden.\nNutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).\n\n### Zwecke der Verarbeitung\n\nAnmeldeverfahren.\nBereitstellung unseres Onlineangebotes und Nutzerfreundlichkeit.\nBüro- und Organisationsverfahren.\nContent Delivery Network (CDN).\nKontaktanfragen und Kommunikation.\nSicherheitsmaßnahmen.\nVertragliche Leistungen und Service.\nVerwaltung und Beantwortung von Anfragen.\n\n### Maßgebliche Rechtsgrundlagen\n\nIm Folgenden teilen wir die Rechtsgrundlagen der Datenschutzgrundverordnung (DSGVO), auf deren Basis wir die personenbezogenen Daten verarbeiten, mit. Bitte beachten Sie, dass zusätzlich zu den Regelungen der DSGVO die nationalen Datenschutzvorgaben in Ihrem bzw. unserem Wohn- und Sitzland gelten können. Sollten ferner im Einzelfall speziellere Rechtsgrundlagen maßgeblich sein, teilen wir Ihnen diese in der Datenschutzerklärung mit.\n\nEinwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO) - Die betroffene Person hat ihre Einwilligung in die Verarbeitung der sie betreffenden personenbezogenen Daten für einen spezifischen Zweck oder mehrere bestimmte Zwecke gegeben.\nVertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO) - Die Verarbeitung ist für die Erfüllung eines Vertrags, dessen Vertragspartei die betroffene Person ist, oder zur Durchführung vorvertraglicher Maßnahmen erforderlich, die auf Anfrage der betroffenen Person erfolgen.\nRechtliche Verpflichtung (Art. 6 Abs. 1 S. 1 lit. c. DSGVO) - Die Verarbeitung ist zur Erfüllung einer rechtlichen Verpflichtung erforderlich, der der Verantwortliche unterliegt.\nBerechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO) - Die Verarbeitung ist zur Wahrung der berechtigten Interessen des Verantwortlichen oder eines Dritten erforderlich, sofern nicht die Interessen oder Grundrechte und Grundfreiheiten der betroffenen Person, die den Schutz personenbezogener Daten erfordern, überwiegen.\nNationale Datenschutzregelungen in Deutschland: Zusätzlich zu den Datenschutzregelungen der Datenschutz-Grundverordnung gelten nationale Regelungen zum Datenschutz in Deutschland. Hierzu gehört insbesondere das Gesetz zum Schutz vor Missbrauch personenbezogener Daten bei der Datenverarbeitung (Bundesdatenschutzgesetz – BDSG). Das BDSG enthält insbesondere Spezialregelungen zum Recht auf Auskunft, zum Recht auf Löschung, zum Widerspruchsrecht, zur Verarbeitung besonderer Kategorien personenbezogener Daten, zur Verarbeitung für andere Zwecke und zur Übermittlung sowie automatisierten Entscheidungsfindung im Einzelfall einschließlich Profiling. Des Weiteren regelt es die Datenverarbeitung für Zwecke des Beschäftigungsverhältnisses (§ 26 BDSG), insbesondere im Hinblick auf die Begründung, Durchführung oder Beendigung von Beschäftigungsverhältnissen sowie die Einwilligung von Beschäftigten. Ferner können Landesdatenschutzgesetze der einzelnen Bundesländer zur Anwendung gelangen.\n\n## Sicherheitsmaßnahmen\n\nWir treffen nach Maßgabe der gesetzlichen Vorgaben unter Berücksichtigung des Stands der Technik, der Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der unterschiedlichen Eintrittswahrscheinlichkeiten und des Ausmaßes der Bedrohung der Rechte und Freiheiten natürlicher Personen geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu gewährleisten.\n\nZu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten durch Kontrolle des physischen und elektronischen Zugangs zu den Daten als auch des sie betreffenden Zugriffs, der Eingabe, der Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, die eine Wahrnehmung von Betroffenenrechten, die Löschung von Daten und Reaktionen auf die Gefährdung der Daten gewährleisten. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung bzw. Auswahl von Hardware, Software sowie Verfahren entsprechend dem Prinzip des Datenschutzes, durch Technikgestaltung und durch datenschutzfreundliche Voreinstellungen.\n\n## Übermittlung und Offenbarung von personenbezogenen Daten\n\nIm Rahmen unserer Verarbeitung von personenbezogenen Daten kommt es vor, dass die Daten an andere Stellen, Unternehmen, rechtlich selbstständige Organisationseinheiten oder Personen übermittelt oder sie ihnen gegenüber offengelegt werden. Zu den Empfängern dieser Daten können z.B. Zahlungsinstitute im Rahmen von Zahlungsvorgängen, mit IT-Aufgaben beauftragte Dienstleister oder Anbieter von Diensten und Inhalten, die in eine Webseite eingebunden werden, gehören. In solchen Fall beachten wir die gesetzlichen Vorgaben und schließen insbesondere entsprechende Verträge bzw. Vereinbarungen, die dem Schutz Ihrer Daten dienen, mit den Empfängern Ihrer Daten ab.\n\n## Datenverarbeitung in Drittländern\n\nSofern wir Daten in einem Drittland (d.h., außerhalb der Europäischen Union (EU), des Europäischen Wirtschaftsraums (EWR)) verarbeiten oder die Verarbeitung im Rahmen der Inanspruchnahme von Diensten Dritter oder der Offenlegung bzw. Übermittlung von Daten an andere Personen, Stellen oder Unternehmen stattfindet, erfolgt dies nur im Einklang mit den gesetzlichen Vorgaben.\n\nVorbehaltlich ausdrücklicher Einwilligung oder vertraglich oder gesetzlich erforderlicher Übermittlung verarbeiten oder lassen wir die Daten nur in Drittländern mit einem anerkannten Datenschutzniveau, vertraglichen Verpflichtung durch sogenannte Standardschutzklauseln der EU-Kommission, beim Vorliegen von Zertifizierungen oder verbindlicher internen Datenschutzvorschriften verarbeiten (Art. 44 bis 49 DSGVO, Informationsseite der EU-Kommission: https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection_de ).\n\n## Einsatz von Cookies\n\nCookies sind Textdateien, die Daten von besuchten Websites oder Domains enthalten und von einem Browser auf dem Computer des Benutzers gespeichert werden. Ein Cookie dient in erster Linie dazu, die Informationen über einen Benutzer während oder nach seinem Besuch innerhalb eines Onlineangebotes zu speichern. Zu den gespeicherten Angaben können z.B. die Spracheinstellungen auf einer Webseite, der Loginstatus, ein Warenkorb oder die Stelle, an der ein Video geschaut wurde, gehören. Zu dem Begriff der Cookies zählen wir ferner andere Technologien, die die gleichen Funktionen wie Cookies erfüllen (z.B., wenn Angaben der Nutzer anhand pseudonymer Onlinekennzeichnungen gespeichert werden, auch als \"Nutzer-IDs\" bezeichnet)\n\nDie folgenden Cookie-Typen und Funktionen werden unterschieden:\n\nTemporäre Cookies (auch: Session- oder Sitzungs-Cookies): Temporäre Cookies werden spätestens gelöscht, nachdem ein Nutzer ein Online-Angebot verlassen und seinen Browser geschlossen hat.\nPermanente Cookies: Permanente Cookies bleiben auch nach dem Schließen des Browsers gespeichert. So kann beispielsweise der Login-Status gespeichert oder bevorzugte Inhalte direkt angezeigt werden, wenn der Nutzer eine Website erneut besucht. Ebenso können die Interessen von Nutzern, die zur Reichweitenmessung oder zu Marketingzwecken verwendet werden, in einem solchen Cookie gespeichert werden.\nFirst-Party-Cookies: First-Party-Cookies werden von uns selbst gesetzt.\nThird-Party-Cookies (auch: Drittanbieter-Cookies): Drittanbieter-Cookies werden hauptsächlich von Werbetreibenden (sog. Dritten) verwendet, um Benutzerinformationen zu verarbeiten.\nNotwendige (auch: essentielle oder unbedingt erforderliche) Cookies: Cookies können zum einen für den Betrieb einer Webseite unbedingt erforderlich sein (z.B. um Logins oder andere Nutzereingaben zu speichern oder aus Gründen der Sicherheit).\nStatistik-, Marketing- und Personalisierungs-Cookies: Ferner werden Cookies im Regelfall auch im Rahmen der Reichweitenmessung eingesetzt sowie dann, wenn die Interessen eines Nutzers oder sein Verhalten (z.B. Betrachten bestimmter Inhalte, Nutzen von Funktionen etc.) auf einzelnen Webseiten in einem Nutzerprofil gespeichert werden. Solche Profile dienen dazu, den Nutzern z.B. Inhalte anzuzeigen, die ihren potentiellen Interessen entsprechen. Dieses Verfahren wird auch als \"Tracking\", d.h., Nachverfolgung der potentiellen Interessen der Nutzer bezeichnet. Soweit wir Cookies oder \"Tracking\"-Technologien einsetzen, informieren wir Sie gesondert in unserer Datenschutzerklärung oder im Rahmen der Einholung einer Einwilligung.\nHinweise zu Rechtsgrundlagen: Auf welcher Rechtsgrundlage wir Ihre personenbezogenen Daten mit Hilfe von Cookies verarbeiten, hängt davon ab, ob wir Sie um eine Einwilligung bitten. Falls dies zutrifft und Sie in die Nutzung von Cookies einwilligen, ist die Rechtsgrundlage der Verarbeitung Ihrer Daten die erklärte Einwilligung. Andernfalls werden die mithilfe von Cookies verarbeiteten Daten auf Grundlage unserer berechtigten Interessen (z.B. an einem betriebswirtschaftlichen Betrieb unseres Onlineangebotes und dessen Verbesserung) verarbeitet oder, wenn der Einsatz von Cookies erforderlich ist, um unsere vertraglichen Verpflichtungen zu erfüllen.\n\nSpeicherdauer: Sofern wir Ihnen keine expliziten Angaben zur Speicherdauer von permanenten Cookies mitteilen (z. B. im Rahmen eines sog. Cookie-Opt-Ins), gehen Sie bitte davon aus, dass die Speicherdauer bis zu zwei Jahre betragen kann.\n\nAllgemeine Hinweise zum Widerruf und Widerspruch (Opt-Out): Abhängig davon, ob die Verarbeitung auf Grundlage einer Einwilligung oder gesetzlichen Erlaubnis erfolgt, haben Sie jederzeit die Möglichkeit, eine erteilte Einwilligung zu widerrufen oder der Verarbeitung Ihrer Daten durch Cookie-Technologien zu widersprechen (zusammenfassend als \"Opt-Out\" bezeichnet). Sie können Ihren Widerspruch zunächst mittels der Einstellungen Ihres Browsers erklären, z.B., indem Sie die Nutzung von Cookies deaktivieren (wobei hierdurch auch die Funktionsfähigkeit unseres Onlineangebotes eingeschränkt werden kann). Ein Widerspruch gegen den Einsatz von Cookies zu Zwecken des Onlinemarketings kann auch mittels einer Vielzahl von Diensten, vor allem im Fall des Trackings, über die Webseiten https://optout.aboutads.info und https://www.youronlinechoices.com/ erklärt werden. Daneben können Sie weitere Widerspruchshinweise im Rahmen der Angaben zu den eingesetzten Dienstleistern und Cookies erhalten.\n\nVerarbeitete Datenarten: Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nBetroffene Personen: Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).\nRechtsgrundlagen: Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\n\n## Kommerzielle und geschäftliche Leistungen\n\nWir verarbeiten Daten unserer Vertrags- und Geschäftspartner, z.B. Kunden und Interessenten (zusammenfassend bezeichnet als \"Vertragspartner\") im Rahmen von vertraglichen und vergleichbaren Rechtsverhältnissen sowie damit verbundenen Maßnahmen und im Rahmen der Kommunikation mit den Vertragspartnern (oder vorvertraglich), z.B., um Anfragen zu beantworten.\n\nDiese Daten verarbeiten wir zur Erfüllung unserer vertraglichen Pflichten, zur Sicherung unserer Rechte und zu Zwecken der mit diesen Angaben einhergehenden Verwaltungsaufgaben sowie der unternehmerischen Organisation. Die Daten der Vertragspartner geben wir im Rahmen des geltenden Rechts nur insoweit an Dritte weiter, als dies zu den vorgenannten Zwecken oder zur Erfüllung gesetzlicher Pflichten erforderlich ist oder mit Einwilligung der betroffenen Personen erfolgt (z.B. an beteiligte Telekommunikations-, Transport- und sonstige Hilfsdienste sowie Subunternehmer, Banken, Steuer- und Rechtsberater, Zahlungsdienstleister oder Steuerbehörden). Über weitere Verarbeitungsformen, z.B. zu Zwecken des Marketings, werden die Vertragspartner im Rahmen dieser Datenschutzerklärung informiert.\n\nWelche Daten für die vorgenannten Zwecke erforderlich sind, teilen wir den Vertragspartnern vor oder im Rahmen der Datenerhebung, z.B. in Onlineformularen, durch besondere Kennzeichnung (z.B. Farben) bzw. Symbole (z.B. Sternchen o.ä.), oder persönlich mit.\n\nWir löschen die Daten nach Ablauf gesetzlicher Gewährleistungs- und vergleichbarer Pflichten, d.h., grundsätzlich nach Ablauf von 4 Jahren, es sei denn, dass die Daten in einem Kundenkonto gespeichert werden, z.B., solange sie aus gesetzlichen Gründen der Archivierung aufbewahrt werden müssen (z.B. für Steuerzwecke im Regelfall 10 Jahre). Daten, die uns im Rahmen eines Auftrags durch den Vertragspartner offengelegt wurden, löschen wir entsprechend den Vorgaben des Auftrags, grundsätzlich nach Ende des Auftrags.\n\nSoweit wir zur Erbringung unserer Leistungen Drittanbieter oder Plattformen einsetzen, gelten im Verhältnis zwischen den Nutzern und den Anbietern die Geschäftsbedingungen und Datenschutzhinweise der jeweiligen Drittanbieter oder Plattformen.\n\nKundenkonto: Vertragspartner können innerhalb unseres Onlineangebotes ein Konto anlegen (z.B. Kunden- bzw. Nutzerkonto, kurz \"Kundenkonto\"). Falls die Registrierung eines Kundenkontos erforderlich ist, werden Vertragspartner hierauf ebenso hingewiesen wie auf die für die Registrierung erforderlichen Angaben. Die Kundenkonten sind nicht öffentlich und können von Suchmaschinen nicht indexiert werden. Im Rahmen der Registrierung sowie anschließender Anmeldungen und Nutzungen des Kundenkontos speichern wir die IP-Adressen der Kunden nebst den Zugriffszeitpunkten, um die Registrierung nachweisen und etwaigem Missbrauch des Kundenkontos vorbeugen zu können.\n\nWenn Kunden ihr Kundenkonto gekündigt haben, werden die das Kundenkonto betreffenden Daten gelöscht, vorbehaltlich, deren Aufbewahrung ist aus gesetzlichen Gründen erforderlich. Es obliegt den Kunden, ihre Daten bei erfolgter Kündigung des Kundenkontos zu sichern.\n\nWeitere Informationen zu kommerziellen Dienstleistungen: Wir verarbeiten die Daten unserer Kunden sowie Auftraggeber (nachfolgend einheitlich als \"Kunden\" bezeichnet), um ihnen die Auswahl, den Erwerb bzw. die Beauftragung der gewählten Leistungen oder Werke sowie verbundener Tätigkeiten als auch deren Bezahlung und Zustellung bzw. Ausführung oder Erbringung zu ermöglichen.\n\nDie erforderlichen Angaben sind als solche im Rahmen des Auftrags-, Bestell- bzw. vergleichbaren Vertragsschlusses gekennzeichnet und umfassen die zur Leistungserbringung und Abrechnung benötigten Angaben sowie Kontaktinformationen, um etwaige Rücksprachen halten zu können.\n\nVerarbeitete Datenarten: Bestandsdaten (z.B. Namen, Adressen), Zahlungsdaten (z.B. Bankverbindungen, Rechnungen, Zahlungshistorie), Kontaktdaten (z.B. E-Mail, Telefonnummern), Vertragsdaten (z.B. Vertragsgegenstand, Laufzeit, Kundenkategorie), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nBetroffene Personen: Interessenten, Geschäfts- und Vertragspartner, Kunden.\nZwecke der Verarbeitung: Vertragliche Leistungen und Service, Kontaktanfragen und Kommunikation, Büro- und Organisationsverfahren, Verwaltung und Beantwortung von Anfragen, Sicherheitsmaßnahmen.\nRechtsgrundlagen: Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Rechtliche Verpflichtung (Art. 6 Abs. 1 S. 1 lit. c. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\n\n## Bereitstellung des Onlineangebotes und Webhosting\n\nUm unser Onlineangebot sicher und effizient bereitstellen zu können, nehmen wir die Leistungen von einem oder mehreren Webhosting-Anbietern in Anspruch, von deren Servern (bzw. von ihnen verwalteten Servern) das Onlineangebot abgerufen werden kann. Zu diesen Zwecken können wir Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste sowie Sicherheitsleistungen und technische Wartungsleistungen in Anspruch nehmen.\n\nZu den im Rahmen der Bereitstellung des Hostingangebotes verarbeiteten Daten können alle die Nutzer unseres Onlineangebotes betreffenden Angaben gehören, die im Rahmen der Nutzung und der Kommunikation anfallen. Hierzu gehören regelmäßig die IP-Adresse, die notwendig ist, um die Inhalte von Onlineangeboten an Browser ausliefern zu können, und alle innerhalb unseres Onlineangebotes oder von Webseiten getätigten Eingaben.\n\nErhebung von Zugriffsdaten und Logfiles: Wir selbst (bzw. unser Webhostinganbieter) erheben Daten zu jedem Zugriff auf den Server (sogenannte Serverlogfiles). Zu den Serverlogfiles können die Adresse und Name der abgerufenen Webseiten und Dateien, Datum und Uhrzeit des Abrufs, übertragene Datenmengen, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite) und im Regelfall IP-Adressen und der anfragende Provider gehören.\n\nDie Serverlogfiles können zum einen zu Zwecken der Sicherheit eingesetzt werden, z.B., um eine Überlastung der Server zu vermeiden (insbesondere im Fall von missbräuchlichen Angriffen, sogenannten DDoS-Attacken) und zum anderen, um die Auslastung der Server und ihre Stabilität sicherzustellen.\n\nContent-Delivery-Network: Wir setzen ein \"Content-Delivery-Network\" (CDN) ein. Ein CDN ist ein Dienst, mit dessen Hilfe Inhalte eines Onlineangebotes, insbesondere große Mediendateien, wie Grafiken oder Programm-Skripte, mit Hilfe regional verteilter und über das Internet verbundener Server schneller und sicherer ausgeliefert werden können.\n\nVerarbeitete Datenarten: Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nBetroffene Personen: Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten), Kunden.\nZwecke der Verarbeitung: Content Delivery Network (CDN), Vertragliche Leistungen und Service, Sicherheitsmaßnahmen.\nRechtsgrundlagen: Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO).\nEingesetzte Dienste und Diensteanbieter:\n\nSentry: Überwachung der Systemstabilität und Ermittlung von Codefehlern - Angaben zum Gerät oder Fehlerzeitpunkt werden pseudonym erhoben und werden anschließend gelöscht; Dienstanbieter: Functional Software Inc., Sentry, 132 Hawthorne Street, San Francisco, California 94107, USA; Website: https://sentry.io; Sicherheitsmaßnahmen: IP-Masking (Pseudonymisierung der IP-Adresse); Datenschutzerklärung: https://sentry.io/privacy.\n\n## Besondere Hinweise zu Applikationen (Apps)\n\nWir verarbeiten die Daten der Nutzer unserer Applikation, soweit diese erforderlich sind, um den Nutzern die Applikation sowie deren Funktionalitäten bereitstellen, deren Sicherheit überwachen und sie weiterentwickeln zu können. Wir können ferner Nutzer unter Beachtung der gesetzlichen Vorgaben kontaktieren, sofern die Kommunikation zu Zwecken der Administration oder Nutzung der Applikation erforderlich ist. Im Übrigen verweisen wir im Hinblick auf die Verarbeitung der Daten der Nutzer auf die Datenschutzhinweise in dieser Datenschutzerklärung.\n\nRechtsgrundlagen: Die Verarbeitung von Daten, die für die Bereitstellung der Funktionalitäten der Applikation erforderlich ist, dient der Erfüllung von vertraglichen Pflichten. Dies gilt auch, wenn die Bereitstellung der Funktionen eine Berechtigung der Nutzer (z. B. Freigaben von Gerätefunktionen) voraussetzt. Sofern die Verarbeitung von Daten für die Bereitstellung der Funktionalitäten der Applikation nicht erforderlich ist, aber der Sicherheit der Applikation oder unseren betriebswirtschaftlichen Interessen dient (z. B. Erhebung von Daten zu Zwecken der Optimierung der Applikation oder Sicherheitszwecken), erfolgt sie auf Grundlage unserer berechtigten Interessen. Sofern Nutzer ausdrücklich deren Einwilligung in die Verarbeitung ihrer Daten gebeten werden, erfolgt die Verarbeitung der von der Einwilligung umfassten Daten auf Grundlage der Einwilligung.\n\nKein Standortverlauf und keine Bewegungsprofile: Die Standortdaten werden lediglich punktuell eingesetzt und nicht zur Bildung eines Standortverlaufs oder eines Bewegungsprofils der verwendeten Geräte, bzw. ihrer Nutzer verarbeitet.\n\nVerarbeitete Datenarten: Bestandsdaten (z.B. Namen, Adressen), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen), Standortdaten (Daten, die den Standort des Endgeräts eines Endnutzers angeben).\nZwecke der Verarbeitung: Vertragliche Leistungen und Service.\nRechtsgrundlagen: Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\n\n## Registrierung, Anmeldung und Nutzerkonto\n\nNutzer können ein Nutzerkonto anlegen. Im Rahmen der Registrierung werden den Nutzern die erforderlichen Pflichtangaben mitgeteilt und zu Zwecken der Bereitstellung des Nutzerkontos auf Grundlage vertraglicher Pflichterfüllung verarbeitet. Zu den verarbeiteten Daten gehören insbesondere die Login-Informationen (Name, Passwort sowie eine E-Mail-Adresse). Die im Rahmen der Registrierung eingegebenen Daten werden für die Zwecke der Nutzung des Nutzerkontos und dessen Zwecks verwendet.\n\nDie Nutzer können über Vorgänge, die für deren Nutzerkonto relevant sind, wie z.B. technische Änderungen, per E-Mail informiert werden. Wenn Nutzer ihr Nutzerkonto gekündigt haben, werden deren Daten im Hinblick auf das Nutzerkonto, vorbehaltlich einer gesetzlichen Aufbewahrungspflicht, gelöscht. Es obliegt den Nutzern, ihre Daten bei erfolgter Kündigung vor dem Vertragsende zu sichern. Wir sind berechtigt, sämtliche während der Vertragsdauer gespeicherte Daten des Nutzers unwiederbringlich zu löschen.\n\nIm Rahmen der Inanspruchnahme unserer Registrierungs- und Anmeldefunktionen sowie der Nutzung des Nutzerkontos speichern wir die IP-Adresse und den Zeitpunkt der jeweiligen Nutzerhandlung. Die Speicherung erfolgt auf Grundlage unserer berechtigten Interessen als auch jener der Nutzer an einem Schutz vor Missbrauch und sonstiger unbefugter Nutzung. Eine Weitergabe dieser Daten an Dritte erfolgt grundsätzlich nicht, es sei denn, sie ist zur Verfolgung unserer Ansprüche erforderlich oder es besteht eine gesetzliche Verpflichtung hierzu.\n\nVerarbeitete Datenarten: Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern), Inhaltsdaten (z.B. Texteingaben, Fotografien, Videos), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nBetroffene Personen: Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).\nZwecke der Verarbeitung: Vertragliche Leistungen und Service, Sicherheitsmaßnahmen, Verwaltung und Beantwortung von Anfragen.\nRechtsgrundlagen: Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\n\n## Single-Sign-On-Anmeldung\n\nAls \"Single-Sign-On“ oder \"Single-Sign-On-Anmeldung bzw. \"-Authentifizierung“ werden Verfahren bezeichnet, die es Nutzern erlauben, sich mit Hilfe eines Nutzerkontos bei einem Anbieter von Single-Sign-On-Verfahren (z.B. einem sozialen Netzwerk), auch bei unserem Onlineangebot, anzumelden. Voraussetzung der Single-Sign-On-Authentifizierung ist, dass die Nutzer bei dem jeweiligen Single-Sign-On-Anbieter registriert sind und die erforderlichen Zugangsdaten in dem dafür vorgesehenen Onlineformular eingeben, bzw. schon bei dem Single-Sign-On-Anbieter angemeldet sind und die Single-Sign-On-Anmeldung via Schaltfläche bestätigen.\n\nDie Authentifizierung erfolgt direkt bei dem jeweiligen Single-Sign-On-Anbieter. Im Rahmen einer solchen Authentifizierung erhalten wir eine Nutzer-ID mit der Information, dass der Nutzer unter dieser Nutzer-ID beim jeweiligen Single-Sign-On-Anbieter eingeloggt ist und eine für uns für andere Zwecke nicht weiter nutzbare ID (sog \"User Handle“). Ob uns zusätzliche Daten übermittelt werden, hängt allein von dem genutzten Single-Sign-On-Verfahren ab, von den gewählten Datenfreigaben im Rahmen der Authentifizierung und zudem davon, welche Daten Nutzer in den Privatsphäre- oder sonstigen Einstellungen des Nutzerkontos beim Single-Sign-On-Anbieter freigegeben haben. Es können je nach Single-Sign-On-Anbieter und der Wahl der Nutzer verschiedene Daten sein, in der Regel sind es die E-Mail-Adresse und der Benutzername. Das im Rahmen des Single-Sign-On-Verfahrens eingegebene Passwort bei dem Single-Sign-On-Anbieter ist für uns weder einsehbar, noch wird es von uns gespeichert.\n\nDie Nutzer werden gebeten, zu beachten, dass deren bei uns gespeicherte Angaben automatisch mit ihrem Nutzerkonto beim Single-Sign-On-Anbieter abgeglichen werden können, dies jedoch nicht immer möglich ist oder tatsächlich erfolgt. Ändern sich z.B. die E-Mail-Adressen der Nutzer, müssen sie diese manuell in ihrem Nutzerkonto bei uns ändern.\n\nDie Single-Sign-On-Anmeldung können wir, sofern mit den Nutzern vereinbart, im Rahmen der oder vor der Vertragserfüllung einsetzen, soweit die Nutzer darum gebeten wurden, im Rahmen einer Einwilligung verarbeiten und setzen sie ansonsten auf Grundlage der berechtigten Interessen unsererseits und der Interessen der Nutzer an einem effektiven und sicheren Anmeldesystem ein.\n\nSollten Nutzer sich einmal entscheiden, die Verknüpfung ihres Nutzerkontos beim Single-Sign-On-Anbieter nicht mehr für das Single-Sign-On-Verfahren nutzen zu wollen, müssen sie diese Verbindung innerhalb ihres Nutzerkontos beim Single-Sign-On-Anbieter aufheben. Möchten Nutzer deren Daten bei uns löschen, müssen sie ihre Registrierung bei uns kündigen.\n\nVerarbeitete Datenarten: Bestandsdaten (z.B. Namen, Adressen), Kontaktdaten (z.B. E-Mail, Telefonnummern).\nBetroffene Personen: Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).\nZwecke der Verarbeitung: Vertragliche Leistungen und Service, Anmeldeverfahren.\nRechtsgrundlagen: Einwilligung (Art. 6 Abs. 1 S. 1 lit. a DSGVO), Vertragserfüllung und vorvertragliche Anfragen (Art. 6 Abs. 1 S. 1 lit. b. DSGVO), Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\nEingesetzte Dienste und Diensteanbieter:\n\nGoogle Single-Sign-On: Authentifizierungsdienst; Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: https://www.google.de; Datenschutzerklärung: https://policies.google.com/privacy; Widerspruchsmöglichkeit (Opt-Out): Einstellungen für die Darstellung von Werbeeinblendungen: https://adssettings.google.com/authenticated.\n\n## Plugins und eingebettete Funktionen sowie Inhalte\n\nWir binden in unser Onlineangebot Funktions- und Inhaltselemente ein, die von den Servern ihrer jeweiligen Anbieter (nachfolgend bezeichnet als \"Drittanbieter”) bezogen werden. Dabei kann es sich zum Beispiel um Grafiken, Videos oder Social-Media-Schaltflächen sowie Beiträge handeln (nachfolgend einheitlich bezeichnet als \"Inhalte”).\n\nDie Einbindung setzt immer voraus, dass die Drittanbieter dieser Inhalte die IP-Adresse der Nutzer verarbeiten, da sie ohne die IP-Adresse die Inhalte nicht an deren Browser senden könnten. Die IP-Adresse ist damit für die Darstellung dieser Inhalte oder Funktionen erforderlich. Wir bemühen uns, nur solche Inhalte zu verwenden, deren jeweilige Anbieter die IP-Adresse lediglich zur Auslieferung der Inhalte verwenden. Drittanbieter können ferner sogenannte Pixel-Tags (unsichtbare Grafiken, auch als \"Web Beacons\" bezeichnet) für statistische oder Marketingzwecke verwenden. Durch die \"Pixel-Tags\" können Informationen, wie der Besucherverkehr auf den Seiten dieser Webseite, ausgewertet werden. Die pseudonymen Informationen können ferner in Cookies auf dem Gerät der Nutzer gespeichert werden und unter anderem technische Informationen zum Browser und zum Betriebssystem, zu verweisenden Webseiten, zur Besuchszeit sowie weitere Angaben zur Nutzung unseres Onlineangebotes enthalten als auch mit solchen Informationen aus anderen Quellen verbunden werden.\n\nHinweise zu Rechtsgrundlagen: Sofern wir die Nutzer um deren Einwilligung in den Einsatz der Drittanbieter bitten, ist die Rechtsgrundlage der Verarbeitung von Daten die Einwilligung. Ansonsten werden die Daten der Nutzer auf Grundlage unserer berechtigten Interessen (d.h. Interesse an effizienten, wirtschaftlichen und empfängerfreundlichen Leistungen) verarbeitet. In diesem Zusammenhang möchten wir Sie auch auf die Informationen zur Verwendung von Cookies in dieser Datenschutzerklärung hinweisen.\n\nVerarbeitete Datenarten: Nutzungsdaten (z.B. besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten), Meta-/Kommunikationsdaten (z.B. Geräte-Informationen, IP-Adressen).\nBetroffene Personen: Nutzer (z.B. Webseitenbesucher, Nutzer von Onlinediensten).\nZwecke der Verarbeitung: Bereitstellung unseres Onlineangebotes und Nutzerfreundlichkeit, Vertragliche Leistungen und Service.\nRechtsgrundlagen: Berechtigte Interessen (Art. 6 Abs. 1 S. 1 lit. f. DSGVO).\nEingesetzte Dienste und Diensteanbieter:\n\nGoogle Fonts: Wir binden die Schriftarten (\"Google Fonts\") des Anbieters Google ein, wobei die Daten der Nutzer allein zu Zwecken der Darstellung der Schriftarten im Browser der Nutzer verwendet werden. Die Einbindung erfolgt auf Grundlage unserer berechtigten Interessen an einer technisch sicheren, wartungsfreien und effizienten Nutzung von Schriftarten, deren einheitlicher Darstellung sowie unter Berücksichtigung möglicher lizenzrechtlicher Restriktionen für deren Einbindung. Dienstanbieter: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland, Mutterunternehmen: Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA; Website: https://fonts.google.com/; Datenschutzerklärung: https://policies.google.com/privacy.\n\n## Löschung von Daten\n\nDie von uns verarbeiteten Daten werden nach Maßgabe der gesetzlichen Vorgaben gelöscht, sobald deren zur Verarbeitung erlaubten Einwilligungen widerrufen werden oder sonstige Erlaubnisse entfallen (z.B., wenn der Zweck der Verarbeitung dieser Daten entfallen ist oder sie für den Zweck nicht erforderlich sind).\n\nSofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, wird deren Verarbeitung auf diese Zwecke beschränkt. D.h., die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen oder deren Speicherung zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen oder zum Schutz der Rechte einer anderen natürlichen oder juristischen Person erforderlich ist.\n\nWeitere Hinweise zu der Löschung von personenbezogenen Daten können ferner im Rahmen der einzelnen Datenschutzhinweise dieser Datenschutzerklärung erfolgen.\n\n## Änderung und Aktualisierung der Datenschutzerklärung\n\nWir bitten Sie, sich regelmäßig über den Inhalt unserer Datenschutzerklärung zu informieren. Wir passen die Datenschutzerklärung an, sobald die Änderungen der von uns durchgeführten Datenverarbeitungen dies erforderlich machen. Wir informieren Sie, sobald durch die Änderungen eine Mitwirkungshandlung Ihrerseits (z.B. Einwilligung) oder eine sonstige individuelle Benachrichtigung erforderlich wird.\n\nSofern wir in dieser Datenschutzerklärung Adressen und Kontaktinformationen von Unternehmen und Organisationen angeben, bitten wir zu beachten, dass die Adressen sich über die Zeit ändern können und bitten die Angaben vor Kontaktaufnahme zu prüfen.\n\n## Rechte der betroffenen Personen\n\nIhnen stehen als Betroffene nach der DSGVO verschiedene Rechte zu, die sich insbesondere aus Art. 15 bis 21 DSGVO ergeben:\n\nWiderspruchsrecht: Sie haben das Recht, aus Gründen, die sich aus Ihrer besonderen Situation ergeben, jederzeit gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten, die aufgrund von Art. 6 Abs. 1 lit. e oder f DSGVO erfolgt, Widerspruch einzulegen; dies gilt auch für ein auf diese Bestimmungen gestütztes Profiling. Werden die Sie betreffenden personenbezogenen Daten verarbeitet, um Direktwerbung zu betreiben, haben Sie das Recht, jederzeit Widerspruch gegen die Verarbeitung der Sie betreffenden personenbezogenen Daten zum Zwecke derartiger Werbung einzulegen; dies gilt auch für das Profiling, soweit es mit solcher Direktwerbung in Verbindung steht.\nWiderrufsrecht bei Einwilligungen: Sie haben das Recht, erteilte Einwilligungen jederzeit zu widerrufen.\nAuskunftsrecht: Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend den gesetzlichen Vorgaben.\nRecht auf Berichtigung: Sie haben entsprechend den gesetzlichen Vorgaben das Recht, die Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.\nRecht auf Löschung und Einschränkung der Verarbeitung: Sie haben nach Maßgabe der gesetzlichen Vorgaben das Recht, zu verlangen, dass Sie betreffende Daten unverzüglich gelöscht werden, bzw. alternativ nach Maßgabe der gesetzlichen Vorgaben eine Einschränkung der Verarbeitung der Daten zu verlangen.\nRecht auf Datenübertragbarkeit: Sie haben das Recht, Sie betreffende Daten, die Sie uns bereitgestellt haben, nach Maßgabe der gesetzlichen Vorgaben in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten oder deren Übermittlung an einen anderen Verantwortlichen zu fordern.\nBeschwerde bei Aufsichtsbehörde: Sie haben ferner nach Maßgabe der gesetzlichen Vorgaben das Recht, bei einer Aufsichtsbehörde, insbesondere in dem Mitgliedstaat Ihres gewöhnlichen Aufenthaltsorts, Ihres Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes Beschwerde einzulegen, wenn Sie der Ansicht sind, dass die Verarbeitung der Sie betreffenden personenbezogenen Daten gegen die DSGVO verstößt.\n\n## Begriffsdefinitionen\n\nIn diesem Abschnitt erhalten Sie eine Übersicht über die in dieser Datenschutzerklärung verwendeten Begrifflichkeiten. Viele der Begriffe sind dem Gesetz entnommen und vor allem im Art. 4 DSGVO definiert. Die gesetzlichen Definitionen sind verbindlich. Die nachfolgenden Erläuterungen sollen dagegen vor allem dem Verständnis dienen. Die Begriffe sind alphabetisch sortiert.\n\nContent Delivery Network (CDN): Ein \"Content Delivery Network\" (CDN) ist ein Dienst, mit dessen Hilfe Inhalte eines Onlineangebotes, insbesondere große Mediendateien, wie Grafiken oder Programm-Skripte mit Hilfe regional verteilter und über das Internet verbundener Server, schneller und sicherer ausgeliefert werden können.\nIP-Masking: Als \"IP-Masking” wird eine Methode bezeichnet, bei der das letzte Oktett, d.h., die letzten beiden Zahlen einer IP-Adresse, gelöscht wird, damit die IP-Adresse nicht mehr der eindeutigen Identifizierung einer Person dienen kann. Daher ist das IP-Masking ein Mittel zur Pseudonymisierung von Verarbeitungsverfahren, insbesondere im Onlinemarketing\nPersonenbezogene Daten: \"Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden \"betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.\nVerantwortlicher: Als \"Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet, bezeichnet.\nVerarbeitung: \"Verarbeitung\" ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden Umgang mit Daten, sei es das Erheben, das Auswerten, das Speichern, das Übermitteln oder das Löschen.\n\nexport default ({ children }) => (\n  <MarketingLayout seoTitle=\"Privacy Policy\" isMarkdown>\n    {children}\n  </MarketingLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/profile/generate-token.tsx",
    "content": "import { useQuery } from \"@tanstack/react-query\";\nimport type { CreateNextContextOptions } from \"@trpc/server/adapters/next\";\nimport { Layout } from \"components/Layout\";\nimport Logo from \"components/Logo\";\nimport type { GetServerSideProps, InferGetServerSidePropsType } from \"next\";\nimport { createContext } from \"server/trpc/context\";\nimport { appRouter } from \"server/trpc/router/_app\";\nimport { match } from \"ts-pattern\";\nimport type { NextPageWithLayout } from \"../_app\";\n\nconst GenerateTokenPage: NextPageWithLayout<\n  InferGetServerSidePropsType<typeof getServerSideProps>\n> = ({ token, callbackUrl }) => {\n  const { status } = useQuery([\"generate-token\"], () => {\n    const url = new URL(callbackUrl as string);\n    url.searchParams.set(\"token\", token);\n    return fetch(url);\n  });\n\n  return (\n    <main className=\"absolute left-1/2 top-1/2 h-[400px] w-[300px] -translate-x-1/2 -translate-y-1/2 rounded-xl border border-gray-200 p-8 text-center\">\n      <div className=\"flex h-full w-full flex-col items-center justify-between py-16\">\n        <Logo />\n        <div>\n          {match(status)\n            .with(\"loading\", () => <h1>Loading...</h1>)\n            .with(\"error\", () => <h1>Something went wrong!</h1>)\n            .with(\"success\", () => <h1>You can safely close this tab now!</h1>)\n            .exhaustive()}\n        </div>\n      </div>\n    </main>\n  );\n};\n\nGenerateTokenPage.getLayout = (page) => <Layout>{page}</Layout>;\n\nexport const getServerSideProps = (async (ctx) => {\n  const trpc = appRouter.createCaller(\n    await createContext(ctx as unknown as CreateNextContextOptions)\n  );\n\n  const token = await trpc.apikey.createApiKey({\n    name: \"CLI Token\",\n  });\n\n  if (typeof ctx.query.callbackUrl !== \"string\") {\n    throw new Error(\"Missing callbackUrl\");\n  }\n\n  return {\n    props: {\n      token,\n      callbackUrl: ctx.query.callbackUrl,\n    },\n  };\n}) satisfies GetServerSideProps;\n\nexport default GenerateTokenPage;\n"
  },
  {
    "path": "apps/web/src/pages/profile/index.tsx",
    "content": "import type { CreateNextContextOptions } from \"@trpc/server/adapters/next\";\nimport { Avatar } from \"components/Avatar\";\nimport { DashboardButton } from \"components/DashboardButton\";\nimport {\n  DashboardSection,\n  DashboardSectionSubtitle,\n  DashboardSectionTitle,\n} from \"components/DashboardSection\";\nimport { Input } from \"components/Input\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport { Modal } from \"components/Modal\";\nimport { Button } from \"components/ui/button\";\nimport { ArrowLeft } from \"lucide-react\";\nimport type { GetServerSideProps } from \"next\";\nimport { useRouter } from \"next/router\";\nimport { useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { BsX } from \"react-icons/bs\";\nimport { getSSRTrpc } from \"server/trpc/helpers\";\nimport { trpc } from \"utils/trpc\";\nimport type { NextPageWithLayout } from \"../_app\";\n\nconst CreateApiKeyModal = ({\n  isOpen,\n  onClose,\n  apiKey,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  name: string;\n  apiKey: string;\n}) => {\n  const [isHovered, setIsHovered] = useState(false);\n  return (\n    <Modal\n      title={\"Your API Key\"}\n      confirmText=\"Copy and Close\"\n      cancelText=\"Close\"\n      onConfirm={() => {\n        navigator.clipboard.writeText(apiKey);\n        onClose();\n        toast.success(\"API Key copied\");\n      }}\n      size=\"full\"\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <div className=\"py-2\">\n        Ensure you copy your personal access token promptly as you won&apos;t\n        have another opportunity to view it.\n      </div>\n      <Input\n        value={apiKey}\n        readOnly\n        type={isHovered ? \"text\" : \"password\"}\n        onMouseEnter={() => setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n        className=\"py-3 focus:ring-green-400 dark:focus:ring-green-500\"\n        onClick={() => {\n          navigator.clipboard.writeText(apiKey).then(() => {\n            toast.success(\"API Key copied\");\n          });\n        }}\n      />\n      <div className=\"pt-2 text-sm text-gray-500\">\n        Expires in 365 Days | Hover to reveal\n      </div>\n    </Modal>\n  );\n};\n\nconst RevokeApiKeyModal = ({\n  isOpen,\n  onClose,\n  apiKey,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  apiKey?: string;\n}) => {\n  const trpcContext = trpc.useContext();\n\n  const { mutate: revokeApiKey } = trpc.apikey.revokeApiKey.useMutation({\n    onSuccess() {\n      toast.success(\"API Key revoked\");\n\n      onClose();\n      trpcContext.user.getApiKeyData.invalidate();\n    },\n  });\n\n  return (\n    <Modal\n      title={\"Revoke API Key\"}\n      confirmText=\"Confirm\"\n      onConfirm={() => {\n        if (!apiKey) return;\n        revokeApiKey({ id: apiKey });\n      }}\n      size=\"full\"\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <div>Wanna really revoke this API Key?</div>\n    </Modal>\n  );\n};\n\nconst ProfilePage: NextPageWithLayout = () => {\n  const [apiKeyToRevoke, setApiKeyToRevoke] = useState<string | undefined>(\n    undefined\n  );\n  const [isCreateApiKeyModalOpen, setIsCreateApiKeyModalOpen] = useState(false);\n  const [isRevokeApiKeyModalOpen, setIsRevokeApiKeyModalOpen] = useState(false);\n  const [newApiKeyInfo, setNewApiKeyInfo] = useState<{\n    name: string;\n    apiKey: string;\n  } | null>(null);\n  const apiKeyNameRef = useRef<HTMLInputElement>(null);\n  const trpcContext = trpc.useContext();\n  const { data, isLoading } = trpc.user.me.useQuery();\n  const {\n    data: apiKeyData,\n    isLoading: isAPIKeyDataLoading,\n    isError: isAPIKeyDataError,\n  } = trpc.user.getApiKeyData.useQuery();\n\n  const updateProfileMutation = trpc.user.updateProfile.useMutation();\n\n  const router = useRouter();\n\n  const onSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n\n    const formData = new FormData(e.currentTarget);\n\n    const name = formData.get(\"name\") as string;\n\n    await updateProfileMutation.mutateAsync({ name });\n    trpcContext.user.me.invalidate();\n\n    toast.success(\"Profile updated successfully\");\n  };\n\n  const { mutateAsync: createApiKey } = trpc.apikey.createApiKey.useMutation({\n    onSuccess() {\n      setIsCreateApiKeyModalOpen(true);\n      trpcContext.user.getApiKeyData.invalidate();\n    },\n  });\n\n  if (isLoading) return <FullPageLoadingSpinner />;\n\n  return (\n    <>\n      <div>\n        <DashboardButton\n          className=\"flex py-1 font-medium\"\n          onClick={() => router.back()}\n        >\n          <ArrowLeft />\n          <span>Go Back</span>\n        </DashboardButton>\n        <div className=\"mx-auto mt-12 max-w-3xl space-y-3\">\n          <DashboardSection>\n            <h1 className=\"text-3xl font-bold\">Account Settings</h1>\n            <form onSubmit={onSubmit} className=\"mt-8 space-y-8\">\n              <Avatar\n                role=\"img\"\n                imageUrl={data?.image ?? \"\"}\n                userName={data?.name ?? data?.email ?? \"\"}\n                className=\"mx-auto block h-36 w-36\"\n              />\n              <div>\n                <label htmlFor=\"name\" className=\"block text-sm font-medium\">\n                  Name *\n                </label>\n                <div className=\"mt-1\">\n                  <Input\n                    type=\"text\"\n                    name=\"name\"\n                    id=\"name\"\n                    defaultValue={data?.name ?? \"\"}\n                  />\n                </div>\n              </div>\n              <div>\n                <label htmlFor=\"name\" className=\"block text-sm font-medium\">\n                  Email *\n                </label>\n                <div className=\"mt-1\">\n                  <Input\n                    type=\"text\"\n                    defaultValue={data?.email ?? \"\"}\n                    disabled\n                  />\n                </div>\n              </div>\n              <div>\n                You signed up in via{\" \"}\n                <span className=\"font-medium capitalize underline underline-offset-2\">\n                  {data?.accounts[0]?.provider}\n                </span>\n              </div>\n              <DashboardButton\n                type=\"submit\"\n                className=\"ml-auto block px-5 py-1\"\n              >\n                Save\n              </DashboardButton>\n            </form>\n          </DashboardSection>\n          <DashboardSection>\n            <DashboardSectionTitle>API Keys</DashboardSectionTitle>\n            <DashboardSectionSubtitle>\n              API Keys are used to authenticate with the API.\n            </DashboardSectionSubtitle>\n            <div className=\"mt-8 divide-y divide-pink-50/20\">\n              {isAPIKeyDataLoading || isAPIKeyDataError ? (\n                <FullPageLoadingSpinner />\n              ) : (\n                <>\n                  {apiKeyData.apiKeys.map(\n                    ({ name: apiKeyName, id: apiKeyId }) => (\n                      <div\n                        key={apiKeyName}\n                        className=\"col flex justify-between py-3\"\n                      >\n                        <div className=\"flex items-center\">{apiKeyName}</div>\n                        <Button\n                          title=\"Revoke API Key\"\n                          onClick={() => {\n                            setIsRevokeApiKeyModalOpen(true);\n                            setApiKeyToRevoke(apiKeyId);\n                          }}\n                          size=\"icon\"\n                          variant=\"destructive\"\n                        >\n                          <BsX />\n                        </Button>\n                      </div>\n                    )\n                  )}\n                </>\n              )}\n\n              <form\n                className=\"pt-4\"\n                onSubmit={(e) => {\n                  // TODO: Create API Key\n                  e.preventDefault();\n                }}\n              >\n                <label htmlFor=\"newApiKey\" className=\" font-semibold\">\n                  Create a new API Key:\n                </label>\n                <div className=\"mt-2\">\n                  <input\n                    ref={apiKeyNameRef}\n                    id=\"newApiKeyName\"\n                    className=\"w-80 max-w-full rounded-l-md bg-gray-700 px-3 py-2 pr-2 focus:outline-none\"\n                    placeholder=\"API Key name\"\n                  />{\" \"}\n                  <button\n                    type=\"button\"\n                    onClick={async () => {\n                      const name =\n                        apiKeyNameRef.current?.value ?? \"New Api Key\";\n\n                      const apiKey = await createApiKey({\n                        name: name,\n                      });\n\n                      setNewApiKeyInfo({\n                        name: name,\n                        apiKey: apiKey,\n                      });\n                    }}\n                    className=\"-ml-1 mt-2 rounded-l-md rounded-r-md bg-gray-900 px-3 py-2 md:mt-0 md:rounded-l-none\"\n                  >\n                    Create\n                  </button>\n                </div>\n              </form>\n            </div>\n          </DashboardSection>\n        </div>\n      </div>\n      <CreateApiKeyModal\n        isOpen={isCreateApiKeyModalOpen}\n        apiKey={newApiKeyInfo?.apiKey ?? \"\"}\n        name={newApiKeyInfo?.name ?? \"\"}\n        onClose={() => {\n          setIsCreateApiKeyModalOpen(false);\n          setNewApiKeyInfo(null);\n        }}\n      />\n      <RevokeApiKeyModal\n        isOpen={isRevokeApiKeyModalOpen}\n        apiKey={apiKeyToRevoke}\n        onClose={() => {\n          setIsRevokeApiKeyModalOpen(false);\n          setApiKeyToRevoke(undefined);\n        }}\n      />\n    </>\n  );\n};\n\nProfilePage.getLayout = (page) => <Layout>{page}</Layout>;\n\nexport const getServerSideProps: GetServerSideProps = async (ctx) => {\n  const trpc = await getSSRTrpc(ctx as unknown as CreateNextContextOptions);\n\n  await trpc.user.me.prefetch();\n\n  return {\n    props: {\n      trpcState: trpc.dehydrate(),\n    },\n  };\n};\n\nexport default ProfilePage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/environments.tsx",
    "content": "import {\n  DndContext,\n  type DragEndEvent,\n  PointerSensor,\n  closestCenter,\n  useSensor,\n  useSensors,\n} from \"@dnd-kit/core\";\nimport {\n  SortableContext,\n  arrayMove,\n  useSortable,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { type Environment, FeatureFlagType } from \"@prisma/client\";\nimport { CreateEnvironmentModal } from \"components/CreateEnvironmentModal\";\nimport { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport { Modal } from \"components/Modal\";\nimport { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader } from \"components/ui/card\";\nimport { EnvironmentBadge } from \"components/ui/environment-badge\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { GripVertical, Pencil, Trash } from \"lucide-react\";\nimport type { GetStaticPaths, GetStaticProps } from \"next\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\n\nfunction EnvironmentItem({\n  environment,\n  projectId,\n  setDeleteState,\n}: {\n  environment: Environment;\n  projectId: string;\n  setDeleteState: () => void;\n}) {\n  const trpcContext = trpc.useContext();\n\n  const { mutate: renameEnvironment } =\n    trpc.environments.updateName.useMutation({\n      onSuccess: () => {\n        trpcContext.flags.getFlags.invalidate({ projectId });\n      },\n    });\n\n  const { attributes, listeners, setNodeRef, transform, transition } =\n    useSortable({ id: environment.id });\n\n  const style = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n  };\n\n  return (\n    <Card\n      ref={setNodeRef}\n      style={style}\n      {...attributes}\n      {...listeners}\n      className=\"relative group\"\n    >\n      <CardContent className=\"flex items-center justify-between p-4\">\n        <div className=\"flex items-center space-x-4\">\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            className=\"h-auto p-0 cursor-grab focus:cursor-grabbing hover:bg-transparent\"\n          >\n            <GripVertical className=\"w-5 h-5 text-muted-foreground/60\" />\n          </Button>\n          <EnvironmentBadge name={environment.name} size=\"lg\" />\n        </div>\n        <div className=\"flex items-center space-x-2\">\n          <Button\n            size=\"sm\"\n            variant=\"ghost\"\n            onClick={() => {\n              const newName = prompt(\"Enter new name\", environment.name);\n              if (newName && newName !== environment.name) {\n                renameEnvironment({\n                  environmentId: environment.id,\n                  name: newName,\n                });\n              }\n            }}\n          >\n            <Pencil className=\"w-4 h-4\" />\n          </Button>\n          <Button\n            size=\"sm\"\n            variant=\"ghost\"\n            className=\"text-destructive hover:text-destructive\"\n            onClick={() => setDeleteState()}\n          >\n            <Trash className=\"w-4 h-4\" />\n          </Button>\n        </div>\n      </CardContent>\n    </Card>\n  );\n}\n\nconst DeleteEnvironmentModal = ({\n  isOpen,\n  onClose,\n  environment,\n  projectId,\n}: {\n  isOpen: boolean;\n  onClose: () => void;\n  environment: Environment;\n  projectId: string;\n}) => {\n  const trpcContext = trpc.useContext();\n\n  const { mutate: deleteEnvironment } =\n    trpc.environments.deleteEnvironment.useMutation({\n      onSuccess: async () => {\n        await trpcContext.flags.getFlags.invalidate({ projectId });\n        toast.success(\"Deleted environment\");\n        onClose();\n      },\n      onError() {\n        toast.error(\"Failed to delete environment\");\n      },\n    });\n\n  return (\n    <Modal\n      title=\"Delete Environment\"\n      confirmText=\"Delete\"\n      onConfirm={() => deleteEnvironment({ environmentId: environment.id })}\n      isOpen={isOpen}\n      onClose={onClose}\n    >\n      <p>\n        Are you sure that you want to delete the environment{\" \"}\n        <EnvironmentBadge name={environment.name} />?\n      </p>\n    </Modal>\n  );\n};\n\nconst EnvironmentPage: NextPageWithLayout = () => {\n  const trpcContext = trpc.useContext();\n  const [environments, setEnvironments] = useState<Array<Environment>>([]);\n  const [isCreateEnvironmentModalOpen, setIsCreateEnvironmentModalOpen] =\n    useState(false);\n  const [activeEnvironmentInfo, setActiveEnvironmentInfo] = useState<{\n    id: string;\n    action: \"delete\";\n  } | null>(null);\n  const projectId = useProjectId();\n\n  const { data, isLoading, isError } = trpc.flags.getFlags.useQuery(\n    {\n      projectId,\n      types: Object.values(FeatureFlagType),\n    },\n    {\n      onSuccess: (data) => {\n        setEnvironments(data.environments);\n      },\n    }\n  );\n  const activeEnvironment = data?.environments.find(\n    (environment) => environment.id === activeEnvironmentInfo?.id\n  );\n  const { mutate } = trpc.environments.updateEnvironmentSort.useMutation({\n    onSuccess: async () => {\n      await trpcContext.flags.getFlags.invalidate({ projectId });\n      toast.success(\"Successfully updated environment order\");\n    },\n  });\n\n  const handleDragEnd = (event: DragEndEvent) => {\n    const { active, over } = event;\n\n    if (active.id !== over?.id) {\n      const oldIndex = environments.findIndex((el) => el.id === active.id);\n      const newIndex = environments.findIndex((el) => el.id === over?.id);\n\n      const newEnvs = arrayMove(environments, oldIndex, newIndex);\n      setEnvironments(newEnvs);\n\n      mutate({\n        environments: newEnvs.map((env, i) => ({\n          id: env.id,\n          sortIndex: i,\n        })),\n      });\n    }\n  };\n\n  const dndSensors = useSensors(\n    useSensor(PointerSensor, {\n      activationConstraint: {\n        distance: 8,\n      },\n    })\n  );\n\n  if (isLoading || isError) return <FullPageLoadingSpinner />;\n\n  if (data.environments.length === 0)\n    return (\n      <div className=\"flex flex-col items-center justify-center mt-48\">\n        <h1 className=\"text-2xl font-semibold\">\n          You don&apos;t have any environments set up!\n        </h1>\n        <Button\n          className=\"mt-4\"\n          onClick={() => setIsCreateEnvironmentModalOpen(true)}\n        >\n          Create Environment\n        </Button>\n        <CreateEnvironmentModal\n          isOpen={isCreateEnvironmentModalOpen}\n          onClose={() => setIsCreateEnvironmentModalOpen(false)}\n          projectId={projectId}\n        />\n      </div>\n    );\n\n  return (\n    <div className=\"space-y-8\">\n      <div className=\"flex items-center justify-between\">\n        <div className=\"flex flex-col gap-1\">\n          <h2 className=\"text-sm font-medium text-muted-foreground\">\n            Manage Environments\n          </h2>\n          <p className=\"text-sm text-muted-foreground\">\n            Create and organize environments for your feature flags. Drag to\n            reorder.\n          </p>\n        </div>\n        <Button\n          onClick={() => setIsCreateEnvironmentModalOpen(true)}\n          className=\"flex items-center\"\n        >\n          Add Environment\n        </Button>\n      </div>\n\n      <Card>\n        <CardHeader className=\"pb-3\">\n          <div className=\"grid gap-6\">\n            <DndContext\n              sensors={dndSensors}\n              collisionDetection={closestCenter}\n              onDragEnd={handleDragEnd}\n            >\n              <SortableContext\n                items={environments}\n                strategy={verticalListSortingStrategy}\n              >\n                <div className=\"grid gap-2\">\n                  {environments.map((environment) => (\n                    <EnvironmentItem\n                      key={environment.id}\n                      environment={environment}\n                      projectId={projectId}\n                      setDeleteState={() => {\n                        setActiveEnvironmentInfo({\n                          id: environment.id,\n                          action: \"delete\",\n                        });\n                      }}\n                    />\n                  ))}\n                </div>\n              </SortableContext>\n            </DndContext>\n          </div>\n        </CardHeader>\n      </Card>\n\n      <CreateEnvironmentModal\n        isOpen={isCreateEnvironmentModalOpen}\n        onClose={() => setIsCreateEnvironmentModalOpen(false)}\n        projectId={projectId}\n      />\n      {activeEnvironment && (\n        <DeleteEnvironmentModal\n          environment={activeEnvironment}\n          projectId={projectId}\n          isOpen={activeEnvironmentInfo?.action === \"delete\"}\n          onClose={() => setActiveEnvironmentInfo(null)}\n        />\n      )}\n    </div>\n  );\n};\n\nEnvironmentPage.getLayout = (page) => {\n  return (\n    <Layout>\n      <DashboardHeader title=\"Environments\" />\n      {page}\n    </Layout>\n  );\n};\n\nexport const getStaticProps: GetStaticProps = async () => {\n  return {\n    props: {},\n  };\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  return {\n    paths: [],\n    fallback: true,\n  };\n};\n\nexport default EnvironmentPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/events.tsx",
    "content": "import { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\n\nimport { Avatar } from \"components/Avatar\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"components/Tooltip\";\nimport { Button } from \"components/ui/button\";\nimport {\n  Table,\n  TableBody,\n  TableCaption,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"components/ui/table\";\nimport dayjs from \"dayjs\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport type { GetStaticPaths, GetStaticProps } from \"next\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport toast from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\n\ndayjs.extend(relativeTime);\n\nfunction getValueClass(value: string | null) {\n  if (value === \"true\") return \"text-green-500\";\n  if (value === \"false\") return \"text-red-500\";\n  return \"text-gray-500 font-medium\";\n}\n\nconst EventsPage: NextPageWithLayout = () => {\n  const projectId = useProjectId();\n\n  const getEventLogsQuery = trpc.project.getEventLogs.useInfiniteQuery(\n    {\n      projectId,\n    },\n    {\n      enabled: !!projectId,\n      getNextPageParam: (lastPage) => lastPage.nextCursor,\n    }\n  );\n\n  if (getEventLogsQuery.isLoading || getEventLogsQuery.isError)\n    return <FullPageLoadingSpinner />;\n\n  return (\n    <Table>\n      <TableCaption>\n        <Button\n          disabled={!getEventLogsQuery.hasNextPage}\n          onClick={() => getEventLogsQuery.fetchNextPage()}\n        >\n          Load More\n        </Button>\n      </TableCaption>\n      <TableHeader>\n        <TableRow>\n          <TableHead className=\"w-[100px]\">Flag</TableHead>\n          <TableHead className=\"w-[100px]\">Environment</TableHead>\n          <TableHead>Change</TableHead>\n          <TableHead>User</TableHead>\n          <TableHead className=\"text-right\">Event Date</TableHead>\n        </TableRow>\n      </TableHeader>\n      <TableBody>\n        {getEventLogsQuery.data.pages.flatMap((p) =>\n          p.items.map((event) => (\n            <TableRow key={event.id}>\n              <TableCell className=\"font-medium\">\n                {event.flagValue.flag.name}\n              </TableCell>\n              <TableCell>{event.flagValue.environment.name}</TableCell>\n              <TableCell>\n                <span className={getValueClass(event.oldValue)}>\n                  {event.oldValue ?? \"unset\"}\n                </span>{\" \"}\n                →{\" \"}\n                <span className={getValueClass(event.newValue)}>\n                  {event.newValue ?? \"unset\"}\n                </span>\n              </TableCell>\n              <TableCell className=\"align-center flex space-x-3\">\n                <Avatar\n                  userName={event.user.name ?? event.user.email ?? undefined}\n                  imageUrl={event.user.image ?? undefined}\n                  className=\"h-5 w-5 rounded-lg text-[10px]\"\n                />\n                <span>\n                  {event.user.name ?? event.user.email ?? \"Deleted User\"}\n                </span>\n              </TableCell>\n              <TableCell className=\"text-right\">\n                <Tooltip>\n                  <TooltipTrigger\n                    onClick={async () => {\n                      try {\n                        await navigator.clipboard.writeText(\n                          event.createdAt.toISOString()\n                        );\n                        toast.success(\"Copied date to clipboard\");\n                      } catch (_e) {\n                        toast.error(\"Failed to copy date to clipboard\");\n                      }\n                    }}\n                  >\n                    {dayjs(event.createdAt).fromNow()}\n                  </TooltipTrigger>\n                  <TooltipContent>\n                    {event.createdAt.toLocaleString()}\n                  </TooltipContent>\n                </Tooltip>\n              </TableCell>\n            </TableRow>\n          ))\n        )}\n      </TableBody>\n    </Table>\n  );\n};\n\nEventsPage.getLayout = (page) => {\n  return (\n    <Layout>\n      <DashboardHeader title=\"Event Log\" />\n      {page}\n    </Layout>\n  );\n};\n\nexport const getStaticProps: GetStaticProps = async () => {\n  return {\n    props: {},\n  };\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  return {\n    paths: [],\n    fallback: true,\n  };\n};\n\nexport default EventsPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/flags/[flagId].tsx",
    "content": "import type { ValidatorType } from \"@tryabby/core\";\nimport type { FlagRuleSet } from \"@tryabby/core/schema\";\nimport { Avatar } from \"components/Avatar\";\nimport { DashboardHeader } from \"components/DashboardHeader\";\nimport { getHistoryEventDescription } from \"components/FeatureFlag\";\nimport { Layout } from \"components/Layout\";\nimport { FlagRulesEditor } from \"components/flags/RuleSetEditor\";\nimport { Button } from \"components/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"components/ui/card\";\nimport { Label } from \"components/ui/label\";\nimport dayjs from \"dayjs\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport { getEnvironmentStyle } from \"lib/environment-styles\";\nimport { cn } from \"lib/utils\";\nimport { AlertCircle, Plus } from \"lucide-react\";\nimport { useRouter } from \"next/router\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport toast from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\n\ndayjs.extend(relativeTime);\n\nconst FlagDetailPage: NextPageWithLayout = () => {\n  const router = useRouter();\n  const flagId = router.query.flagId as string;\n  const flagQuery = trpc.flags.getFlagByValueId.useQuery({\n    flagValueId: flagId,\n  });\n  const updateFlagMutation = trpc.flags.updateFlagRuleSet.useMutation({\n    onSuccess: () => {\n      toast.success(\"Flag rules updated\");\n    },\n    onError: () => {\n      toast.error(\"Could not save flag rules\");\n    },\n  });\n  if (flagQuery.isLoading) {\n    return <div>Loading...</div>;\n  }\n  if (flagQuery.error || !flagQuery.data) {\n    return <div>Error...</div>;\n  }\n  const userSchema = flagQuery.data.flag.project.userSegments[0]?.schema;\n  return (\n    <div className=\"space-y-8\">\n      <DashboardHeader title={flagQuery.data.flag.name} />\n      <div className=\"flex items-center gap-2 mt-2\">\n        <span className=\"text-muted-foreground\">Environment:</span>\n        {(() => {\n          const style = getEnvironmentStyle(flagQuery.data.environment.name);\n          return (\n            <div\n              className={cn(\n                \"flex items-center gap-2 px-3 py-1 rounded-md\",\n                style.bg,\n                style.border\n              )}\n            >\n              <div className={cn(\"h-2 w-2 rounded-full\", style.icon)} />\n              <span className={cn(\"text-sm font-medium\", style.text)}>\n                {flagQuery.data.environment.name}\n              </span>\n            </div>\n          );\n        })()}\n      </div>\n      <div className=\"grid gap-6\">\n        <Card>\n          <CardHeader>\n            <CardTitle className=\"text-xl\">Value Configuration</CardTitle>\n          </CardHeader>\n          <CardContent className=\"grid gap-4\">\n            <div className=\"grid gap-6\">\n              <div>\n                <Label className=\"text-sm text-muted-foreground mb-2 block\">\n                  Default Value\n                </Label>\n                <div className=\"flex items-center gap-2\">\n                  <code className=\"text-sm px-3 py-1.5 bg-muted rounded-md\">\n                    {flagQuery.data.value}\n                  </code>\n                  <span className=\"text-xs text-muted-foreground\">\n                    Type: {flagQuery.data.flag.type.toLowerCase()}\n                  </span>\n                </div>\n              </div>\n\n              {flagQuery.data.flag.description && (\n                <div>\n                  <Label className=\"text-sm text-muted-foreground mb-2 block\">\n                    Description\n                  </Label>\n                  <div className=\"prose prose-sm dark:prose-invert max-w-none\">\n                    <div\n                      // biome-ignore lint/security/noDangerouslySetInnerHtml: <explanation>\n                      dangerouslySetInnerHTML={{\n                        __html: flagQuery.data.flag.description,\n                      }}\n                    />\n                  </div>\n                </div>\n              )}\n            </div>\n          </CardContent>\n        </Card>\n\n        {userSchema ? (\n          <FlagRulesEditor\n            userSchema={userSchema as Record<string, ValidatorType>}\n            flagValue={flagQuery.data.value}\n            flagType={flagQuery.data.flag.type}\n            onSave={(ruleSet) => {\n              updateFlagMutation.mutate({\n                flagValueId: flagId,\n                ruleSet,\n                ruleSetId: flagQuery.data?.ruleSets[0]?.id,\n              });\n            }}\n            initialData={flagQuery.data.ruleSets[0]?.rules as FlagRuleSet}\n          />\n        ) : (\n          <Card>\n            <CardContent className=\"p-8\">\n              <div className=\"flex flex-col items-center justify-center text-center space-y-4\">\n                <div className=\"p-3 rounded-full bg-muted/50\">\n                  <AlertCircle className=\"h-6 w-6 text-muted-foreground\" />\n                </div>\n                <div>\n                  <p className=\"font-medium\">No User Definitions Available</p>\n                  <p className=\"text-sm text-muted-foreground mt-1\">\n                    You need to set up user definitions first to create custom\n                    rules for this flag.\n                  </p>\n                </div>\n                <Button variant=\"outline\" size=\"sm\" className=\"mt-4\">\n                  <Plus className=\"h-4 w-4 mr-2\" />\n                  Add User Definition\n                </Button>\n              </div>\n            </CardContent>\n          </Card>\n        )}\n\n        <Card className=\"w-full\">\n          <CardHeader className=\"pb-3\">\n            <CardTitle className=\"flex items-center justify-between\">\n              <div className=\"flex items-center gap-3\">\n                <span>History</span>\n                <span className=\"text-sm font-normal text-muted-foreground bg-muted px-2 py-0.5 rounded-md\">\n                  {flagQuery.data.history.length}{\" \"}\n                  {flagQuery.data.history.length === 1 ? \"change\" : \"changes\"}\n                </span>\n              </div>\n            </CardTitle>\n          </CardHeader>\n          <CardContent>\n            <div className=\"space-y-4 max-h-[300px] overflow-y-auto pr-2\">\n              {flagQuery.data.history.map((history) => (\n                <div\n                  key={history.id}\n                  className=\"flex items-start space-x-3 py-2 border-b border-border last:border-0\"\n                >\n                  <Avatar\n                    userName={\n                      history.user.name ?? history.user.email ?? undefined\n                    }\n                    imageUrl={history.user.image ?? undefined}\n                    className=\"h-8 w-8 rounded-full shrink-0\"\n                  />\n                  <div className=\"space-y-1 min-w-0\">\n                    <p className=\"text-sm\">\n                      <span className=\"font-medium\">\n                        {history.user.name ?? history.user.email}\n                      </span>{\" \"}\n                      {getHistoryEventDescription(history)}\n                    </p>\n                    <p className=\"text-xs text-muted-foreground\">\n                      {dayjs(history.createdAt).fromNow()}\n                    </p>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n    </div>\n  );\n};\n\nFlagDetailPage.getLayout = (page) => <Layout>{page}</Layout>;\n\nexport default FlagDetailPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/flags/index.tsx",
    "content": "import { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { trpc } from \"utils/trpc\";\n\nimport { FeatureFlagPageContent } from \"components/FlagPage\";\nimport type { GetStaticPaths, GetStaticProps } from \"next\";\n\nconst FeatureFlagsPage: NextPageWithLayout = () => {\n  const projectId = useProjectId();\n\n  const { data, isLoading, isError } = trpc.flags.getFlags.useQuery(\n    {\n      projectId,\n      types: [\"BOOLEAN\"],\n    },\n    {\n      enabled: !!projectId,\n    }\n  );\n\n  if (isLoading || isError) return <FullPageLoadingSpinner />;\n\n  return <FeatureFlagPageContent data={data} type=\"Flags\" />;\n};\n\nFeatureFlagsPage.getLayout = (page) => (\n  <Layout>\n    <DashboardHeader title=\"Feature Flags\" />\n    {page}\n  </Layout>\n);\n\nexport const getStaticProps: GetStaticProps = async () => {\n  return {\n    props: {},\n  };\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  return {\n    paths: [],\n    fallback: true,\n  };\n};\n\nexport default FeatureFlagsPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/index.tsx",
    "content": "import type { inferRouterOutputs } from \"@trpc/server\";\nimport { AddABTestModal } from \"components/AddABTestModal\";\nimport { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport Section from \"components/Test/Section\";\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport Fuse from \"fuse.js\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { Search } from \"lucide-react\";\nimport type { GetStaticPaths, GetStaticProps } from \"next\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { useMemo, useState } from \"react\";\nimport { AiOutlinePlus } from \"react-icons/ai\";\nimport type { AppRouter } from \"server/trpc/router/_app\";\nimport { trpc } from \"utils/trpc\";\n\nexport type ProjectClientEvents =\n  inferRouterOutputs<AppRouter>[\"project\"][\"getProjectData\"][\"project\"][\"tests\"][number][\"pingEvents\"];\n\nconst Projects: NextPageWithLayout = () => {\n  const [isCreateTestModalOpen, setIsCreateTestModalOpen] = useState(false);\n  const [query, setQuery] = useState<string>(\"\");\n  const projectId = useProjectId();\n\n  const { data, isLoading, isError } = trpc.project.getProjectData.useQuery({\n    projectId: projectId,\n  });\n\n  const fuse = useMemo(\n    () => new Fuse(data?.project.tests ?? [], { keys: [\"name\"] }),\n    [data?.project?.tests]\n  );\n\n  const filteredTests = useMemo(() => {\n    if (!query) return data?.project.tests ?? [];\n    const results = fuse.search(query);\n    return results.map((result) => result.item);\n  }, [query, fuse.search, data?.project.tests]);\n\n  if (isLoading || isError) return <FullPageLoadingSpinner />;\n\n  if (data.project.tests.length === 0)\n    return (\n      <div className=\"mt-48 flex flex-col items-center justify-center\">\n        <h1 className=\"text-2xl font-semibold\">\n          You don&apos;t have any A/B tests yet!\n        </h1>\n        <Button className=\"mt-4\" onClick={() => setIsCreateTestModalOpen(true)}>\n          Create a Test\n        </Button>\n        <AddABTestModal\n          isOpen={isCreateTestModalOpen}\n          onClose={() => setIsCreateTestModalOpen(false)}\n          projectId={projectId}\n        />\n      </div>\n    );\n\n  return (\n    <>\n      <div className=\"space-y-6\">\n        <div className=\"flex items-center justify-between\">\n          <div className=\"relative w-[300px]\">\n            <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n            <Input\n              type=\"search\"\n              placeholder=\"Search tests...\"\n              className=\"w-full pl-8\"\n              onChange={(e) => {\n                setQuery(e.target.value);\n              }}\n            />\n          </div>\n          <Button\n            className=\"flex items-center space-x-2\"\n            onClick={() => setIsCreateTestModalOpen(true)}\n          >\n            <AiOutlinePlus className=\"h-4 w-4\" /> <span>Add Test</span>\n          </Button>\n          <AddABTestModal\n            isOpen={isCreateTestModalOpen}\n            onClose={() => setIsCreateTestModalOpen(false)}\n            projectId={projectId}\n          />\n        </div>\n\n        <div className=\"space-y-4\">\n          {filteredTests.map((test) => (\n            <Section\n              key={test.id}\n              {...test}\n              actEvents={test.actEvents}\n              pingEvents={test.pingEvents}\n            />\n          ))}\n        </div>\n      </div>\n    </>\n  );\n};\n\nProjects.getLayout = (page) => (\n  <Layout>\n    <DashboardHeader title=\"A/B Tests\" />\n    {page}\n  </Layout>\n);\n\nexport const getStaticProps: GetStaticProps = async () => {\n  return {\n    props: {},\n  };\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  return {\n    paths: [],\n    fallback: true,\n  };\n};\n\nexport default Projects;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/redeem.tsx",
    "content": "import { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { cn } from \"lib/utils\";\nimport { useRouter } from \"next/router\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { useForm } from \"react-hook-form\";\nimport { toast } from \"react-hot-toast\";\nimport { trpc } from \"utils/trpc\";\n\nconst CodeRedemptionPage: NextPageWithLayout = () => {\n  const projectId = useProjectId();\n  const router = useRouter();\n\n  const { data: project } = trpc.project.getProjectData.useQuery({ projectId });\n\n  const { register, handleSubmit, formState } = useForm<{\n    code: string;\n  }>();\n  const redeemCodeMutation = trpc.coupons.redeemCode.useMutation();\n\n  const onSubmit = handleSubmit(async (values) => {\n    const toastId = toast.loading(\"Redeeming...\");\n    try {\n      await redeemCodeMutation.mutateAsync({\n        code: values.code,\n        projectId,\n      });\n      toast.success(\"Code redeemed!\", { id: toastId });\n      router.push(`/projects/${projectId}/settings`);\n    } catch (_e) {\n      toast.error(\"Invalid Code\", { id: toastId });\n    }\n  });\n\n  return (\n    <div>\n      <h2 className=\"text-2xl font-bold\">\n        Redeem your Code for {project?.project.name}\n      </h2>\n      <form onSubmit={onSubmit} className=\"max-w-md space-y-3\">\n        <label htmlFor=\"code\" className=\"flex flex-col space-y-2\">\n          Code\n          <Input\n            {...register(\"code\", { required: true })}\n            className={cn(formState.errors.code && \"border-red-500\")}\n          />\n          {formState.errors.code && (\n            <span className=\"text-red-500\">This field is required</span>\n          )}\n        </label>\n\n        <Button type=\"submit\">Redeem</Button>\n      </form>\n    </div>\n  );\n};\n\nCodeRedemptionPage.getLayout = (page) => {\n  return (\n    <Layout>\n      <DashboardHeader title=\"Redeem your Code\" />\n      {page}\n    </Layout>\n  );\n};\n\nexport default CodeRedemptionPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/remote-config.tsx",
    "content": "import { DashboardHeader } from \"components/DashboardHeader\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { trpc } from \"utils/trpc\";\n\nimport { FeatureFlagPageContent } from \"components/FlagPage\";\n\nconst RemoteConfigPage: NextPageWithLayout = () => {\n  const projectId = useProjectId();\n\n  const { data, isLoading, isError } = trpc.flags.getFlags.useQuery(\n    {\n      projectId,\n      types: [\"JSON\", \"STRING\", \"NUMBER\"],\n    },\n    {\n      enabled: !!projectId,\n    }\n  );\n\n  if (isLoading || isError) return <FullPageLoadingSpinner />;\n\n  return <FeatureFlagPageContent data={data} type=\"Remote Config\" />;\n};\n\nRemoteConfigPage.getLayout = (page) => (\n  <Layout>\n    <DashboardHeader title=\"Remote Config\" />\n    {page}\n  </Layout>\n);\n\nexport default RemoteConfigPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/settings.tsx",
    "content": "import { ROLE, type User } from \"@prisma/client\";\nimport { GitHubLogoIcon } from \"@radix-ui/react-icons\";\nimport clsx from \"clsx\";\nimport { DashboardButton } from \"components/DashboardButton\";\nimport {\n  DashboardSection,\n  DashboardSectionSubtitle,\n  DashboardSectionTitle,\n} from \"components/DashboardSection\";\nimport { DeleteProjectModal } from \"components/DeleteProjectModal\";\nimport { Layout } from \"components/Layout\";\nimport { FullPageLoadingSpinner } from \"components/LoadingSpinner\";\nimport { Progress } from \"components/Progress\";\nimport { RemoveUserModal } from \"components/RemoveUserModal\";\nimport { Integrations } from \"components/settings/Integrations\";\nimport { UserSegmentDisplay } from \"components/settings/Segments\";\nimport { Button } from \"components/ui/button\";\nimport { Input } from \"components/ui/input\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"components/ui/tabs\";\nimport dayjs from \"dayjs\";\nimport { getFlagCount } from \"lib/flags\";\nimport { getProjectPaidPlan, useAbbyStripe } from \"lib/stripe\";\nimport { useTracking } from \"lib/tracking\";\nimport type { GetStaticPaths, GetStaticProps } from \"next\";\nimport { useSession } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/router\";\nimport { parseAsStringLiteral, useQueryState } from \"nuqs\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { type FormEvent, useRef, useState } from \"react\";\nimport { toast } from \"react-hot-toast\";\nimport { getLimitByPlan } from \"server/common/plans\";\nimport { trpc } from \"utils/trpc\";\n\nconst SETTINGS_TABS = {\n  General: \"general\",\n  Team: \"team\",\n  Billing: \"billing\",\n  Segments: \"segments\",\n  Integrations: \"integrations\",\n  Danger: \"danger\",\n} as const;\n\nconst SettingsPage: NextPageWithLayout = () => {\n  const [userToRemove, setUserToRemove] = useState<User | null>(null);\n  const [isShowDeleteModal, setisShowDeleteModal] = useState(false);\n  const inviteEmailRef = useRef<HTMLInputElement>(null);\n  const [currentTab, setCurrentTab] = useQueryState(\n    \"tab\",\n    parseAsStringLiteral([\n      SETTINGS_TABS.General,\n      SETTINGS_TABS.Team,\n      SETTINGS_TABS.Billing,\n      SETTINGS_TABS.Segments,\n      SETTINGS_TABS.Danger,\n      SETTINGS_TABS.Integrations,\n    ] as const).withDefault(SETTINGS_TABS.General)\n  );\n  const router = useRouter();\n  const trackEvent = useTracking();\n\n  const projectId = router.query.projectId as string;\n  const projectNameRef = useRef<HTMLInputElement>(null);\n\n  const trpcContext = trpc.useContext();\n  const { data, isLoading, isError } = trpc.project.getProjectData.useQuery(\n    {\n      projectId,\n    },\n    {\n      enabled: !!projectId,\n    }\n  );\n\n  const session = useSession();\n\n  const user = data?.project.users.find(\n    (projectUser) => projectUser.user.id === session.data?.user?.id\n  );\n\n  const projectPlan = data ? getProjectPaidPlan(data.project) : null;\n\n  const limits = data ? getLimitByPlan(projectPlan) : null;\n\n  const { mutate: updateProjectName } = trpc.project.updateName.useMutation({\n    onSuccess() {\n      toast.success(\"Project name updated\");\n      trpcContext.project.getProjectData.invalidate();\n      trpcContext.user.getProjects.invalidate();\n    },\n  });\n\n  const { mutateAsync } = trpc.invite.createInvite.useMutation();\n\n  const { redirectToCheckout, redirectToBillingPortal } = useAbbyStripe();\n\n  const deleteProject = async () => {\n    if (!projectId) return;\n    setisShowDeleteModal(true);\n  };\n\n  const onInvite = async (e: FormEvent) => {\n    e.preventDefault();\n\n    const email = inviteEmailRef.current?.value;\n    if (!email) return;\n\n    toast.promise(\n      (async () => {\n        await mutateAsync({\n          projectId,\n          email,\n        });\n        if (!inviteEmailRef.current) return;\n        inviteEmailRef.current.value = \"\";\n      })(),\n      {\n        error: \"Failed to send invite\",\n        loading: \"Sending invite...\",\n        success: \"Invite sent\",\n      }\n    );\n  };\n\n  const isPlanWithStripe = projectPlan !== null && projectPlan !== \"BETA\";\n\n  return (\n    <main className=\"space-y-8 text-pink-50 h-full\">\n      <h1 className=\"text-3xl font-bold\">Project Settings</h1>\n      {isLoading || isError ? (\n        <FullPageLoadingSpinner />\n      ) : (\n        <Tabs\n          value={currentTab}\n          onValueChange={(newTab) =>\n            setCurrentTab(\n              newTab as (typeof SETTINGS_TABS)[keyof typeof SETTINGS_TABS]\n            )\n          }\n          className=\"w-full h-full\"\n        >\n          <TabsList>\n            {Object.entries(SETTINGS_TABS).map(([key, value]) => (\n              <TabsTrigger key={value} value={value}>\n                {key}\n              </TabsTrigger>\n            ))}\n          </TabsList>\n          <TabsContent value={SETTINGS_TABS.General}>\n            <DashboardSection>\n              <DashboardSectionTitle className=\"mb-8\">\n                General Details\n              </DashboardSectionTitle>\n              <div className=\"flex flex-col space-y-4\">\n                <div className=\"flex\">\n                  <label className=\"flex flex-col\" htmlFor=\"projectName\">\n                    Name\n                    <div className=\"col flex space-x-5\">\n                      <Input\n                        name=\"projectName\"\n                        ref={projectNameRef}\n                        className=\"w-52 px-3 py-2\"\n                        type=\"text\"\n                        defaultValue={data.project.name}\n                      />\n                      <DashboardButton\n                        className=\"px-12\"\n                        onClick={() => {\n                          if (!projectNameRef.current?.value) return;\n                          updateProjectName({\n                            name: projectNameRef.current?.value,\n                            projectId,\n                          });\n                        }}\n                      >\n                        Save\n                      </DashboardButton>\n                    </div>\n                  </label>\n                </div>\n              </div>\n            </DashboardSection>\n          </TabsContent>\n          <TabsContent value=\"team\">\n            <DashboardSection>\n              <DashboardSectionTitle>Members</DashboardSectionTitle>\n              <DashboardSectionSubtitle>\n                Members have access to this project\n              </DashboardSectionSubtitle>\n              <div className=\"mt-8 divide-y divide-pink-50/20\">\n                {data.project.users.map(({ user, role }) => (\n                  <div key={user.id} className=\"py-3\">\n                    <div className=\"flex items-center justify-between space-x-2\">\n                      <div className=\"flex space-x-2\">\n                        <span>{user.email}</span>\n                        <span\n                          className={clsx(\n                            \"rounded-md px-2 py-0.5 text-sm capitalize\",\n                            {\n                              \"bg-green-400 text-black\": role === ROLE.ADMIN,\n                              \"bg-orange-200 text-black\": role === ROLE.USER,\n                            }\n                          )}\n                        >\n                          {role.toLowerCase()}\n                        </span>\n                      </div>\n                      {role !== ROLE.ADMIN && (\n                        <Button\n                          variant=\"link\"\n                          title=\"Remove User\"\n                          onClick={() => setUserToRemove(user)}\n                        >\n                          Remove User\n                        </Button>\n                      )}\n                    </div>\n                  </div>\n                ))}\n                <form className=\"pt-4\" onSubmit={onInvite}>\n                  <label htmlFor=\"newUserEmail\" className=\" font-semibold\">\n                    Invite a new User:\n                  </label>\n                  <div className=\"mt-2 flex space-x-5\">\n                    <Input\n                      ref={inviteEmailRef}\n                      id=\"newUserEmail\"\n                      type=\"email\"\n                      className=\"w-80 max-w-full\"\n                      placeholder=\"abby@tryabby.com\"\n                    />{\" \"}\n                    <DashboardButton className=\"px-12\">Invite</DashboardButton>\n                  </div>\n                  <small className=\"mt-1 text-xs text-gray-400\">\n                    Note: You can only invite users with an existing account.\n                  </small>\n                </form>\n              </div>\n            </DashboardSection>\n          </TabsContent>\n          <TabsContent value={SETTINGS_TABS.Segments}>\n            <DashboardSection>\n              <DashboardSectionTitle>User Segments</DashboardSectionTitle>\n              <DashboardSectionSubtitle className=\"mb-8\">\n                User segments let you target specific groups of users with\n                different feature flags and experiments. Define rules based on\n                user properties to create powerful, targeted experiences.\n              </DashboardSectionSubtitle>\n\n              {data.project.userSegments[0] ? (\n                <div>\n                  <p className=\"text-gray-400 mb-6\">\n                    Your active user segment will be applied to all feature\n                    flags and experiments that use segmentation.\n                  </p>\n                  <UserSegmentDisplay segment={data.project.userSegments[0]} />\n                </div>\n              ) : (\n                <div className=\"text-center py-8\">\n                  <p className=\"text-gray-400 mb-4\">\n                    No user segments configured yet\n                  </p>\n                  <p className=\"text-gray-400 mb-6\">\n                    User segments help you target specific users with different\n                    features based on properties like role, location, or any\n                    custom attributes.\n                  </p>\n                  <Link\n                    href=\"https://docs.tryabby.com/user-segments\"\n                    target=\"_blank\"\n                    className=\"text-pink-400 hover:text-pink-300 underline\"\n                  >\n                    Learn how to set up user segments in our docs →\n                  </Link>\n                </div>\n              )}\n            </DashboardSection>\n          </TabsContent>\n          <TabsContent value=\"integrations\">\n            <DashboardSection>\n              <DashboardSectionTitle>Integrations</DashboardSectionTitle>\n              <DashboardSectionSubtitle className=\"mb-8\">\n                Manage your integrations\n              </DashboardSectionSubtitle>\n              <div className=\"flex flex-col space-y-4\">\n                {data.project.integrations.length === 0 ? (\n                  <div className=\"flex flex-col space-y-3\">\n                    <Link\n                      href={`/api/integrations/github?projectId=${projectId}`}\n                    >\n                      <Button\n                        variant=\"outline\"\n                        className=\"flex space-x-2 mr-auto\"\n                      >\n                        <GitHubLogoIcon height={18} width={18} />{\" \"}\n                        <span>Connect with Github</span>\n                      </Button>\n                    </Link>\n                  </div>\n                ) : (\n                  <Integrations projectId={projectId} />\n                )}\n              </div>\n            </DashboardSection>\n          </TabsContent>\n          <TabsContent value=\"billing\">\n            <DashboardSection>\n              <DashboardSectionTitle>Usage</DashboardSectionTitle>\n              <DashboardSectionSubtitle className=\"mb-8\">\n                Current Billing Cycle (\n                {dayjs(data.project.currentPeriodEnd)\n                  .subtract(30, \"days\")\n                  .format(\"MMM DD\")}{\" \"}\n                - {dayjs(data.project.currentPeriodEnd).format(\"MMM DD\")})\n              </DashboardSectionSubtitle>\n              <div className=\"flex flex-col space-y-4\">\n                <div>\n                  <p>Current Plan:</p>\n                  <div className=\"flex flex-col space-y-5\">\n                    <div className=\"flex w-52 items-center justify-center rounded-lg border bg-background px-3 py-2\">\n                      <span>{projectPlan ?? \"Free\"}</span>\n                    </div>\n                    <div className=\"flex space-x-5\">\n                      <DashboardButton\n                        className=\"px-3 py-2\"\n                        onClick={async () => {\n                          trackEvent(\"Plan Upgrade Clicked\", {\n                            props: { Plan: \"STARTUP\" },\n                          });\n                          redirectToCheckout(projectId, \"STARTUP\");\n                        }}\n                      >\n                        Upgrade to Startup\n                      </DashboardButton>\n                      <DashboardButton\n                        className=\"px-3\"\n                        onClick={async () => {\n                          trackEvent(\"Plan Upgrade Clicked\", {\n                            props: { Plan: \"PRO\" },\n                          });\n                          redirectToCheckout(projectId, \"PRO\");\n                        }}\n                      >\n                        Upgrade to Pro\n                      </DashboardButton>\n                      <Link href={`/projects/${projectId}/redeem`}>\n                        <DashboardButton className=\"px-3 py-2\">\n                          Redeem Coupon\n                        </DashboardButton>\n                      </Link>\n                      {data.project.stripeCustomerId !== null &&\n                        projectPlan !== null && (\n                          <DashboardButton\n                            className=\"px-3\"\n                            onClick={async () => {\n                              redirectToBillingPortal(projectId);\n                            }}\n                          >\n                            Manage\n                          </DashboardButton>\n                        )}\n                    </div>\n                  </div>\n                </div>\n                <div>\n                  <h3 className=\"mb-1\">A/B Tests:</h3>\n                  <Progress\n                    currentValue={data.project.tests.length}\n                    maxValue={limits?.tests ?? Number.POSITIVE_INFINITY}\n                  />\n                  <p className=\"mt-2\">\n                    {data.project.tests.length} /{\" \"}\n                    {limits?.tests === Number.POSITIVE_INFINITY\n                      ? \"∞\"\n                      : limits?.tests}{\" \"}\n                    A/B Test\n                    {data.project.tests.length === 1 ? \"\" : \"s\"} used\n                  </p>\n                </div>\n                <div>\n                  <h3 className=\"mb-1\">Flags:</h3>\n                  <Progress\n                    currentValue={getFlagCount(data.project.featureFlags ?? [])}\n                    maxValue={limits?.flags ?? Number.POSITIVE_INFINITY}\n                  />\n                  <p className=\"mt-2\">\n                    {getFlagCount(data.project.featureFlags ?? [])} /{\" \"}\n                    {limits?.flags === Number.POSITIVE_INFINITY\n                      ? \"∞\"\n                      : limits?.flags}{\" \"}\n                    Flag\n                    {getFlagCount(data.project.featureFlags ?? []) === 1\n                      ? \"\"\n                      : \"s\"}{\" \"}\n                    used\n                  </p>\n                </div>\n                <div>\n                  <h3 className=\"mb-1\">Environments:</h3>\n                  <Progress\n                    currentValue={data.project.environments.length}\n                    maxValue={limits?.environments ?? Number.POSITIVE_INFINITY}\n                  />\n                  <p className=\"mt-2\">\n                    {data.project.environments.length} /{\" \"}\n                    {limits?.environments === Number.POSITIVE_INFINITY\n                      ? \"∞\"\n                      : limits?.environments}{\" \"}\n                    Environment\n                    {data.project.environments.length === 1 ? \"\" : \"s\"} used\n                  </p>\n                </div>\n                <div>\n                  <h3 className=\"mb-1\">Monthly Events:</h3>\n                  <Progress\n                    currentValue={data.project.eventsThisPeriod}\n                    maxValue={\n                      limits?.eventsPerMonth ?? Number.POSITIVE_INFINITY\n                    }\n                  />\n                  <p className=\"mt-2\">\n                    {data.project.eventsThisPeriod} /{\" \"}\n                    {limits?.eventsPerMonth === Number.POSITIVE_INFINITY\n                      ? \"∞\"\n                      : limits?.eventsPerMonth}{\" \"}\n                    Events\n                  </p>\n                </div>\n              </div>\n            </DashboardSection>\n          </TabsContent>\n          <TabsContent value=\"danger\">\n            <DashboardSection>\n              <DashboardSectionTitle>Danger Zone</DashboardSectionTitle>\n              <DashboardSectionSubtitle className=\"mb-8\">\n                Delete this project and all of its data\n              </DashboardSectionSubtitle>\n\n              <Button\n                onClick={deleteProject}\n                disabled={\n                  isPlanWithStripe ||\n                  !user?.role ||\n                  user.role !== ROLE.ADMIN ||\n                  session.data?.user?.projectIds === null ||\n                  session.data?.user?.projectIds.length === 1\n                }\n                variant=\"destructive\"\n              >\n                Delete Project\n              </Button>\n              {isPlanWithStripe && (\n                <p className=\"mt-2 text-sm text-gray-400\">\n                  You must downgrade to the free plan before deleting this\n                  project.\n                </p>\n              )}\n              {session.data?.user?.projectIds.length === 1 && (\n                <p className=\"mt-2 text-sm text-gray-400\">\n                  You must create a new project before deleting this project.\n                </p>\n              )}\n            </DashboardSection>\n          </TabsContent>\n        </Tabs>\n      )}\n      <RemoveUserModal\n        isOpen={userToRemove !== null}\n        onClose={() => setUserToRemove(null)}\n        user={userToRemove ?? undefined}\n      />\n      <DeleteProjectModal\n        isOpen={isShowDeleteModal}\n        onClose={() => setisShowDeleteModal(false)}\n      />\n    </main>\n  );\n};\n\nSettingsPage.getLayout = (page) => <Layout>{page}</Layout>;\n\nexport const getStaticProps: GetStaticProps = async () => {\n  return {\n    props: {},\n  };\n};\n\nexport const getStaticPaths: GetStaticPaths = async () => {\n  return {\n    paths: [],\n    fallback: true,\n  };\n};\n\nexport default SettingsPage;\n"
  },
  {
    "path": "apps/web/src/pages/projects/[projectId]/tests/[testId].tsx",
    "content": "import { Layout } from \"components/Layout\";\nimport { LoadingSpinner } from \"components/LoadingSpinner\";\nimport { EventGraph } from \"components/analytics/EventGraph\";\nimport { Button } from \"components/ui/button\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport { INTERVALS, isValidInterval } from \"lib/events\";\nimport { useProjectId } from \"lib/hooks/useProjectId\";\nimport { useQueryParam, useUnsafeQueryParam } from \"lib/hooks/useQueryParam\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/router\";\nimport type { NextPageWithLayout } from \"pages/_app\";\nimport { BiArrowBack } from \"react-icons/bi\";\nimport { trpc } from \"utils/trpc\";\n\nconst INTERVAL_PARAM_NAME = \"interval\";\n\nconst TestDetailPage: NextPageWithLayout = () => {\n  const router = useRouter();\n  const projectId = useProjectId();\n  const testId = useUnsafeQueryParam(\"testId\");\n  const intervalParam = useQueryParam(INTERVAL_PARAM_NAME);\n\n  const interval =\n    intervalParam !== undefined && isValidInterval(intervalParam)\n      ? intervalParam\n      : INTERVALS[1].value;\n\n  const getEventsQuery = trpc.events.getEventsByTestId.useQuery(\n    {\n      testId,\n      interval,\n    },\n    {\n      enabled: !!testId,\n    }\n  );\n\n  if (getEventsQuery.isLoading || getEventsQuery.isError) {\n    return <LoadingSpinner />;\n  }\n\n  /**\n   *  needed for the graph\n   * 1. list of all events. sorted by date\n   * 2. each entry has a key for each variant and the number of events for that variant\n   */\n\n  return (\n    <div>\n      <div className=\"grid grid-cols-[auto,1fr] items-center gap-x-4 gap-y-2 md:grid-cols-[auto,1fr,auto]\">\n        <Link href={`/projects/${projectId}`} className=\"contents\">\n          <Button size=\"icon\" variant=\"secondary\" title=\"Back to Tests\">\n            <BiArrowBack />\n          </Button>\n        </Link>\n        <h1 className=\"justify-self-end text-2xl font-bold text-pink-100 md:justify-self-auto\">\n          {getEventsQuery.data.currentTest.name}\n        </h1>\n        <div className=\"col-span-2 w-48 justify-self-end md:col-span-1\">\n          <Select\n            value={interval}\n            onValueChange={(newInterval) =>\n              router.push(\n                {\n                  ...router,\n                  query: {\n                    ...router.query,\n                    [INTERVAL_PARAM_NAME]: newInterval,\n                  },\n                },\n                undefined,\n                { shallow: true }\n              )\n            }\n          >\n            <SelectTrigger\n              className=\"w-[160px] rounded-lg sm:ml-auto\"\n              aria-label=\"Select a value\"\n            >\n              <SelectValue placeholder=\"Last 3 months\" />\n            </SelectTrigger>\n            <SelectContent className=\"rounded-xl\">\n              {INTERVALS.map((i) => (\n                <SelectItem\n                  key={i.value}\n                  value={i.value}\n                  className=\"rounded-lg\"\n                >\n                  {i.label}\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n\n      <div className=\"mt-8 flex flex-col space-y-8\">\n        <EventGraph\n          title=\"Visits\"\n          subtitle=\"The amount of times a user has seen this test\"\n          events={getEventsQuery.data.totalPingEvents ?? []}\n          variants={getEventsQuery.data.potentialVariants}\n          interval={interval}\n        />\n        <EventGraph\n          title=\"Conversions\"\n          subtitle=\"The amount of times a user has converted in this test\"\n          events={getEventsQuery.data.totalActEvents ?? []}\n          variants={getEventsQuery.data.potentialVariants}\n          interval={interval}\n        />\n        <EventGraph\n          title=\"Unique Visists\"\n          subtitle=\"The amount of times a user has converted in this test\"\n          events={getEventsQuery.data.uniquePingEvents ?? []}\n          variants={getEventsQuery.data.potentialVariants}\n          interval={interval}\n        />\n        <EventGraph\n          title=\"Unique Conversions\"\n          subtitle=\"The amount of times a user has converted in this test\"\n          events={getEventsQuery.data.uniqueActEvents ?? []}\n          variants={getEventsQuery.data.potentialVariants}\n          interval={interval}\n        />\n      </div>\n    </div>\n  );\n};\n\nTestDetailPage.getLayout = (page) => <Layout>{page}</Layout>;\n\nexport default TestDetailPage;\n"
  },
  {
    "path": "apps/web/src/pages/redeem.tsx",
    "content": "import { MarketingLayout } from \"components/MarketingLayout\";\nimport Link from \"next/link\";\nimport type { NextPageWithLayout } from \"./_app\";\n\nconst RedemptionPage: NextPageWithLayout = () => {\n  return (\n    <main className=\"container px-6 py-6 md:px-16\">\n      <div className=\"prose mt-12 max-w-full text-center lg:prose-lg prose-h1:font-bold prose-p:font-medium\">\n        <h1>Hey there 👋</h1>\n        <h2>You are awesome 🥳</h2>\n        <p>\n          Thank you very much for believing in Abby and buying a Lifetime\n          License. In order to redeem your license, you need to create an\n          account first.\n        </p>\n        <p>\n          You can do this for free{\" \"}\n          <Link href=\"/login?callbackUrl=/redeem\">here</Link>\n        </p>\n        <p>\n          After you signed up, you can then enter redeem your code at the bottom\n          of the Settings page.\n        </p>\n        <p>\n          Important: If you already have a subscription, make sure to cancel it\n          first as it will be overridden.\n        </p>\n      </div>\n    </main>\n  );\n};\n\nRedemptionPage.getLayout = (page) => (\n  <MarketingLayout seoTitle=\"Devtools\">{page}</MarketingLayout>\n);\n\nexport default RedemptionPage;\n"
  },
  {
    "path": "apps/web/src/pages/signup.tsx",
    "content": "import Link from \"next/link\";\n\nimport Logo from \"components/Logo\";\nimport { UserAuthForm } from \"components/UserAuthForm\";\nimport { buttonVariants } from \"components/ui/button\";\nimport { cn } from \"lib/utils\";\n\nconst DEFAULT_CALLBACK_URL = \"/projects\";\n\nexport default function AuthenticationPage() {\n  return (\n    <>\n      <div className=\"container relative flex h-screen flex-col items-center justify-center bg-background md:grid lg:max-w-none lg:grid-cols-2 lg:px-0\">\n        <Link\n          href=\"/login\"\n          className={cn(\n            buttonVariants({ variant: \"ghost\" }),\n            \"absolute right-4 top-4 md:right-8 md:top-8\"\n          )}\n        >\n          Login\n        </Link>\n        <div className=\"relative hidden h-full flex-col bg-accent p-10 text-white dark:border-r lg:flex\">\n          <div className=\"absolute inset-0 bg-accent\" />\n          <div className=\"relative z-20 flex items-center text-lg font-medium\">\n            <Logo />\n          </div>\n          <div className=\"relative z-20 mt-auto\">\n            <blockquote className=\"space-y-2\">\n              <p className=\"text-lg\">\n                &ldquo;Feature Flagging & Remote Config for the rest of\n                us.&rdquo;\n              </p>\n              {/* <footer className=\"text-sm\">Sofia Davis</footer> */}\n            </blockquote>\n          </div>\n        </div>\n        <div className=\"lg:p-8\">\n          <div className=\"mx-auto flex w-full flex-col justify-center space-y-6 sm:w-[350px]\">\n            <div className=\"mb-6 flex justify-center md:hidden\">\n              <Logo />\n            </div>\n            <div className=\"flex flex-col space-y-2 text-center\">\n              <h1 className=\"text-2xl font-semibold tracking-tight\">\n                Create an account\n              </h1>\n              <p className=\"text-sm text-muted-foreground\">\n                Enter your email below to create your account\n              </p>\n            </div>\n            <UserAuthForm\n              callbackUrl={DEFAULT_CALLBACK_URL}\n              customButtonText=\"Sign Up with Email\"\n            />\n            <p className=\"px-8 text-center text-sm text-muted-foreground\">\n              By clicking continue, you agree to our{\" \"}\n              <Link\n                href=\"/terms\"\n                className=\"underline underline-offset-4 hover:text-primary\"\n              >\n                Terms of Service\n              </Link>{\" \"}\n              and{\" \"}\n              <Link\n                href=\"/privacy\"\n                className=\"underline underline-offset-4 hover:text-primary\"\n              >\n                Privacy Policy\n              </Link>\n              .\n            </p>\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/web/src/pages/terms.mdx",
    "content": "import { MarketingLayout } from \"components/MarketingLayout\";\n\n# Terms of Service / Nutzungsbedingungen\n\nDie dynabase Technologies GmbH, Von-Wert-Str. 37, 50670 Köln („Betreiber“), betreibt das Content-Management-Portal „a/bby“ und stellt den Nutzern die auf dem Internetportal tryabby.com angebotenen Dienste unter der Geltung der nachfolgenden Nutzungsbedingungen zur Verfügung. Für die Nutzung von a/bby gelten im Verhältnis zwischen dem Nutzer und dem Betreiber die folgenden Nutzungsbedingungen. Die Nutzung von a/bby ist nur zulässig, wenn der Nutzer diese Nutzungsbedingungen akzeptiert.\n\n1. Umfang des Online-Angebots\n\n1.1 Der Betreiber stellt eine Online Plattform zur Verfügung, auf der Nutzer A/B-Tests und Content-Toggles konfigurieren können.\n\nDie geschieht durch das Anlegen von Projekten, in denen Content auf anderen Webseiten verändert werden kann.\nDiese anderen Webseiten kommunizieren mit diesem Portal und nutzen entsprechend die getätigten Konfigurationen.\n\n1.2 Die Nutzung der Plattform ist grundsätzlich kostenfrei, erforderlich ist aber eine Mitgliedschaft.\nZur Nutzung muss sich der Nutzer daher registrieren. Der Nutzer kann seine persönlichen Daten selbst verwalten und jederzeit ändern.\nEs besteht kein Rechtsanspruch auf die Nutzung von a/bby. Der Betreiber kann den Zugang des Nutzers zum Dienst vorübergehend einschränken oder unterbrechen.\nDer Betreiber stellt die Anwendung nach Best Effort zur Verfügung und übernimmt keine darüber hinausgehenden Leistungspflichten.\nInsbesondere besteht kein Anspruch des Nutzers auf eine ständige Verfügbarkeit des Dienstes.\n\n1.3 Der Betreiber stellt nur die Plattform zur Verfügung. Die Verantwortung für Inhalte liegt allein bei den jeweiligen Nutzern bzw. den jeweiligen Autoren.\n\n1.4 Das Angebot der Plattform erfolgt zunächst komplett auf Englisch. Der Betreiber kann später weitere Sprachversionen nach eigenem Ermessen hinzufügen.\n\n1.5 Der Besuch der Plattform kann erfolgen, ohne dass Cookies gesetzt werden. Ein Cookie wird aber gesetzt, sobald ein Login durchgeführt wird. Ein Login ist ohne dieses erforderliche Cookie nicht möglich. Auf der Plattform werden keinerlei optionale Cookies gesetzt, da keine Analyse-Tools oder Werbung eingesetzt werden.\n\n1.6 Alle Änderungen, die ein eingeloggter Benutzer an Projekten vornimmt, werden in einer Log-Datei aufgezeichnet.\nOhne eine solche Historie ist unserer Ansicht nach eine professionelle Zusammenarbeit nicht möglich.\nBei Anfragen auf Einsicht in das Log entscheidet der Betreiber nach billigem Ermessen, ob eine solche gewährt wird (z.B. zum Nachweis von Rechtsverstößen oder bei Manipulationsverdacht).\nAn Dritte, die nicht Projektmitglieder sind, werden Log-Daten nur zur Erfüllung gesetzlicher Pflichten herausgegeben.\n\n2. Registrierung und Nutzerkonten\n\n2.1 Um die Plattform a/bby verwenden zu können, können Sie sich entweder über ein bestehendes Nutzerkonto bei GitHub anmelden oder sich auf https://www.tryabby.com registrieren und dort ein Nutzerkonto einrichten.\nFür die Registrierung benötigen Sie Namen und Ihre Email-Adresse. Eine Registrierung setzt Ihre Zustimmung unserer AGBs und Datenschutzrichtlinien voraus. Die Aktivierung des Kontos erfolgt über einen Aktivierungslink, welcher über eine E-Mail übermittelt wird.\n\n2.2 Die Registrierung auf a/bby ist volljährigen natürlichen Personen erlaubt. Minderjährige und unbefugte Personen dürfen die Plattform nicht verwenden.\nJede Person darf nur ein Nutzerkonto unterhalten. Das Führen mehrerer Nutzerkonten durch die gleiche Person führt zur permanenten Sperre der Person auf der Plattform.\n\n2.3 Die bei der Registrierung mitgeteilten Daten sind vollständig und wahrheitsgemäß auszufüllen. Eine Änderung von Daten ist unverzüglich im Nutzerkonto anzugeben und zu aktualisieren.\nEin grob fährlässiger oder vorsätzlicher Verstoß hiergegen kann mit Sperrung des Nutzerkontos geahndet werden. Ein Nutzerkonto gilt als erstellt, wenn das Anmeldeformular wahrheitsgemäß und\nvollständig ausgefüllt und abgesendet und das Nutzerkonto durch den Betreiber freigeschaltet worden ist.\n\n2.4 Sie sind dazu verpflichtet, alle Zugangsdaten streng vertraulich zu behandeln und sicher aufzubewahren.\nFalls Sie Grund zu der Annahme haben, dass Ihr Nutzerkonto bei a/bby missbraucht wurde oder dass ein nicht autorisierter Dritter Ihre Zugangsdaten besitzt,\nsollten Sie uns dies unverzüglich mitteilen und Ihr Passwort ändern. Gleiches gilt für Ihr Konto auf GitHub, nur dass dann GitHub unverzüglich informiert werden sollte.\n\n2.5 Der Betreiber kann die Nutzung der Plattform nach eigenem Ermessen insgesamt oder teilweise, im Einzelfall oder Allgemein, an bestimmte Voraussetzungen knüpfen, wie z.B. Prüfung der Anmeldedaten, Nutzungsdauer, Art des Nutzerkontos (privat/gewerblich) oder von der Vorlage bestimmter Nachweise (z.B. der Geschäftsfähigkeit) abhängig machen. Stand der Nutzungsbedingungen: 01.01.2023\n\n2.6 Der Betreiber behält sich das Recht vor, das Nutzerkonto zu löschen, wenn Sie über die von Ihnen angegeben Daten nicht erreichbar sind oder gegen die Richtlinien unter 5. verstoßen.\n\n2.7 Die Übertragung eines Nutzerkontos auf Dritte ist nicht zulässig.\n\n3. Löschung, Sperrung, Kündigung des Nutzerkontos\n\n3.1 Sie können jederzeit Ihren Account bei a/bby löschen. Dazu schreiben Sie bitte eine Email an a/bby.\n\n3.2 Der Betreiber hat das Recht, den Zugang zu einzelnen Nutzerinhalten und/oder ein Nutzerkonto nach eigenem Ermessen vorläufig oder dauerhaft zu sperren oder zu löschen,\nwenn wir Gründe zu der Annahme haben, dass Sie Ihr Nutzerkonto auf verbotene Weise nutzen oder auf andere Weise gegen diese Nutzungsbedingungen oder geltendes Recht verstoßen.\nBevor wir Ihr Nutzerkonto dauerhaft sperren oder löschen, werden wir Sie ggf. per E-Mail kontaktieren und Ihnen angemessene Gelegenheit zur Stellungnahme geben.\nSollten wir Ihr Nutzerkonto dauerhaft sperren oder löschen, ist eine erneute Registrierung für Sie ausgeschlossen.\n\n4. Identitätsprüfung und Verifikation\n\n4.1 Der Betreiber kann die Identität seiner registrierten Nutzer nach eigenem Ermessen prüfen.\n\n4.2 Der Nutzer weiß, dass eine zweifelsfreie Identifizierung von Personen letztendlich nur von Angesicht zu Angesicht möglich ist, und nimmt zur Kenntnis,\ndass der Betreiber trotz aller angemessenen Maßnahmen insoweit auch für die Identität einzelner Nutzer nicht haftet.\n\n4.3 Wenn der Betreiber Unregelmäßigkeiten bei einem Nutzer feststellt, kann dieser anlassbezogen einer weiteren probaten Identitätsüberprüfung nach Ermessen des Betreibers unterzogen werden.\n\n4.4 Der Betreiber kann ebenfalls nach eigenem Ermessen ohne Vorankündigung Nutzer sperren, falls diese falsche Angaben bezüglich ihrer Identität gemacht haben.\n\n5. Pflichten der Nutzer\n\n5.1 Die Nutzer erklären sich damit einverstanden:\n\n5.1.1 Die Vorgaben dieser Nutzungsbedingungen und der Gesetze einzuhalten.\n\n5.1.2 Alle Verpflichtungen gegenüber anderen Nutzern und gegenüber dem Betreiber einzuhalten bzw. ohne schuldhaftes Zögern durchzuführen.\n\n5.1.3 Keine nicht-öffentlichen Inhalte von der Plattform a/bby an Dritte weiterzugeben.\n\n5.1.4 Keine Informationen auf a/bby zu veröffentlichen,\n\ndie geeignet sind, dem Betreiber oder einer Person in wirtschaftlicher oder persönlicher Hinsicht zu schaden;\ndie falsch, irreführend, ungenau oder täuschend sind;\ndie Rechte Dritter verletzen (z.B. Urheberrecht, Markenrecht, Patente, Wettbewerbsrecht, usw.);\ndie sonst illegal sind;\ndie verleumderisch, nötigend oder belästigend sind;\ndie obszönes, sittenwidriges, beleidigendes, rassistisches, pornographisches oder sonst rechtswidriges Inhalt haben;\nin sonstiger Form einen Straftatbestand erfüllen oder eine Ordnungswidrigkeit darstellen\n5.2 Nicht zulässig ist die Verwendung von Code, der die bestimmungsgemäße Funktion der Webseite umgehen, beinträchtigen oder stilllegen soll, oder unberechtigte Zugang zu Informationen verschaffen soll.\n\n5.3 Der Betreiber entscheidet aufgrund der in diesen Nutzungsbedingungen festgelegten Vorausaussetzungen nach eigenem Ermessen, ob ein Verstoß gegen Nutzungsbedingungen vorliegt und ergreift für diesen Fall angemessene Maßnahmen – von der Abänderung der entsprechenden Beiträge über die Erteilung einer Rüge (Strike), oder vorübergehende bis hin zu permanenter Sperrung eines Nutzerkontos.\nWeitere rechtliche Schritte bleiben bei straf- oder zivilrechtlicher Verantwortlichkeit von Nutzern ausdrücklich vorbehalten.\n\n5.4 Der Nutzer ist verpflichtet, dem Betreiber den durch Verletzungen gegen die in diesem Abschnitt geregelten Pflichten entstandenen Schaden zu ersetzen.\n\n6. Haftung und Verantwortung\n\n6.1 Der Betreiber übernimmt keine Haftung, Garantie oder Gewährleistung für die Richtigkeit, Vollständigkeit, Verlässlichkeit, Aktualität und Brauchbarkeit der von Nutzern bereit gestellten Inhalte oder von deren persönlichen Daten.\n\n6.2 Der Betreiber überwacht öffentlich zugängliche, von Nutzern auf der Plattform eingestellte Beiträge nicht. Der Betreiber wird nur nach Mitteilung zu angeblichen Verstößen tätig.\n\n6.3.1 Schadensersatzansprüche des Nutzers sind ausgeschlossen, soweit in 6.3.2 nichts anderes bestimmt ist. Der vorstehende Haftungsausschluss gilt auch zugunsten der gesetzlichen Vertreter und Erfüllungsgehilfen des Betreibers, sofern der Nutzer Ansprüche gegen diese geltend macht.\n\n6.3.2 Von dem in 6.3.1 bestimmten Haftungsausschluss ausgenommen sind Schadensersatzansprüche aufgrund einer Verletzung des Lebens, des Körpers, der Gesundheit und Schadensersatzansprüche aus der Verletzung wesentlicher Vertragspflichten.\nWesentliche Vertragspflichten sind solche, deren Erfüllung zur Erreichung des Ziels des Vertrags notwendig ist.\nVon dem Haftungsausschluss ebenfalls ausgenommen ist die Haftung für Schäden, die auf einer vorsätzlichen oder grob fahrlässigen Pflichtverletzung des Anbieters, seiner gesetzlichen Vertreter oder Erfüllungsgehilfen beruhen.\n\n7. Urheberrechte und Markenschutz\n\n7.1 Der Betreiber verfügt über die ausschließlichen urheberrechtlichen Nutzungsrechte an allen, die Websites ausmachenden urheberrechtlichen Werken wie Grafiken, Style-sheets, Layout, Farbgestaltung, Einbindung der Grafiken in das gesamte Layout, Computerbilder, Logos, Webdesign oder sonstige gestalterische Elemente, sowie an der Website als Datenbankwerk gemäß § 4 Abs. 2 UrhG und als Datenbank gemäß § 87a UrhG.\n\n7.2 Die Elemente des Webauftritts von a/bby sind zugunsten des Betreibers markenrechtlich geschützt. Dies gilt insbesondere für Logos und Embleme. Der Betreiber wird mit aller Schärfe des Gesetzes gegen jede Person vorgehen, die Layout, Bilder, Logos, Texte, Daten, Grafiken oder ähnliches Material oder gestalterische Elemente von der Website unbefugt kopiert oder vervielfältigt, verbreitet, öffentlich zugänglich macht oder sonst urheberrechtlich oder markenrechtlich unbefugt nutzt.\n\n7.3 Soweit erforderlich, räumt Ihnen der Betreiber zur Nutzung von a/bby ein einfaches, zeitlich auf die Dauer der Nutzung der Plattform beschränktes sowie örtlich unbeschränktes Nutzungsrecht an den in 7.1 und 7.2 beschriebenen Rechten zur Nutzung in eigenen Projekten ein.\n\nStand der Nutzungsbedingungen: 01.01.2023\n\nexport default ({ children }) => (\n  <MarketingLayout seoTitle=\"Terms of Service\" isMarkdown>\n    {children}\n  </MarketingLayout>\n);\n\nexport const getStaticProps = () => {\n  return {\n    props: {},\n  };\n};\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/a-b-nextjs.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title: \"A/B Testing in Next.js using Edge Middleware\",\n  imageUrl: \"/img/abby-next.png\",\n  publishedAt: \"2023-04-28\",\n};\n\nA/B testing, also known as split testing, is an essential method to improve the user experience and conversion rates on your website. By comparing two or more variations of a page or feature, developers can make informed decisions about which version performs best. In this blog post, we'll explore how to implement A/B testing in Next.js using Edge Middleware and how Abby, a developer-focused A/B testing SaaS, can streamline the process.\n\n## The Concept of A/B Testing\n\nA/B testing involves creating multiple versions of a webpage, each with a different element or set of elements, and then measuring their performance. This could be anything from different layouts, colors, or copy. Visitors are randomly assigned to one of these versions, and their interactions are tracked to determine which version yields better results.\n\nBenefits of A/B testing include:\n\n1. _Data-driven decision-making_: By basing decisions on quantifiable data, you eliminate guesswork and reduce the risk of suboptimal changes.\n2. _Improved conversion rates_: A/B testing enables you to fine-tune your website to encourage specific user actions, increasing conversions.\n3. _Better user experience_: By identifying elements that resonate with your audience, you can create a more engaging and satisfying experience for your users.\n\n## Next.js and Edge Middleware\n\n[Next.js](https://nextjs.org/) is a popular React framework that simplifies the creation of server-rendered applications. One of its key features is Edge Middleware, which runs custom code before a request reaches the actual page or API route. This makes it an ideal solution for implementing A/B testing, as it allows for easy variation assignment and tracking.\n\n## Implementing A/B Testing in Next.js\n\nTo set up A/B testing with Next.js and Edge Middleware, follow these steps:\n\n1. _Create variations_: Design and develop different versions of your webpage or feature.\n2. _Implement Edge Middleware_: In your Next.js application, create a new Edge Middleware function that assigns visitors to a variation.\n3. _Track performance_: Measure the performance of each variation using the desired metrics, such as conversion rates or user engagement.\n\nIn conclusion, A/B testing is a powerful tool to enhance user experience and boost conversion rates. With Next.js and Edge Middleware, implementing A/B testing is straightforward and efficient. And with Abby, developers can take advantage of a tailor-made solution that simplifies the entire A/B testing process.\n\nexport default ({ children }) => (\n  <BlogLayout seoTitle=\"Abby & Next.js\" meta={meta}>\n    {children}\n  </BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/a-b-react.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title: \"A/B Testing in React using Hooks\",\n  imageUrl: \"/img/abby-react.png\",\n  publishedAt: \"2023-04-04\",\n};\n\nA/B testing, also known as split testing, is a widely used technique for optimizing user experiences by comparing the performance of two or more variations of a product or feature. In this blog post, we'll cover the basics of A/B testing, discuss its benefits, and explore how to implement A/B tests in React using the `useAbby` hook. We'll also introduce you to Abby, a powerful SaaS solution for A/B testing, designed specifically for developers.\n\n## What is A/B Testing?\n\nA/B testing is an experimental approach to determining the most effective version of a product, webpage, or feature by exposing different variations to users and measuring their engagement. By comparing key performance indicators (KPIs) such as conversion rates, bounce rates, and average session duration, developers can identify the most successful version and implement it for all users.\n\n## Benefits of A/B Testing\n\nA/B testing offers several benefits to developers and organizations, including:\n\n1. _Data-driven decision-making_: A/B testing allows you to base your decisions on concrete data, eliminating guesswork and reducing the risk of introducing underperforming features.\n2. _Improved user experience_: By testing different variations of your product or feature, you can identify what resonates best with your users and create an experience tailored to their preferences.\n3. _Increased revenue_: Optimized user experiences often lead to higher conversion rates, longer session durations, and increased customer loyalty, ultimately boosting revenue.\n\n## Implementing A/B Testing in React with the useAbby Hook\n\nTo implement A/B testing in your React application, we'll use the `useAbby` hook. This custom hook makes it easy to create and manage A/B tests in your React components. Here's an example of how to use the hook:\n\n```js\nimport { useAbby } from \"lib/abby\";\n\nfunction MyComponent() {\n  const { variant } = useAbby(\"my-test\");\n\n  return (\n    <div>\n      {variant === \"control\" && <ControlComponent />}\n      {variant === \"variant-1\" && <Variant1Component />}\n    </div>\n  );\n}\n```\n\nIn this example, we define an A/B test called \"my-test\" with two variants: \"control\" and \"variant-1\". The `useAbby` hook randomly assigns users to one of the variants and renders the corresponding component.\n\nTo track the performance of each variant, you can use your preferred analytics tool or a dedicated A/B testing platform like Abby.\n\n## Introducing Abby: A SaaS Solution for A/B Testing Made for Developers\n\n[Abby](https://www.tryabby.com) is a developer-focused SaaS platform for A/B testing, offering an intuitive and easy-to-use solution for creating, managing, and analyzing A/B tests. With Abby, you can:\n\n- _Effortlessly create and manage A/B tests_: Abby's simple API allows you to define your A/B tests and variants quickly, giving you more time to focus on building your product.\n- _Integrate with your favorite tools_: Abby seamlessly integrates with popular analytics platforms and data visualization tools, making it easy to analyze your A/B test results and make data-driven decisions.\n- _Optimize your application with confidence_: Abby's robust statistical analysis ensures you have accurate, reliable results, so you can confidently implement the winning variant in your application.\n\nExperience the power of Abby today by visiting [tryabby.com](https://www.tryabby.com) and signing up for a free trial. Transform your A/B testing workflow and make data-driven decisions with ease.\n\n## Advanced A/B Testing Scenarios with Abby and useAbby\n\nIn addition to simple A/B tests, Abby and the `useAbby` hook enable you to handle more advanced scenarios, such as multivariate testing and feature flagging.\n\n### Multivariate Testing\n\nMultivariate testing allows you to test multiple variations of your components simultaneously, providing more granular insights into the impact of different changes. To implement a multivariate test with the `useAbby` hook, simply add more variants:\n\n```javascript\nimport { useAbby } from \"lib/abby\";\n\nfunction MyComponent() {\n  const { variant } = useAbby(\"multivariate-test\");\n\n  return (\n    <div>\n      {variant === \"control\" && <ControlComponent />}\n      {variant === \"variant-1\" && <Variant1Component />}\n      {variant === \"variant-2\" && <Variant2Component />}\n      {variant === \"variant-3\" && <Variant3Component />}\n    </div>\n  );\n}\n```\n\n## Conclusion\n\nA/B testing is a powerful method for optimizing user experiences and driving data-driven decision-making. By leveraging the `useAbby` hook in React, you can easily implement A/B tests and benefit from a flexible, scalable solution for various testing scenarios.\n\nTo supercharge your A/B testing workflow, consider using [Abby](https://www.tryabby.com), a developer-focused SaaS platform built specifically for A/B testing. With its simple API, seamless integrations, and robust statistical analysis, Abby empowers you to optimize your application with confidence.\n\nVisit [https://tryabby.com](https://www.tryabby.com) to sign up for a free trial and experience the benefits of Abby today.\n\nexport default ({ children }) => (\n  <BlogLayout seoTitle=\"Abby & Next.js\" meta={meta}>\n    {children}\n  </BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/feature-flagging-in-modern-development-teams.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title:\n    \"Feature Flagging in Modern Software Development Teams: A Guide to Streamlining Development and Deployment\",\n  imageUrl: \"/img/modern-feature-flags.png\",\n  publishedAt: \"2023-09-28\",\n};\n\nIn the fast-paced world of modern software development, staying ahead of the competition often means delivering new features and improvements to your software at an unprecedented pace. However, rapid development and deployment can lead to a host of challenges, including increased risks, higher complexity, and potential customer dissatisfaction due to bugs and errors. This is where feature flagging comes into play. In this comprehensive guide, we'll explore what feature flagging is, why it's crucial for today's software development teams, and how to implement it effectively.\n\n## What Is Feature Flagging?\n\nFeature flagging, also known as feature toggles or feature switches, is a software development technique that allows developers to enable or disable specific features or code blocks within an application at runtime. These feature flags act as conditional statements that control the visibility and behavior of certain parts of the software. Feature flagging provides developers with greater control and flexibility over the release process and allows them to:\n\n1. **Enable Progressive Rollouts:** Developers can release new features to a small subset of users or specific environments, gradually expanding the release as confidence in the feature grows.\n\n2. **Perform A/B Testing:** By toggling features on and off for different user groups, developers can gather data on how users respond to different variations of the software and make data-driven decisions.\n\n3. **Mitigate Risks:** Feature flags enable developers to quickly disable a feature if it causes critical issues in production, reducing the impact of bugs and errors.\n\n4. **Improve Collaboration:** Cross-functional teams can work collaboratively, with designers, product managers, and developers all contributing to feature development and rollout decisions.\n\n## Why Is Feature Flagging Crucial?\n\nIn today's software development landscape, feature flagging has become a cornerstone of agile and DevOps practices. Here are some key reasons why it's crucial for modern software development teams:\n\n### 1. Continuous Delivery and Deployment\n\nFeature flagging empowers teams to adopt continuous delivery and deployment practices. Instead of bundling multiple features into a monolithic release, teams can release features incrementally, reducing the risk associated with large releases and accelerating time to market.\n\n### 2. Risk Management\n\nSoftware development is never without risks. Feature flags provide a safety net by allowing teams to turn off features that are causing issues in production. This minimizes the impact on end-users and helps maintain a positive user experience.\n\n### 3. A/B Testing and User Feedback\n\nFeature flagging facilitates A/B testing, enabling teams to gather valuable user feedback and make data-driven decisions about which features to fully enable or enhance. This ensures that the software meets users' expectations and needs.\n\n### 4. Faster Bug Fixes\n\nWhen bugs or issues are detected in a feature, developers can quickly disable it using feature flags while they work on a fix. This allows teams to maintain a stable application while addressing problems efficiently.\n\n### 5. Team Collaboration\n\nFeature flags encourage collaboration among different teams within an organization. Product managers, designers, and developers can work together to plan and execute feature releases, ensuring alignment with business goals and user needs.\n\n## Implementing Feature Flagging Effectively\n\nNow that we understand the importance of feature flagging let's delve into how to implement it effectively in your software development process:\n\n### 1. Define Clear Objectives\n\nBefore implementing feature flags, establish clear objectives for their use. Determine what you want to achieve with feature flagging, whether it's reducing deployment risks, enabling A/B testing, or improving collaboration. Clear objectives will guide your implementation strategy.\n\n### 2. Choose the Right Feature Flagging System\n\nThere are various feature flagging tools and libraries available, such as LaunchDarkly, Split.io, and Rollout.io, which provide feature flagging as a service. Evaluate these options to find the one that best fits your needs, taking into account scalability, ease of use, and integration capabilities.\n\n### 3. Develop a Feature Flagging Strategy\n\nCreate a feature flagging strategy that outlines how and where you'll use feature flags in your application. Decide whether you'll use feature flags for front-end or back-end changes, what flags will control, and how they'll be named and documented.\n\n### 4. Implement Monitoring and Analytics\n\nIntegrate monitoring and analytics into your feature flagging solution. This will allow you to track the performance of different feature variations and gather valuable insights from user interactions.\n\n### 5. Document Your Flags\n\nThoroughly document your feature flags to ensure that your team members understand their purpose and usage. Clear documentation helps prevent misunderstandings and misconfigurations.\n\n### 6. Test Rigorously\n\nBefore deploying feature flags in production, thoroughly test them in various environments, including staging and testing environments. This helps identify potential issues and ensures that the flags work as expected.\n\n### 7. Monitor and Iterate\n\nContinuously monitor the performance and impact of your feature flags in production. Collect feedback from users and stakeholders, and be prepared to iterate on your feature flagging strategy based on this feedback.\n\n## Conclusion\n\nFeature flagging is a powerful technique that empowers modern software development teams to deliver features faster, mitigate risks, and make data-driven decisions. By implementing feature flagging effectively, you can streamline your development and deployment processes, enhance collaboration across teams, and ultimately deliver a better user experience. Embrace feature flagging as a key practice in your software development toolkit to stay competitive and agile in today's ever-evolving tech landscape.\n\nexport default ({ children }) => (\n  <BlogLayout\n    seoTitle=\"Feature Flagging in Modern Software Development Teams\"\n    meta={meta}\n  >\n    {children}\n  </BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/feature-flags-for-project-managers.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title: \"Why you as a Project Manager should know about Feature Flags\",\n  imageUrl: \"/img/featureflags-for-pms.png\",\n  publishedAt: \"2023-10-06\",\n  excerpt:\n    \"Discover the power of Feature Flags and Remote Config for agile software development. Control feature releases, toggle functionalities, and enhance collaboration between Devs and PMs. Find the perfect solution for your team's needs and make your developers happy with Feature Flags. Try Abby, the Open Source Feature Flagging Tool, at tryabby.com.\",\n};\n\n## Prologue\n\nYour team is a modern, agile software development team that develops an online shop for furniture. You work in sprints and release a new version at the end of a two-week sprint. Your team is working hard to finish all the new features within this sprint so it can be released in time. You've set up a staging environment besides your production deployment so that you can safely test features before the release that you can be sure that there will never be bugs on production (obviously your team never produces bugs either way 😉)\n\nThis sprint your team worked on two major things along smaller bugs & features. The first one being a new payment provider which users can use to buy products and the second one is a new suggestion algorithm for products which hopefully highly increases your sales.\n\nThe first week passes and both features are implemented in a breeze. The code is written, approved, and merged which means you can check it out on the staging environment. It's Wednesday and you're checking out a couple of bugs that have been fixed as well as the new big features. The bugs seem to be fixed, some of them were bugging you for quite some time so you're happy to release them to production tomorrow.\n\nYou start to test the new suggestion algorithm and it quite frankly doesn't seem right. Are we sure that people that bought a dining room table also bought another dining room table as well as a sofa? I thought we should recommend chairs here along the table. You also try to pay with the new payment provider which just gives you a \"something went wrong, please try again later.\" Bummer! \"We can't release this,\" you think. \"But we really need to deploy the bugfixes; we're dropping paying customers with them!\"\n\nAnd so you mentally prepare yourself to either ask the devs to roll back the new features or postpone the release.\n\nBoth options don't feel right you think. What if there would be only one way that I can have the power of what is released and what not. And then you remember that you read a blog post about \"Why you as a Project Manager should know about Feature Flags & Remote Config.\"\n\n## Introducing Feature Flags\n\nThere aren't many things that both Devs and PMs like equally as much. Feature Flags might be one of them. And they're pretty simple. Just like the name suggests, they are pretty much just a toggle to turn a feature on or off. The easiest version of that would just adding a block in your code which then does exactly this. This is the easiest version of Feature Flags and has been around for quite some time. This gives the developers (and unfortunately only the developers) the chance to quickly toggle between different implementations of their code and enable or disable features and test out new algorithms. Even though this approach is super easy and doesn't require any additional services, it has some downsides:\n\n- You need a new release to enable or disable features\n- It requires a dev to toggle it\n- You can't easily get an overview of what feature is enabled or disabled\n- The flag is turned on / off for every environment\n\nBut I wouldn't be writing about this if this was the only solution since this solution probably doesn't make you happy and doesn't fully satisfy your needs.\n\n## Feature Flags, but better\n\nBecause you're not the first one not to be satisfied with this approach, there have been many people thinking how you can solve this and the solution to this problem is quite simple:\n\nAn online dashboard which allows you to easily see what features are enabled or disabled but also gives you the opportunity to remote toggle each flag by yourself!\n\nSome tools even give you the option to define and model your environments in their dashboard. So you can go ahead and add Staging and Production in there and toggle the features on or off for each environment. Doesn't that sound lovely? Let's have a look at the downsides of the old solution:\n\n- You need a new release to enable or disable features → Nope!\n- It requires a dev to toggle it → Nope, You can do it!\n- You can't easily get an overview of what feature is enabled or disabled → Oh, you can now!\n- The flag is turned on / off for every environment → Nope, you decide!\n\nSo this could have been the end of the blog post since it's the perfect solution, right? But there is actually more to it. The service obviously has some downsides to it as well\n\n- Costs money 🤑\n- You devs might not like it\n\n## Better Feature Flags, but better\n\nThe first downside is undeniable. Someone will charge for their service and if they are not charging you, you will probably pay with your data. So I guess we just need to swallow that pill to enjoy the improvements that a service like this gives us. And also consider the dev time you saved 😉\n\nBut the other downside is in fact optional since this problem can be solved. But first of all let me explain why your devs might not like it:\n\nEvery time you integrate a new service or a new tool you will need to install some kind of SDK (Software Development Kit) in your code to use it. This is always a bit tricky since you're adding a \"blackbox\" to your code because you're essentially putting someone else's code into yours. The other downside is that the SDK might just be bad at all (Fun exercise: Ask your devs about some third party SDKs they have to use and if they like them)\n\nSo you know that you will need to find a service which makes your devs happy as well since I've claimed the following at the beginning of this post:\n\n> There aren't many things that both Devs and PMs like equally as much. Feature Flags might be one of them.\n\nAnd I'm sure that you will find a nice solution together which will fully satisfy your needs and makes the devs happy. Because happy devs means happy life (doesn't rhyme, but still true)\n\nAnd if you can't find anything or just want to see a tool which checks all those marks, you should check out my Open Source Feature Flagging Tool Abby. It is built for developers and PMs like you by combining an amazing SDK that Devs love as well as a super simple interface with just the features you need and nothing more that clutters it and makes you less productive. You can try it out for free at [https://www.tryabby.com](http://www.tryabby.com).\n\nexport default ({ children }) => (\n  <BlogLayout meta={meta}>{children}</BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/feature-flags-next.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title: \"Feature Flags in Next.js\",\n  imageUrl: \"/img/feature-flags-next.png\",\n  publishedAt: \"2023-04-29\",\n};\n\n## What are Feature Flags\n\nFeature Flags (or Feature Toggles) are an important tool when it comes to deploying changes and updates to an application.\nWith a Feature Flag, developers can easily toggle on or off different features and updates, allowing for easier testing and deployment of changes.\nThis technique is especially useful for applications that are constantly being updated and changed and has become popular with [Trunk Based Development](https://trunkbaseddevelopment.com/feature-flags/).\n\nFeature Flags are used to selectively enable or disable certain features of an application.\nThis makes it easy to test new features and updates without having to actually deploy them to production.\nWith Feature Flags, developers can easily turn off certain features if they are causing problems or if they are not ready for production yet.\n\n## Stages of Feature Flags\n\n### Hardcoded\n\nFeature Flags can be used in a variety of different ways, depending on the needs of the application.\nThe most basic way to use a Feature Flag is by just using a boolean variable that is either true or false and hard coded:\n\n```ts\nconst featureFlag = true;\n\nfunction MyButton() {\n  // lets try if an actual button works, too\n  if (featureFlag) {\n    return <button>Click Me</button>;\n  }\n  // TODO: use a real button here\n  return <div role=\"button\">Click Me</div>;\n}\n```\n\n#### Pros\n\nThe pros of using a hardcoded Feature Flag are that it is very simple and easy to implement.\nThey don't require any additional libraries or dependencies and can be used in any application.\n\n#### Cons\n\nThe cons of using a hardcoded Feature Flag are that it is not very flexible.\nYou will need to update the code every time you want to change the value of the Feature Flag and therefore re-deploy the application.\nThis also means that only developers can change the value of the Feature Flag, which can be a problem if you want to give non-developers access to the Feature Flag.\nThis way of implementing Feature Flags will also give you the same results for all environments, which can be a problem if you want to test the Feature Flag in different environments.\n\n### Environment Variables\n\nAnother way to implement Feature Flags is by using environment variables.\nThis way of implementing Feature Flags is very similar to the hardcoded way, but instead of using a boolean variable, we will use an environment variable:\n\n```ts\nconst featureFlag = process.env.FEATURE_FLAG === \"true\";\n\nfunction MyButton() {\n  // lets try if an actual button works, too\n  if (featureFlag) {\n    return <button>Click Me</button>;\n  }\n  // TODO: use a real button here\n  return <div role=\"button\">Click Me</div>;\n}\n```\n\n#### Pros\n\nThe pros of using environment variables for Feature Flags are that they are very flexible.\nYou can easily change the value of the Feature Flag without having to re-deploy the application.\nThis way of implementing Feature Flags will also give you different results for different environments, which can be useful if you want to test the Feature Flag in different environments.\n\n#### Cons\n\nThis implementation is a good middleground between the hardcoded way and the full-services way, but it still has some drawbacks.\nThe biggest drawback is that you will need to update the environment variable every time you want to change the value of the Feature Flag.\nThis can be a problem if you want to give non-developers access to the Feature Flag. It can also be a problem if there is no simple way of updating\nenvironment variables in your application. This implementation also relies on the environment variables being set correctly,\nwhich can lead to errors when having typos in either the name of the variable or the value.\n\n### Services\n\nThe most flexible way of implementing Feature Flags is by using a Service such as [Abby](https://www.tryabby.com).\nThis way of implementing Feature Flags is very similar to the environment variable way, but instead of using an environment variable, we will use a service:\n\n```ts\nimport { useFeatureFlag, getFeatureFlagValue } from \"lib/abby\";\n\nfunction MyButton() {\n  const featureFlag = useFeatureFlag(\"FEATURE_FLAG\");\n\n  // lets try if an actual button works, too\n  if (featureFlag) {\n    return <button>Click Me</button>;\n  }\n  // TODO: use a real button here\n  return <div role=\"button\">Click Me</div>;\n}\n```\n\n#### Pros\n\nThe pros of using a service for Feature Flags are that they are very flexible.\nIt gives you the ability to change the value of the Feature Flag without having to re-deploy the application.\nYou can also define different values for different environments, which can be useful if you want to test the Feature Flag in different environments.\nToggling is Feature Flag in a Service like Abby is also a breeze, as you can just toggle it on or off in the dashboard which means that non-devs\ncan also easily toggle the Feature Flag.\n\nThe biggest benefit of using Abby is the developer experience and tight integration with Next.js.\nAbby is fully typed and provides a hook to easily use Feature Flags in your application. It also allows include your Feature Flags\non the Server whether you are using SSR or SSG.\n\n#### Cons\n\nThe cons of using a service for Feature Flags are that it requires you to use a third-party service.\nIt also means that you will need to pay for the service, which can be a problem if you are on a tight budget.\nAbby offers a generous free tier, but if you need more than that, you will need to pay for it.\n\nUsing Feature Flags with the `useFeatureFlag` hook from Abby is a great way to quickly and easily deploy changes and updates to a Next.js application.\nWith this hook, developers can easily toggle on or off different features and updates, allowing for easier testing and deployment of changes.\n\nexport default ({ children }) => (\n  <BlogLayout seoTitle=\"Abby & Next.js\" meta={meta}>\n    {children}\n  </BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/honest-marketing.mdx",
    "content": "import { BlogLayout } from \"components/BlogLayout\";\n\nexport const meta = {\n  title: \"Honest Marketing: Why you should or should not use Abby\",\n  imageUrl: \"/img/cut-the-bs.png\",\n  publishedAt: \"2023-12-17\",\n  excerpt:\n    \"Abby's Founder Tim shares his honest thoughts about Abby and why you should or should not use it.\",\n};\n\n# My Honest Thoughts about Abby\n\nThis might sound weird to you since being brutally honest probably isn’t the most common marketing strategy, but it’s a strategy I like and want to have for my product.\n\n## Abby's Core Features\n\n### Feature Flags\n\nI think feature flags are amazing. They help me to feel sane when developing features within teams I’ve worked in. The fact that you can merge a feature into your main branch and release it without being blocked is just amazing. It makes me feel good and also helps to keep the team’s velocity up. Your QA engineer is happy since he can test features safely without any pressure since they can just test whenever there is time and toggle that feature on or off. It also helps you with testing out features in prod and when something goes wrong (which obviously never happens) you could just toggle that flag off again and go back to the old behavior. Using feature flags made me feel better and made me feel better when it was my time on-call. It’s like a little safety net.\n\nHowever, adding feature flags will add a little complexity to your process and code as well. You will need to:\n\n1. identify that a feature will be behind a feature flag when creating the ticket\n2. add the feature flag into your code and maybe even keep the old code around\n3. remove the feature flag at some point (I feel like this needs more awareness)\n\nI personally think that you will need to think about the effort-to-value ratio here. Adding feature flags can be extremely useful but also feel like a lot of overhead. I would say choose wisely but choose feature flags!\n\n### Remote Config\n\nThe Remote Config is kinda like the Feature Flags’s sibling. They’re similar but different. They both provide you with a way of remotely altering parts of your code. While feature flags are just simple booleans, remote config variables allow you to have Strings, Numbers, and also JSON objects.\n\nI personally found this to be a more niche feature. Remote Config Variables are more powerful but with great power comes great complexity. Remote Config Variables shift the focus more towards Abby. Rather than two values (true/false) you can now have potentially unlimited values (Note: There are so many limitations such as a maximum integer size, but there are way more than two potential values). They are almost like a super rudimentary CMS. They obviously lack features you might expect from a CMS but they come with simplicity and if you have feature flags enabled it’s quite easy to understand Remote Config Variables. I like to think about them as Environment Variables on Steroids with a small runtime overhead but type safety!\n\n### A/B Tests\n\nFun Fact: A/B Tests were the main thing when I first started Abby. Back then it was called A/BBY including the A/B wordplay.\n\nI think A/B tests are truly amazing in theory. The fact that you can use them to make data-driven decisions is quite cool and can potentially eliminate a lot of time arguing what to do and what’s the best way of doing that. But: There are some caveats with A/B testing. First of all: You will need a certain amount of users to get significant results. There is some fancy math in this but just ask yourself: Do you fully trust the ratings on Amazon if there are only 10 of them with 5 stars overall? I wouldn’t!\n\nBut that’s a general issue with A/B Testing. It’s not something Abby has. But Abby offers you something that most tools don’t. Abby has a radical approach. We don’t have a fancy WYSIWYG editor where non-technical people can implement A/B Tests by altering the content on your landing page. With Abby you can define an A/B test and then it’s part of the development process to implement them. Right in the code. You can programmatically change what you want to get displayed based on the current variant.\n\nThis approach will cost you a little more developer time upfront but it has two main benefits:\n\n- Your tests are more robust: Since those are actually part of your code you’re not reliant on some funky selectors which are often used tools\n- Happy Developers: I haven’t met a single developer to that day who likes any external script that alters their code in production. It’s hell to debug as well\n\n### Open Source & Privacy\n\nI really don’t like putting my personal information in someone else’s tool not knowing what will happen to that data. Getting the next unwanted newsletter. And because I don’t like that I tried to be as open and respectful as possible with Abby. Abby’s code is fully open-source. It means you can just go ahead and have a look into the repo and see my code. This can help to ensure that your data and your user’s data will be safe. It can also make your day by having a good laugh when you see my code.\n\nAbby’s license gives you the option to self-host it as well. While I personally think that self-hosting isn’t worth it for most people, there are definitely some cases where it makes sense and I’m super happy to help you with that :)\n\n## Conclusion\n\nI built Abby and will always continue building it because I think it provides value. I’ve built feature flags in-house for multiple projects and the repetitive work was draining and expensive. I was unsatisfied with the way A/B tests work but I think the idea behind them is cool. Therefore I integrated them in Abby to make them cool.\n\nWhen you decide to use Abby professionally you will probably need a paid plan at some point. But I hope that the value it provides is higher than the cost.\n\nAbby is a SaaS. Like every one SaaS it means that you are reliant on another service. Even though Abby has an integrated client-side fallback system which means that your application will never crash if Abby is ever down (even though it hasn’t since we launched). But your application will behave differently as if Abby was running.\n\nBest,\nTim\n\nexport default ({ children }) => (\n  <BlogLayout meta={meta}>{children}</BlogLayout>\n);\n"
  },
  {
    "path": "apps/web/src/pages/tips-and-insights/index.tsx",
    "content": "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { MarketingLayout } from \"components/MarketingLayout\";\nimport dayjs from \"dayjs\";\nimport type { GetStaticProps } from \"next\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport type { NextPageWithLayout } from \"../_app\";\n\nexport type PostMeta = {\n  title: string;\n  imageUrl: string;\n  publishedAt: string;\n  slug: string;\n  excerpt?: string;\n};\n\ntype Props = {\n  posts: PostMeta[];\n};\n\nconst BlogPage: NextPageWithLayout<Props> = ({ posts }) => {\n  return (\n    <div className=\"container px-6 pb-8 md:px-16\">\n      <h1 className=\"mb-4 text-5xl font-bold\">Abby Blog</h1>\n      <h2 className=\"mb-4 text-xl text-muted-foreground\">\n        Stay up to date with the latest news and updates\n      </h2>\n      <section className=\"grid grid-cols-1 gap-12 md:grid-cols-2\">\n        {posts.map((p) => (\n          <Link\n            key={p.slug}\n            href={`/tips-and-insights/${p.slug}`}\n            className=\"group\"\n          >\n            <div className=\"relative aspect-video w-full\">\n              <Image\n                src={p.imageUrl}\n                alt={p.title}\n                className=\"rounded-md object-cover transition-all duration-300 group-hover:scale-105\"\n                fill\n              />\n            </div>\n            <span className=\"mb-2  mt-4 block text-muted-foreground\">\n              {dayjs(p.publishedAt).format(\"MMMM, DD, YYYY\")}\n            </span>\n            <h3 className=\"text-xl font-medium\">{p.title}</h3>\n          </Link>\n        ))}\n      </section>\n    </div>\n  );\n};\n\nBlogPage.getLayout = (page) => {\n  return <MarketingLayout>{page}</MarketingLayout>;\n};\n\nexport const getStaticProps: GetStaticProps = async () => {\n  const files = await fs.readdir(\n    path.resolve(process.cwd(), \"src\", \"pages\", \"tips-and-insights\")\n  );\n\n  const posts: Array<PostMeta> = await Promise.all(\n    files\n      .filter((file) => file.endsWith(\".mdx\"))\n      .map(async (post) => {\n        const meta = await import(`./${post}`).then((mod) => mod.meta);\n        return {\n          ...meta,\n          slug: post.replace(\".mdx\", \"\"),\n        };\n      })\n  );\n\n  return {\n    props: {\n      posts: posts.sort((a, b) => b.publishedAt.localeCompare(a.publishedAt)),\n    },\n  };\n};\n\nexport default BlogPage;\n"
  },
  {
    "path": "apps/web/src/pages/welcome.tsx",
    "content": "import Cal, { getCalApi } from \"@calcom/embed-react\";\nimport { DISCORD_INVITE_URL } from \"components/Footer\";\nimport { Input } from \"components/Input\";\nimport { RadioGroupComponent } from \"components/RadioGroup\";\nimport { Button } from \"components/ui/button\";\nimport {\n  Card,\n  CardContent,\n  CardDescription,\n  CardFooter,\n  CardHeader,\n  CardTitle,\n} from \"components/ui/card\";\nimport { Label } from \"components/ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"components/ui/select\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { cn } from \"lib/utils\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { GetServerSideProps, InferGetServerSidePropsType } from \"next\";\nimport { useSession } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { useEffect } from \"react\";\nimport { BsCodeSlash } from \"react-icons/bs\";\nimport {\n  FaAngular,\n  FaPhp,\n  FaReact,\n  FaVuejs,\n  FaWordpress,\n} from \"react-icons/fa\";\nimport { TbBrandNextjs, TbBrandSvelte } from \"react-icons/tb\";\nimport { Wizard, useWizard } from \"react-use-wizard\";\nimport { getServerAuthSession } from \"server/common/get-server-auth-session\";\nimport { prisma } from \"server/db/client\";\nimport { trpc } from \"utils/trpc\";\nimport { create } from \"zustand\";\n\nconst ROLES = [\n  \"Frontend Engineer\",\n  \"Backend Engineer\",\n  \"Fullstack Engineer\",\n  \"DevOps Engineer\",\n  \"Product Manager\",\n  \"Designer\",\n  \"Data Scientist\",\n  \"Marketing\",\n  \"Other\",\n] as const;\n\nconst useOnboardingStore = create<{\n  name: string;\n  profession: string;\n  technologies: string[];\n  experienceLevelFlags: number;\n  experienceLevelTests: number;\n  setName: (name: string) => void;\n  setProfession: (profession: string) => void;\n  toggleTechnology: (technology: string) => void;\n  setExperienceLevelFlags: (experienceLevelFlags: number) => void;\n  setExperienceLevelTests: (experienceLevelTests: number) => void;\n}>((set, get) => ({\n  name: \"\",\n  profession: ROLES[0],\n  technologies: [],\n  experienceLevelFlags: 1,\n  experienceLevelTests: 1,\n  setName: (name: string) => set({ name }),\n  setProfession: (profession: string) => set({ profession }),\n  toggleTechnology: (technology: string) => {\n    const currentTechnologies = get().technologies;\n    if (currentTechnologies.includes(technology)) {\n      set({\n        technologies: currentTechnologies.filter((t) => t !== technology),\n      });\n    } else {\n      set({ technologies: [...currentTechnologies, technology] });\n    }\n  },\n  setExperienceLevelFlags: (experienceLevelFlags: number) =>\n    set({ experienceLevelFlags }),\n  setExperienceLevelTests: (experienceLevelTests: number) =>\n    set({ experienceLevelTests }),\n}));\n\nconst FormItem = ({\n  children,\n  labelText,\n}: { children: React.ReactNode; labelText: string }) => (\n  <div className=\"grid w-full max-w-sm items-center gap-1.5\">\n    <Label>{labelText}</Label>\n    {children}\n  </div>\n);\n\nfunction WizardFooter() {\n  const { previousStep, nextStep, isFirstStep, isLastStep, activeStep } =\n    useWizard();\n  const { name, technologies } = useOnboardingStore();\n\n  // Variable to check if next button should be disabled on current step\n  const nextDisabled =\n    (activeStep === 0 && name.length < 2) ||\n    (activeStep === 2 && technologies.length === 0);\n\n  return (\n    <CardFooter className=\"flex justify-between\">\n      <Button\n        disabled={isFirstStep}\n        onClick={previousStep}\n        className={cn(isFirstStep && \"invisible\")}\n      >\n        Back\n      </Button>\n      <Button\n        disabled={nextDisabled}\n        onClick={nextStep}\n        className={cn(isLastStep && \"invisible\")}\n      >\n        Next\n      </Button>\n    </CardFooter>\n  );\n}\n\nfunction Step1() {\n  const { name, setName } = useOnboardingStore();\n  return (\n    <motion.div\n      initial={{ opacity: 0, scale: 0.95 }}\n      animate={{ opacity: 1, scale: 1 }}\n      exit={{ opacity: 0, scale: 0.95 }}\n    >\n      <CardHeader>\n        <CardTitle>Welcome to Abby</CardTitle>\n        <CardDescription>\n          Thank you very much for signing up for Abby\n        </CardDescription>\n      </CardHeader>\n      <CardContent>\n        <label htmlFor=\"name\">\n          <span>Name</span>\n          <Input\n            name=\"name\"\n            value={name}\n            onChange={(e) => setName(e.target.value)}\n          />\n        </label>\n      </CardContent>\n    </motion.div>\n  );\n}\n\nconst oneToFiveOptions = Array.from({ length: 5 }, (_, i) => i + 1).map(\n  (i) => ({\n    label: i.toString(),\n    value: i.toString(),\n  })\n);\n\nfunction Step2() {\n  const {\n    profession,\n    setProfession,\n    experienceLevelFlags,\n    experienceLevelTests,\n    setExperienceLevelTests,\n    setExperienceLevelFlags,\n  } = useOnboardingStore();\n\n  return (\n    <motion.div\n      initial={{ opacity: 0, scale: 0.95 }}\n      animate={{ opacity: 1, scale: 1 }}\n      exit={{ opacity: 0, scale: 0.95 }}\n    >\n      <CardHeader>\n        <CardTitle>About you</CardTitle>\n        <CardDescription>Tell us more about you</CardDescription>\n      </CardHeader>\n      <CardContent className=\"flex flex-col space-y-5\">\n        <FormItem labelText=\"Your current role\">\n          <Select value={profession} onValueChange={setProfession}>\n            <SelectTrigger className=\"-ml-1\">\n              <SelectValue placeholder=\"Role\" />\n            </SelectTrigger>\n            <SelectContent>\n              {ROLES.map((role) => (\n                <SelectItem\n                  key={role}\n                  onClick={() => setProfession(role)}\n                  value={role}\n                >\n                  {role}\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </FormItem>\n        <FormItem labelText=\"How would you rate your experience with Feature Flags\">\n          <RadioGroupComponent\n            items={oneToFiveOptions}\n            value={experienceLevelFlags.toString()}\n            onChange={(value) => setExperienceLevelFlags(Number(value))}\n          />\n          <small className=\"text-xs text-gray-400\">\n            1 is no experience - 5 is very frequent usage\n          </small>\n        </FormItem>\n        <FormItem labelText=\"How would you rate your experience with A/B Testing\">\n          <RadioGroupComponent\n            items={oneToFiveOptions}\n            value={experienceLevelTests.toString()}\n            onChange={(value) => setExperienceLevelTests(Number(value))}\n          />\n          <small className=\"text-xs text-gray-400\">\n            1 is no experience - 5 is very frequent usage\n          </small>\n        </FormItem>\n      </CardContent>\n    </motion.div>\n  );\n}\n\nconst TECHNOLOGIES = [\n  {\n    name: \"React (CRA/Vite)\",\n    icon: FaReact,\n  },\n  {\n    name: \"Next.js\",\n    icon: TbBrandNextjs,\n  },\n  {\n    name: \"Vue\",\n    icon: FaVuejs,\n  },\n  {\n    name: \"Angular\",\n    icon: FaAngular,\n  },\n  {\n    name: \"Svelte\",\n    icon: TbBrandSvelte,\n  },\n  {\n    name: \"Wordpress\",\n    icon: FaWordpress,\n  },\n  {\n    name: \"PHP\",\n    icon: FaPhp,\n  },\n  {\n    name: \"Other\",\n    icon: BsCodeSlash,\n  },\n] satisfies Array<{\n  name: string;\n  icon: <P extends { className?: string }>(\n    props: P\n  ) => React.ReactElement<P, string | React.JSXElementConstructor<P>> | null;\n}>;\n\nfunction Step3() {\n  const { handleStep } = useWizard();\n  const { technologies, toggleTechnology } = useOnboardingStore();\n  const onboardUserMutation = trpc.user.onboardUser.useMutation();\n  const { update } = useSession();\n\n  handleStep(async () => {\n    await update({\n      name: useOnboardingStore.getState().name,\n      hasCompletedOnboarding: true,\n    });\n    return onboardUserMutation.mutateAsync(useOnboardingStore.getState());\n  });\n\n  return (\n    <motion.div\n      initial={{ opacity: 0, scale: 0.95 }}\n      animate={{ opacity: 1, scale: 1 }}\n      exit={{ opacity: 0, scale: 0.95 }}\n    >\n      <CardHeader>\n        <CardTitle>Technical Background</CardTitle>\n        <CardDescription>\n          What technologies do you use currently?\n        </CardDescription>\n      </CardHeader>\n\n      <CardContent className=\"flex flex-col space-y-5\">\n        <div className=\"grid grid-cols-4 gap-4\">\n          {TECHNOLOGIES.map(({ name, icon: Icon }) => (\n            <button\n              key={name}\n              type=\"button\"\n              className={cn(\n                \"flex aspect-square w-full flex-col items-center justify-center space-y-3 rounded-sm border border-gray-600 p-2 transition-colors hover:bg-ab_primary-background\",\n                \"data-[selected='true']:border-white\"\n              )}\n              data-selected={technologies.includes(name)}\n              onClick={() => {\n                toggleTechnology(name);\n              }}\n            >\n              <Icon className=\"h-6 w-6\" />\n              <p className=\"font-medium\">{name}</p>\n            </button>\n          ))}\n        </div>\n      </CardContent>\n    </motion.div>\n  );\n}\n\nfunction Step4() {\n  return (\n    <motion.div\n      initial={{ opacity: 0, scale: 0.95 }}\n      animate={{ opacity: 1, scale: 1 }}\n      exit={{ opacity: 0, scale: 0.95 }}\n    >\n      <CardHeader>\n        <CardTitle>You&apos;re ready to go!</CardTitle>\n        <CardDescription>\n          Thank you very much for signing up to Abby. You&apos;re now ready to\n          start using Abby.\n        </CardDescription>\n      </CardHeader>\n      <CardContent className=\"mt-12 text-lg\">\n        <p>\n          If you have any questions, feel free to join our{\" \"}\n          <Link className=\"text-ab_accent-background\" href={DISCORD_INVITE_URL}>\n            Discord\n          </Link>{\" \"}\n          or book a free 1:1 onboarding session with us.\n          <br />\n          <br />\n          <Cal\n            namespace=\"abby-onboarding\"\n            calLink=\"cstrnt/abby-onboarding\"\n            style={{ width: \"100%\", height: \"100%\", overflow: \"scroll\" }}\n          />\n        </p>\n        <Link href=\"/projects\">\n          <Button className=\"mx-auto mt-12 w-[150px] flex items-center\">\n            Go to Abby <ChevronRight size={18} />\n          </Button>\n        </Link>\n      </CardContent>\n    </motion.div>\n  );\n}\n\nexport default function WelcomePage(\n  props: InferGetServerSidePropsType<typeof getServerSideProps>\n) {\n  useEffect(() => {\n    useOnboardingStore.getState().setName(props.user.name ?? \"\");\n  }, [props.user.name]);\n\n  useEffect(() => {\n    (async () => {\n      const cal = await getCalApi({ namespace: \"abby-onboarding\" });\n      cal(\"ui\", {\n        theme: \"dark\",\n        styles: { branding: { brandColor: \"#f9a8d4\" } },\n        hideEventTypeDetails: false,\n        layout: \"month_view\",\n      });\n    })();\n  }, []);\n\n  return (\n    <main className=\"flex min-h-screen items-center justify-center bg-ab_primary-background text-ab_primary-foreground\">\n      <Card className=\"max-w-[80vw] min-w-[500px]\">\n        <Wizard\n          footer={<WizardFooter />}\n          wrapper={<AnimatePresence mode=\"wait\" />}\n        >\n          <Step1 />\n          <Step2 />\n          <Step3 />\n          <Step4 />\n        </Wizard>\n      </Card>\n    </main>\n  );\n}\n\nexport const getServerSideProps = (async (ctx) => {\n  const session = await getServerAuthSession(ctx);\n\n  if (!session?.user) {\n    throw new Error(\"No session\");\n  }\n\n  try {\n    const user = await prisma.user.findUnique({\n      where: {\n        id: session.user.id,\n      },\n    });\n\n    if (!user) {\n      throw new Error(\"No user\");\n    }\n\n    if (user.hasCompletedOnboarding) {\n      return {\n        redirect: {\n          destination: \"/projects\",\n          permanent: false,\n        },\n      };\n    }\n\n    return {\n      props: {\n        user: {\n          name: user.name,\n        },\n      },\n    };\n  } catch (_error) {\n    return {\n      redirect: {\n        destination: \"/login\",\n        permanent: false,\n      },\n    };\n  }\n}) satisfies GetServerSideProps;\n"
  },
  {
    "path": "apps/web/src/seo/SeoDescriptions.ts",
    "content": "type SeoProps = {\n  metaDescription: string;\n  metaTitle: string;\n};\n\ntype Layouts = \"Marketing\" | \"Blog\" | \"Integrations\" | \"DashBoard\" | \"Docs\";\n\nexport function getSeo(pageName: string, layoutName: Layouts) {\n  switch (layoutName) {\n    case \"Blog\":\n      return getBlogLayout(pageName);\n    default:\n      return getMarketingSeo(pageName);\n  }\n}\n\nexport function getMarketingSeo(pageName: string): SeoProps {\n  const normalizedKey = pageName.startsWith(\"/\") ? pageName : `/${pageName}`;\n  switch (normalizedKey) {\n    case \"/\":\n      return {\n        metaTitle: \"Type-Safe Feature Flags and Flexible Remote Config | Abby \",\n        metaDescription:\n          \"Unlock Agile Development with Abby: The Ultimate Open Source Feature Flagging Solution. Elevate Your Coding with Privacy-Centric, User-Friendly Tools & Advanced APIs!\",\n      };\n    case \"/login\":\n      return {\n        metaTitle:\n          \"Type-Safe Feature Flags and Flexible Remote Config| Abby Log in\",\n        metaDescription:\n          \"Log in to our free feature flagging tool designed specifically for developers. With open source software, it offers easy and fast implementation, allowing you to perform feature testing and utilize feature flags. Start optimizing your website or application with our free tool today.\",\n      };\n    case \"/signup\":\n      return {\n        metaTitle: \"Feature Flags and feature testing  | Abby Log in\",\n        metaDescription:\n          \"Sign Up to our free feature flagging tool designed specifically for developers. With open source software, it offers easy and fast implementation, allowing you to perform feature testing and utilize feature flags. Start optimizing your website or application with our free tool today.\",\n      };\n    case \"/devtools\":\n      return {\n        metaTitle:\n          \"Learn about A/B testing tools and feature flags | Abby Documentation\",\n        metaDescription:\n          \"Learn about the implementation of Abbys, open-source software that is easy and fast to implement. Discover how feature flags can help you with feature testing and explore various developer tools.\",\n      };\n    case \"/imprint\":\n      return {\n        metaTitle:\n          \"Type-Safe Feature Flags and Flexible Remote Config | Abby Legal Information\",\n        metaDescription:\n          \"Official imprint of Abby, the open-source feature flagging  tool. Find our legal information and get in touch. We offer feature flagging and ab testing solutions with clear analytics.\",\n      };\n    case \"/tips-and-insights\":\n      return {\n        metaTitle:\n          \"Type-Safe Feature Flags and Flexible Remote Config| Abby Tips&Insights\",\n        metaDescription:\n          \"Discover tips and insights about open-source software, feature flags, Next.js, and A/B testing in React. Learn how to effectively use these dev tools for feature testing and optimizing your software development process.\",\n      };\n    case \"/tips-and-insights/a-b-react\":\n      return {\n        metaTitle: \"A/B Testing in React using Hooks | Abby Tips & Insights\",\n        metaDescription:\n          \"Learn about implementing A/B testing in React using hooks with Abby. Understand the benefits of A/B testing and how to use the use Abby hook for improved user experience and data-driven decision-making.\",\n      };\n    case \"/contact\":\n      return {\n        metaTitle: \"Q&A regarding Abby | Abby Contact\",\n        metaDescription:\n          \"Contact Abby, an open-source feature flagging tool, for all your questions and needs related to feature flags, and feature testing. Optimize your software with confidence.\",\n      };\n    case \"/docs/integrations/react\":\n      return {\n        metaTitle: \"A/B tests & Feature Flags with React | Abby Documentation\",\n        metaDescription:\n          \"Integrating A/B tests with React and leveraging feature flags for feature testing can greatly enhance your development process. Learn how to effectively implement A/B tests with Abby and improve your React applications with this comprehensive guide.\",\n      };\n    case \"/docs/integrations/svelte\":\n      return {\n        metaTitle:\n          \"Integrating A/B tests & Feature Flags with Svelte | Abby Documentation\",\n        metaDescription:\n          \"Integrating an A/B testing tool with Svelte can help you optimize your web application's user experience. Learn how to seamlessly incorporate Abby an A/B testing software into your Svelte projects for better insights and data-driven decision making.\",\n      };\n    case \"/docs/integrations/nextjs\":\n      return {\n        metaTitle: \"Integrating A/B tests with Next.js | Abby Documentation\",\n        metaDescription:\n          \"Integrating A/B tests like Abby with Next.js allows developers to effectively conduct feature testing and utilize feature flags. Discover the benefits and best practices for implementing Split tests and feature flags in Next.js.\",\n      };\n    case \"/tips-and-insights/a-b-nextjs\":\n      return {\n        metaTitle:\n          \"A/B Testing in Next.js using Edge Middleware | Abby Tips & Insights\",\n        metaDescription:\n          \"A/B testing in Next.js using edge middleware allows you to experiment and optimize your website by testing different versions of your content. Learn the tips and insights on how to effectively conduct A/B tests in Next.js using edge middleware with Abby.\",\n      };\n    case \"/tips-and-insights/abby-open-source\":\n      return {\n        metaTitle:\n          \"Open-Source A/B Test Transparency & Self-Hosted | Abby Tips&Insights\",\n        metaDescription:\n          \"Open-sourcing A/B tests and using feature flags for feature testing can improve transparency, collaboration, and self-hosting capabilities. Discover valuable tips and insights on implementing A/B tests and feature testing strategies with Abby.\",\n      };\n    case \"/tips-and-insights/feature-flags-next\":\n      return {\n        metaTitle:\n          \"Using Feature Flags in Next.js Applications | Abby Tips & Insights\",\n        metaDescription:\n          \"Learn how to effectively use feature flags in Next.js applications to conduct A/B tests and perform feature testing. Get valuable tips and insights in this Abby article to optimize your software development process.\",\n      };\n    case \"/terms\":\n      return {\n        metaTitle: \"A/B Testing and Feature Flags - | Abby Terms of Service\",\n        metaDescription:\n          \"Discover the benefits of A/B testing and feature flags in improving product development and user experience. Learn about Abby's Terms of Service and how they ensure fair and transparent testing practices for your business.\",\n      };\n    case \"/privacy\":\n      return {\n        metaTitle: \"Privacy Policy and Data Protection | Abby\",\n        metaDescription:\n          \"Learn about Abby's privacy policy and data protection measures for conducting A/B tests, using feature flags, and feature testing.\",\n      };\n    case \"/nextjs\":\n      return {\n        metaTitle:\n          \"A/B test for Next.js - Streamline A/B Tests & Feature Flags | Abby\",\n        metaDescription:\n          \"Abby is a powerful A/B testing tool for Next.js applications that streamlines the process of conducting split tests and feature flagging. Learn how to optimize your Next.js projects with Abby's efficient and user-friendly platform.\",\n      };\n    case \"/docs/integrations/angular\":\n      return {\n        metaTitle:\n          \"Integrating A/B testing and feature testing into Angular applications | Abby Documentation\",\n        metaDescription:\n          \"Integrating A/B testing and feature testing into Angular applications can provide valuable insights and enhance the development process. This page provides information and resources for developers looking to implement these techniques in their Angular projects.\",\n      };\n    case \"/docs/environments\":\n      return {\n        metaTitle:\n          \"Understanding and managing different environments in application development | Abby Documentation\",\n        metaDescription:\n          \"Understanding and managing different environments in application development is crucial for developers. Learn about environments, split testing, and how to effectively utilize them in this informative guide.\",\n      };\n    case \"/docs/a-b-testing\":\n      return {\n        metaTitle: \"AB tests in software development | Abby Documentation\",\n        metaDescription:\n          \"AB tests in software development provide valuable insights for developers. This documentation provides detailed information on implementing.\",\n      };\n    case \"/docs/feature-flags\":\n      return {\n        metaTitle:\n          \"Feature flag documentation for developers | Abby Documentation\",\n        metaDescription:\n          \"Feature flag documentation for developers provides a comprehensive guide on how to effectively implement and test feature flags in different development environments. Learn how to optimize your development process and improve feature release management.\",\n      };\n    case \"/docs/reference/nextjs\":\n      return {\n        metaTitle: \"API Reference in Next.js for AB test | Abby Documentation\",\n        metaDescription:\n          \"Learn how to implement API references in Next.js for conducting A/B tests with our comprehensive documentation for developers. Get step-by-step instructions and code snippets for ensuring accurate and efficient implementation.\",\n      };\n    case \"/docs/reference/http\":\n      return {\n        metaTitle:\n          \"API Reference (HTTP API) for conducting A/B tests | Abby Documentation\",\n        metaDescription:\n          \"Our API Reference (HTTP API) page provides developers with the essential code and documentation needed to utilize our API for conducting A/B tests. Explore our comprehensive guide to seamlessly integrate our API and enhance your development process.\",\n      };\n    case \"/docs/reference/angular\":\n      return {\n        metaTitle:\n          \"Using AbbyModule in Angular projects for seamless testing and optimization | Abby Documentation\",\n        metaDescription:\n          \"AbbyModule is an Angular module that provides useful directives for developers, including an AB test integration. This documentation will guide you on how to use and integrate AbbyModule into your Angular projects for seamless testing and optimization.\",\n      };\n    case \"/docs/reference/svelte\":\n      return {\n        metaTitle: \"API Reference for Svelte developers | Abby Documentation\",\n        metaDescription:\n          \"The API Reference for Svelte is a comprehensive guide that provides documentation and examples for developers using the Svelte framework. Learn how to leverage the features and functionalities of Svelte through this detailed API reference guide.\",\n      };\n    case \"/docs/reference/react\":\n      return {\n        metaTitle: \"API reference for React developers | Abby Documentation\",\n        metaDescription:\n          \"The API reference for React provides detailed documentation for developers looking to implement AB testing in their React applications. Explore this comprehensive guide to understand how to integrate and utilize the API effectively.\",\n      };\n\n    default:\n      return {\n        metaTitle: \"Open Source A/B Tests, Feature Flags and feature testing\",\n        metaDescription:\n          \"Looking for a free and easy-to-implement A/B testing tool for developers? Check out our open-source software that includes feature flags and allows for fast and efficient feature testing. Start optimizing your website or application today!\",\n      };\n  }\n}\nfunction getBlogLayout(pageName: string): SeoProps {\n  switch (pageName) {\n    case \"/\":\n      return {\n        metaDescription: \"\",\n        metaTitle: \"\",\n      };\n    default:\n      return {\n        metaDescription: \"\",\n        metaTitle: \"\",\n      };\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/common/auth.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport { prisma } from \"server/db/client\";\n\nexport async function assertUserHasAcessToProject(\n  projectId: string,\n  userId: string\n) {\n  const project = await prisma.project.findFirst({\n    where: {\n      id: projectId,\n      users: {\n        some: {\n          userId: userId,\n        },\n      },\n    },\n  });\n  if (!project) {\n    throw new TRPCError({ code: \"UNAUTHORIZED\" });\n  }\n  return project;\n}\n"
  },
  {
    "path": "apps/web/src/server/common/config-cache.ts",
    "content": "import type { AbbyDataResponse } from \"@tryabby/core\";\nimport createCache from \"./memory-cache\";\n\nconst configCache = createCache<string, AbbyDataResponse>({\n  name: \"configCache\",\n  // expire after 24 hours\n  expireAfterMilliseconds: 1000 * 60 * 60 * 24,\n});\n\ntype ConfigCacheKey = {\n  environment: string;\n  projectId: string;\n};\n\nexport abstract class ConfigCache {\n  static getConfig({ environment, projectId }: ConfigCacheKey) {\n    return configCache.get(projectId + environment);\n  }\n\n  static setConfig({\n    environment,\n    projectId,\n    value,\n  }: ConfigCacheKey & {\n    value: AbbyDataResponse;\n  }) {\n    configCache.set(projectId + environment, value);\n  }\n\n  static deleteConfig({ environment, projectId }: ConfigCacheKey) {\n    configCache.delete(projectId + environment);\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/common/get-server-auth-session.ts",
    "content": "import type { GetServerSidePropsContext } from \"next\";\nimport { unstable_getServerSession } from \"next-auth\";\n\nimport { authOptions } from \"../../pages/api/auth/[...nextauth]\";\n\n/**\n * Wrapper for unstable_getServerSession https://next-auth.js.org/configuration/nextjs\n * See example usage in trpc createContext or the restricted API route\n */\nexport const getServerAuthSession = async (ctx: {\n  req: GetServerSidePropsContext[\"req\"];\n  res: GetServerSidePropsContext[\"res\"];\n}) => {\n  return await unstable_getServerSession(ctx.req, ctx.res, authOptions);\n};\n"
  },
  {
    "path": "apps/web/src/server/common/getRequestOrigin.ts",
    "content": "import type { IncomingMessage } from \"node:http\";\n\n/**\n * Reliably get a request's origin, even when deployed on serverless functions\n *\n * @example\n * ```ts\n * const route = (req, res) => {\n *   const origin = getRequestOrigin(req)\n * }\n * ```\n */\nexport const getRequestOrigin = (req: IncomingMessage): string =>\n  // The x-forwarded-proto header is the only reliable way to determine HTTP vs HTTPS\n  // with Vercel serverless functions and Netlify functions.\n  `${req.headers[\"x-forwarded-proto\"] === \"https\" ? \"https\" : \"http\"}://${\n    req.headers.host\n  }`;\n"
  },
  {
    "path": "apps/web/src/server/common/github-app.ts",
    "content": "import memoize from \"memoize\";\nimport { App } from \"octokit\";\nimport { env } from \"../../env/server.mjs\";\n\nif (\n  env.ENABLE_GITHUB_APP &&\n  (!env.GITHUB_APP_ID || !env.GITHUB_APP_PRIVATE_KEY)\n) {\n  throw new Error(\"Missing required environment variables for GitHub App\");\n}\n\nexport const getGithubApp = () =>\n  new App({\n    // biome-ignore lint/style/noNonNullAssertion: we check above\n    appId: env.GITHUB_APP_ID!,\n    // biome-ignore lint/style/noNonNullAssertion: we check above\n    privateKey: env.GITHUB_APP_PRIVATE_KEY!,\n  });\n\nconst PER_PAGE = 100;\nexport const getAllRepositoriesForInstallation = memoize(\n  async (installationId: number) => {\n    const gh = await getGithubApp().getInstallationOctokit(installationId);\n    let count = 0;\n    const res = await gh.request(\"GET /installation/repositories\", {\n      installation_id: installationId,\n      per_page: 100,\n    });\n    count += res.data.repositories.length;\n    const repositories = res.data.repositories;\n\n    let hasMore = res.data.total_count > count;\n    while (hasMore) {\n      const res = await gh.request(\"GET /installation/repositories\", {\n        installation_id: installationId,\n        per_page: 100,\n        page: Math.ceil(count / PER_PAGE) + 1,\n      });\n      count += res.data.repositories.length;\n      hasMore = res.data.total_count > count;\n      repositories.push(...res.data.repositories);\n    }\n\n    return repositories.toSorted((a, b) => {\n      return a.full_name.localeCompare(b.full_name);\n    });\n  },\n  {\n    maxAge: 1000 * 60,\n  }\n);\n"
  },
  {
    "path": "apps/web/src/server/common/integrations.ts",
    "content": "import { z } from \"zod\";\n\nexport const githubIntegrationSettingsSchema = z\n  .object({\n    installationId: z.number(),\n    repositoryIds: z.array(z.number()),\n  })\n  .strict();\n\nexport type GithubIntegrationSettings = z.infer<\n  typeof githubIntegrationSettingsSchema\n>;\n"
  },
  {
    "path": "apps/web/src/server/common/memory-cache.ts",
    "content": "import createCacheRealm from \"@databases/cache\";\n\nconst { createCache } = createCacheRealm({ maximumSize: 10_000 });\n\nexport default createCache;\n"
  },
  {
    "path": "apps/web/src/server/common/plans.ts",
    "content": "import { env } from \"env/client.mjs\";\nimport { z } from \"zod\";\n\nexport const planNameSchema = z.enum([\n  \"STARTUP\",\n  \"PRO\",\n  \"ENTERPRISE\",\n  \"BETA\",\n  \"STARTUP_LIFETIME\",\n]);\n\nexport type PlanName = z.infer<typeof planNameSchema>;\n\nexport const PLANS: Record<PlanName, string> = {\n  STARTUP: env.NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID,\n  STARTUP_LIFETIME: \"STARTUP_LIFETIME\",\n  PRO: env.NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID,\n  ENTERPRISE: \"ENTERPRISE\",\n  BETA: \"BETA\",\n};\n\nexport type Limit = {\n  tests: number;\n  eventsPerMonth: number;\n  environments: number;\n  flags: number;\n};\n\nexport const getLimitByPlan = (plan: PlanName | null): Limit => {\n  switch (plan) {\n    case \"STARTUP_LIFETIME\":\n    case \"STARTUP\":\n      return {\n        eventsPerMonth: 10_000,\n        tests: 10,\n        environments: 5,\n        flags: 30,\n      };\n    case \"PRO\":\n      return {\n        eventsPerMonth: 100_000,\n        tests: 10,\n        environments: 10,\n        flags: 50,\n      };\n    case \"BETA\":\n    case \"ENTERPRISE\": {\n      return {\n        eventsPerMonth: Number.POSITIVE_INFINITY,\n        tests: Number.POSITIVE_INFINITY,\n        environments: Number.POSITIVE_INFINITY,\n        flags: Number.POSITIVE_INFINITY,\n      };\n    }\n    // free plan\n    default: {\n      return {\n        eventsPerMonth: 1000,\n        tests: 1,\n        environments: 5,\n        flags: 3,\n      };\n    }\n  }\n};\n"
  },
  {
    "path": "apps/web/src/server/common/ratelimit.ts",
    "content": "import { RateLimiterRedis } from \"rate-limiter-flexible\";\nimport { redis } from \"server/db/redis\";\n\nexport const rateLimiter = new RateLimiterRedis({\n  storeClient: redis,\n  keyPrefix: \"rateLimiter\",\n  points: 10, // Number of points\n  duration: 10, // Per 10 seconds\n});\n\nexport const checkRateLimit = async (ip: string) => {\n  try {\n    await rateLimiter.consume(ip);\n    return true;\n  } catch (_rateLimiterRes) {\n    return false;\n  }\n};\n"
  },
  {
    "path": "apps/web/src/server/common/stripe.ts",
    "content": "import { env } from \"env/server.mjs\";\nimport Stripe from \"stripe\";\n\nif (process.browser)\n  throw new Error(\n    \"DO NOT USE stripe/server.ts IN THE BROWSER AS YOU WILL EXPOSE FULL CONTROL OVER YOUR STRIPE ACCOUNT!\"\n  );\n\nif (!env.STRIPE_SECRET_KEY)\n  throw new Error(\"Please provide a STRIPE_SECRET_KEY environment variable!\");\n\nconst stripe = new Stripe(env.STRIPE_SECRET_KEY, {\n  // @ts-ignore The Stripe docs state that null denotes the Stripe account's default version and to use ts-ignore\n  apiVersion: null,\n});\n\nexport { stripe };\n"
  },
  {
    "path": "apps/web/src/server/common/tracking.ts",
    "content": "import { OpenPanel } from \"@openpanel/nextjs\";\nimport { env } from \"env/server.mjs\";\nimport type { ServerEvents } from \"types/plausible-events\";\n\nexport type EventProps = Record<string, unknown> | never;\nexport type EventOptionsTuple<P extends EventProps> = P extends never\n  ? [Omit<EventOptions<P>, \"props\">?]\n  : [EventOptions<P>];\n\nexport type EventOptions<P extends EventProps> = {\n  props: P;\n  revenue?: {\n    currency: string;\n    amount: number;\n  };\n  u?: string;\n  callback?: VoidFunction;\n};\n\nclass TrackingService {\n  private instance: OpenPanel | null = null;\n\n  constructor() {\n    if (env.OPENPANEL_CLIENT_SECRET && env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID) {\n      this.instance = new OpenPanel({\n        clientId: \"your-client-id\",\n        clientSecret: \"your-client-secret\",\n      });\n    }\n  }\n  public trackEvent<const N extends keyof ServerEvents>(\n    eventName: N,\n    ...eventProperties: ServerEvents[N] extends never\n      ? []\n      : [EventOptionsTuple<ServerEvents[N]>[0][\"props\"]]\n  ) {\n    if (env.NODE_ENV === \"development\") {\n      console.log(`Tracking event: ${eventName}`, eventProperties[0]);\n      return;\n    }\n    this.instance?.track(eventName, eventProperties[0]);\n  }\n}\n\nexport const serverTrackingService = new TrackingService();\n"
  },
  {
    "path": "apps/web/src/server/db/client.ts",
    "content": "import { PrismaClient } from \"@prisma/client\";\nimport { env } from \"../../env/server.mjs\";\n\ndeclare global {\n  var prisma: PrismaClient | undefined;\n}\n\n// biome-ignore lint/suspicious/noRedeclare:>\nexport const prisma =\n  global.prisma ||\n  new PrismaClient({\n    log: [\"error\"],\n  });\n\nif (env.NODE_ENV !== \"production\") {\n  global.prisma = prisma;\n}\n"
  },
  {
    "path": "apps/web/src/server/db/redis.ts",
    "content": "import Redis from \"ioredis\";\n\nimport { env } from \"../../env/server.mjs\";\n\ndeclare global {\n  var redis: Redis | undefined;\n}\n\n// biome-ignore lint/suspicious/noRedeclare:>\nexport const redis = global.redis || new Redis(env.REDIS_URL);\n\nif (env.NODE_ENV !== \"production\") {\n  global.redis = redis;\n}\n"
  },
  {
    "path": "apps/web/src/server/queue/AfterDataRequest.ts",
    "content": "import type { ApiVersion } from \"@prisma/client\";\nimport { Worker } from \"bullmq\";\nimport { env } from \"env/server.mjs\";\nimport { trackPlanOverage } from \"lib/logsnag\";\nimport { EventService } from \"server/services/EventService\";\nimport { RequestCache } from \"server/services/RequestCache\";\nimport { RequestService } from \"server/services/RequestService\";\nimport { afterDataRequestQueue, getQueueingRedisConnection } from \"./queues\";\n\nexport type AfterRequestJobPayload = {\n  functionDuration: number;\n  projectId: string;\n  apiVersion: ApiVersion;\n};\n\nconst afterDataRequestWorker = new Worker<AfterRequestJobPayload>(\n  afterDataRequestQueue.name,\n  async ({ data: { apiVersion, functionDuration, projectId } }) => {\n    const { events, planLimits, plan, is80PercentOfLimit } =\n      await EventService.getEventsForCurrentPeriod(projectId);\n\n    if (events > planLimits.eventsPerMonth) {\n      // TODO: send email\n      // TODO: send email if 80% of limit reached\n      await trackPlanOverage(projectId, plan);\n    } else if (is80PercentOfLimit) {\n      await trackPlanOverage(projectId, plan, is80PercentOfLimit);\n    }\n\n    await Promise.all([\n      RequestCache.increment(projectId),\n      RequestService.storeRequest({\n        projectId,\n        type: \"GET_CONFIG\",\n        durationInMs: functionDuration,\n        apiVersion,\n      }),\n    ]);\n  },\n  {\n    connection: getQueueingRedisConnection(),\n    concurrency: 50,\n    removeOnComplete: { count: 100 },\n  }\n);\n\nafterDataRequestWorker.on(\"ready\", () => {\n  console.log(`[${afterDataRequestQueue.name}]: Worker is ready`);\n});\n\nafterDataRequestWorker.on(\"completed\", (job) => {\n  if (env.NODE_ENV === \"development\") {\n    console.log(`[${afterDataRequestQueue.name}]: Job completed`, job.id);\n  }\n});\n\nafterDataRequestWorker.on(\"failed\", (job) => {\n  console.log(\n    `[${afterDataRequestQueue.name}]: Job failed`,\n    job?.id,\n    job?.failedReason\n  );\n});\n\nafterDataRequestWorker.on(\"error\", (error) => {\n  console.log(`[${afterDataRequestQueue.name}]: Error`, error);\n});\n\nexport default afterDataRequestWorker;\n"
  },
  {
    "path": "apps/web/src/server/queue/event.ts",
    "content": "import type { ApiRequestType } from \"@prisma/client\";\nimport { type AbbyEvent, AbbyEventType } from \"@tryabby/core\";\nimport { Worker } from \"bullmq\";\nimport { env } from \"env/server.mjs\";\nimport { trackPlanOverage } from \"lib/logsnag\";\nimport { EventService } from \"server/services/EventService\";\nimport { RequestCache } from \"server/services/RequestCache\";\nimport { RequestService } from \"server/services/RequestService\";\nimport { eventQueue, getQueueingRedisConnection } from \"./queues\";\n\nexport type EventJobPayload = AbbyEvent & {\n  functionDuration: number;\n  ipAddress: string;\n  userAgent: string;\n};\n\nconst EventTypeToRequestType = {\n  [AbbyEventType.ACT]: \"TRACK_CONVERSION\",\n  [AbbyEventType.PING]: \"TRACK_VIEW\",\n} satisfies Record<AbbyEventType, ApiRequestType>;\n\nconst eventWorker = new Worker<EventJobPayload>(\n  eventQueue.name,\n  async ({ data: event }) => {\n    switch (event.type) {\n      case AbbyEventType.PING:\n      case AbbyEventType.ACT: {\n        await EventService.createEvent(event);\n        break;\n      }\n      default: {\n        event.type satisfies never;\n      }\n    }\n    const { events, planLimits, plan, is80PercentOfLimit } =\n      await EventService.getEventsForCurrentPeriod(event.projectId);\n\n    if (events > planLimits.eventsPerMonth) {\n      // TODO: send email\n      // TODO: send email if 80% of limit reached\n      await trackPlanOverage(event.projectId, plan);\n    } else if (is80PercentOfLimit) {\n      await trackPlanOverage(event.projectId, plan, is80PercentOfLimit);\n    }\n\n    await Promise.all([\n      RequestCache.increment(event.projectId),\n      RequestService.storeRequest({\n        projectId: event.projectId,\n        type: EventTypeToRequestType[event.type],\n        durationInMs: event.functionDuration,\n        apiVersion: \"V1\",\n      }),\n    ]);\n  },\n  {\n    connection: getQueueingRedisConnection(),\n    concurrency: 50,\n    removeOnComplete: { count: 100 },\n  }\n);\n\neventWorker.on(\"ready\", () => {\n  console.log(`[${eventQueue.name}]: Worker is ready`);\n});\n\neventWorker.on(\"completed\", (job) => {\n  if (env.NODE_ENV === \"development\") {\n    console.log(`[${eventQueue.name}]: Job completed`, job.id);\n  }\n});\n\neventWorker.on(\"failed\", (job) => {\n  console.log(`[${eventQueue.name}]: Job failed`, job?.id, job?.failedReason);\n});\n\neventWorker.on(\"error\", (error) => {\n  console.log(`[${eventWorker.name}]: Error`, error);\n});\n\nexport default eventWorker;\n"
  },
  {
    "path": "apps/web/src/server/queue/queues.ts",
    "content": "import { Queue } from \"bullmq\";\nimport { env } from \"env/server.mjs\";\nimport { Redis } from \"ioredis\";\nimport type { AfterRequestJobPayload } from \"./AfterDataRequest\";\nimport type { EventJobPayload } from \"./event\";\n\n// enforce the queue names to be in the format {name}\n// https://docs.bullmq.io/guide/redis-tm-compatibility/dragonfly\nconst QUEUE_NAMES = {\n  events: \"{events}\",\n  afterDataRequestQueue: \"{afterDataRequestQueue}\",\n} satisfies Record<string, `{${string}}`>;\n\nexport const getQueueingRedisConnection = () =>\n  new Redis(env.REDIS_URL, { maxRetriesPerRequest: null });\n\nexport const eventQueue = new Queue<EventJobPayload>(QUEUE_NAMES.events, {\n  connection: getQueueingRedisConnection(),\n  defaultJobOptions: {\n    attempts: 3,\n    backoff: {\n      type: \"exponential\",\n      delay: 1000,\n    },\n  },\n});\n\nexport const afterDataRequestQueue = new Queue<AfterRequestJobPayload>(\n  QUEUE_NAMES.afterDataRequestQueue,\n  {\n    connection: getQueueingRedisConnection(),\n    defaultJobOptions: {\n      attempts: 3,\n      backoff: {\n        type: \"exponential\",\n        delay: 1000,\n      },\n    },\n  }\n);\n\n[afterDataRequestQueue, eventQueue].forEach((queue) => {\n  queue.on(\"error\", (error) => {\n    console.error(`[${queue.name}]: Error`, error);\n  });\n});\n"
  },
  {
    "path": "apps/web/src/server/services/AiFlagRemovalService.ts",
    "content": "import type { OpenAI } from \"openai\";\n\nexport class AIFlagRemovalService {\n  constructor(private openai: OpenAI) {}\n\n  async removeFlagFromCode(code: string, flagName: string) {\n    const response = await this.openai.chat.completions.create({\n      model: \"gpt-4o-mini\",\n      messages: [\n        {\n          role: \"system\",\n          content: `You are an expert in code refactoring and have been assigned to update a codebase to remove calls to the useFeatureFlag hook where the parameter is ${flagName}. Your task is to ensure that all code paths that depend on the truthiness of this hook are always executed. But don't just replace the result of the function with true but rather remove the variable (if used). and update the code as if there was never a flag that prevented certain paths. You should only include the code without any other information or formatting. You should never update any other code that isnt related to the flag with the name ${flagName}. You should keep the formatting and line ending of the original code.`,\n        },\n        {\n          role: \"user\",\n          content: [\n            {\n              type: \"text\",\n              text: code,\n            },\n          ],\n        },\n      ],\n      temperature: 1,\n      max_tokens: 16383,\n      top_p: 1,\n      frequency_penalty: 0,\n      presence_penalty: 0,\n    });\n    return response.choices[0]?.message.content;\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/ConfigService.ts",
    "content": "import { FeatureFlagType } from \"@prisma/client\";\nimport type {\n  AbbyConfigFile,\n  PullAbbyConfigResponse,\n  RemoteConfigValueString,\n} from \"@tryabby/core\";\nimport {\n  getDefaultFlagValue,\n  stringifyFlagValue,\n  transformClientFlagToDBType,\n  transformDBFlagTypeToclient,\n} from \"lib/flags\";\nimport { prisma } from \"server/db/client\";\nimport type { FlagValueString } from \"types/flags\";\nimport { FlagService } from \"./FlagService\";\nimport { TestService } from \"./TestService\";\n\nexport async function handleGET({ projectId }: { projectId: string }) {\n  const projectData = await prisma.project.findUnique({\n    where: {\n      id: projectId,\n    },\n    include: {\n      environments: true,\n      tests: {\n        include: {\n          options: true,\n        },\n      },\n      featureFlags: true,\n    },\n  });\n\n  if (!projectData) throw new Error(\"Cant find project\");\n\n  const config = {\n    environments: projectData.environments.map(\n      (environment) => environment.name\n    ),\n    tests: projectData.tests.reduce(\n      (acc, test) => {\n        acc[test.name] = {\n          variants: test.options.map((option) => option.identifier),\n        };\n        return acc;\n      },\n      {} as NonNullable<PullAbbyConfigResponse[\"tests\"]>\n    ),\n    flags: projectData.featureFlags\n      .filter((flag) => flag.type === FeatureFlagType.BOOLEAN)\n      .map((flag) => flag.name),\n    remoteConfig: projectData.featureFlags.reduce(\n      (acc, flag) => {\n        if (flag.type !== FeatureFlagType.BOOLEAN) {\n          acc[flag.name] = transformDBFlagTypeToclient(flag.type) as Exclude<\n            FlagValueString,\n            \"Boolean\"\n          >;\n        }\n        return acc;\n      },\n      {} as Record<string, RemoteConfigValueString>\n    ),\n  } satisfies PullAbbyConfigResponse;\n\n  return config;\n}\n\nexport async function handlePUT({\n  config,\n  projectId,\n  userId,\n}: {\n  userId: string;\n  projectId: string;\n  config: AbbyConfigFile;\n}) {\n  await prisma.project.findFirstOrThrow({\n    where: {\n      id: projectId,\n      users: {\n        some: {\n          userId,\n        },\n      },\n    },\n  });\n  // create all missing environments\n  if (config.environments) {\n    const currentEnvironments = await prisma.environment.findMany({\n      where: {\n        projectId,\n      },\n    });\n\n    const missingEnvironments = config.environments.filter(\n      (env) =>\n        !currentEnvironments.find((currentEnv) => currentEnv.name === env)\n    );\n\n    await prisma.environment.createMany({\n      data: missingEnvironments.map((envName) => ({\n        name: envName,\n        projectId,\n      })),\n    });\n  }\n\n  if (config.tests) {\n    await Promise.all(\n      Object.entries(config.tests).map(async ([testName, test]) => {\n        const testData = await prisma.test.findUnique({\n          where: {\n            projectId_name: {\n              name: testName,\n              projectId,\n            },\n          },\n        });\n\n        const variants: Array<string> = test.variants;\n        const weightedVariants = variants.map((variant) => ({\n          name: variant,\n          weight: 1 / variants.length,\n        }));\n\n        if (testData) {\n          return;\n        }\n\n        return TestService.createTest(\n          projectId,\n          weightedVariants,\n          testName,\n          userId\n        );\n      })\n    );\n  }\n\n  const featureFlags = (config.flags ?? []).map((flag) => ({\n    name: flag,\n    type: \"Boolean\" as const,\n  }));\n  const remoteConfig = Object.entries(config.remoteConfig ?? {}).map(\n    (config) => ({\n      name: config[0],\n      type: config[1],\n    })\n  );\n\n  const flags = [...featureFlags, ...remoteConfig];\n\n  await Promise.all(\n    flags.map(async ({ name, type }) => {\n      const flagValue = getDefaultFlagValue(type);\n      const flagData = await prisma.featureFlag.findUnique({\n        where: {\n          projectId_name: {\n            name,\n            projectId,\n          },\n        },\n      });\n\n      if (flagData) {\n        return;\n      }\n\n      return FlagService.createFlag({\n        projectId,\n        flagName: name,\n        userId,\n        type: transformClientFlagToDBType(type),\n        value: stringifyFlagValue(flagValue),\n      });\n    })\n  );\n\n  await prisma.userSegment.upsert({\n    where: {\n      projectId_name: {\n        projectId,\n        name: \"default\",\n      },\n    },\n    create: { name: \"default\", schema: config.user ?? \"null\", projectId },\n    update: { schema: config.user },\n  });\n}\n"
  },
  {
    "path": "apps/web/src/server/services/EventService.ts",
    "content": "import crypto from \"node:crypto\";\nimport {\n  getEventsByTestIdForAllTime,\n  getEventsByTestIdForDay,\n  getEventsByTestIdForLast30Days,\n} from \"@prisma/client/sql\";\nimport type { AbbyEvent, AbbyEventType } from \"@tryabby/core\";\nimport dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { env } from \"env/server.mjs\";\nimport { TIME_INTERVAL, isSpecialTimeInterval } from \"lib/events\";\nimport { PLANS, type PlanName, getLimitByPlan } from \"server/common/plans\";\nimport { prisma } from \"server/db/client\";\nimport { RequestCache } from \"./RequestCache\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport abstract class EventService {\n  private static hashUserInfo(ipAddress: string, userAgent: string) {\n    return crypto\n      .createHmac(\"sha256\", env.HASHING_SECRET)\n      .update(`${ipAddress}-${userAgent}`)\n      .digest(\"hex\");\n  }\n  static async createEvent({\n    projectId,\n    selectedVariant,\n    testName,\n    type,\n    ipAddress,\n    userAgent,\n  }: AbbyEvent & {\n    ipAddress: string;\n    userAgent: string;\n  }) {\n    return prisma.event.create({\n      data: {\n        selectedVariant,\n        type,\n        anonymousId: EventService.hashUserInfo(ipAddress, userAgent),\n        test: {\n          connect: {\n            projectId_name: {\n              projectId,\n              name: testName,\n            },\n          },\n        },\n      },\n    });\n  }\n\n  static async getEventsByProjectId(projectId: string) {\n    return prisma.event.findMany({\n      where: {\n        test: {\n          projectId,\n        },\n      },\n    });\n  }\n\n  static async getEventsByTestId(\n    testId: string,\n    timeInterval: string,\n    eventType: AbbyEventType\n    // all function should have the same type\n  ): Promise<getEventsByTestIdForDay.Result[]> {\n    if (isSpecialTimeInterval(timeInterval)) {\n      if (timeInterval === TIME_INTERVAL.DAY) {\n        return await prisma.$queryRawTyped(\n          getEventsByTestIdForDay(testId, eventType, dayjs().hour(12).toDate())\n        );\n      }\n      if (timeInterval === TIME_INTERVAL.LAST_30_DAYS) {\n        return await prisma.$queryRawTyped(\n          getEventsByTestIdForLast30Days(testId, eventType)\n        );\n      }\n    }\n\n    return await prisma.$queryRawTyped(\n      getEventsByTestIdForAllTime(testId, eventType, testId, eventType)\n    );\n  }\n\n  static async getEventsForCurrentPeriod(projectId: string) {\n    const [project, eventCount] = await Promise.all([\n      prisma.project.findUnique({\n        where: { id: projectId },\n        select: { stripePriceId: true },\n      }),\n      RequestCache.get(projectId),\n    ]);\n\n    if (!project) throw new Error(`Project not found: ${projectId}`);\n\n    const plan = Object.keys(PLANS).find(\n      (plan) => PLANS[plan as PlanName] === project.stripePriceId\n    ) as PlanName | undefined;\n\n    const planLimits = getLimitByPlan(plan ?? null);\n\n    return {\n      events: eventCount,\n      planLimits,\n      plan,\n      is80PercentOfLimit: planLimits.eventsPerMonth * 0.8 === eventCount,\n    };\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/FlagService.ts",
    "content": "import type { FeatureFlagType, Prisma } from \"@prisma/client\";\nimport { TRPCError } from \"@trpc/server\";\nimport { getFlagCount } from \"lib/flags\";\nimport { getProjectPaidPlan } from \"lib/stripe\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { getLimitByPlan } from \"server/common/plans\";\nimport { prisma } from \"server/db/client\";\nimport { validateFlag } from \"utils/validateFlags\";\n\nexport abstract class FlagService {\n  static async createFlag({\n    projectId,\n    flagName,\n    userId,\n    type,\n    value,\n  }: {\n    projectId: string;\n    flagName: string;\n    userId: string;\n    type: FeatureFlagType;\n    value: string;\n  }) {\n    const project = await prisma.project.findFirst({\n      where: {\n        id: projectId,\n        users: {\n          some: {\n            userId: userId,\n          },\n        },\n      },\n      include: {\n        featureFlags: true,\n      },\n    });\n\n    if (!project) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n    const limits = getLimitByPlan(getProjectPaidPlan(project));\n\n    if (getFlagCount(project.featureFlags) >= limits.flags) {\n      throw new TRPCError({\n        code: \"FORBIDDEN\",\n        message: `You have reached the limit of ${limits.flags} flags for your plan.`,\n      });\n    }\n\n    if (!validateFlag(type, value)) {\n      throw new TRPCError({\n        code: \"INTERNAL_SERVER_ERROR\",\n        message: `The value ${value} is not valid for the type ${type}`,\n      });\n    }\n\n    const projectEnvs = await prisma.environment.findMany({\n      where: {\n        projectId: projectId,\n      },\n    });\n\n    await prisma.$transaction(async (tx) => {\n      const newFlag = await tx.featureFlag.create({\n        data: {\n          name: flagName,\n          projectId: projectId,\n          type,\n        },\n      });\n\n      const featureFlagValues = await Promise.all(\n        projectEnvs.map((env) =>\n          tx.featureFlagValue.create({\n            data: {\n              environmentId: env.id,\n              flagId: newFlag.id,\n              value,\n            },\n          })\n        )\n      );\n\n      return tx.featureFlagHistory.createMany({\n        data: featureFlagValues.map((featureFlag) => ({\n          userId: userId,\n          flagValueId: featureFlag.id,\n          newValue: value,\n        })) satisfies Prisma.FeatureFlagHistoryCreateManyInput[],\n      });\n    });\n    projectEnvs.forEach((env) => {\n      ConfigCache.deleteConfig({\n        projectId,\n        environment: env.name,\n      });\n    });\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/IntegrationService.ts",
    "content": "export namespace IntegrationService {\n  //     createIntegration(projectId: string, In)\n}\n"
  },
  {
    "path": "apps/web/src/server/services/InviteService.ts",
    "content": "import { prisma } from \"server/db/client\";\n\nexport abstract class InviteService {\n  static async acceptInvite(inviteId: string, userId: string) {\n    const invite = await prisma.projectInvite.findUnique({\n      where: {\n        id: inviteId,\n      },\n    });\n\n    if (!invite) {\n      throw new Error(\"Invite not found\");\n    }\n\n    const user = await prisma.user.findUnique({\n      where: {\n        id: userId,\n      },\n    });\n\n    if (!user) {\n      throw new Error(\"User not found\");\n    }\n\n    if (invite.email !== user.email) {\n      throw new Error(\"User not invited\");\n    }\n\n    await prisma.projectUser.create({\n      data: {\n        projectId: invite.projectId,\n        userId: userId,\n      },\n    });\n\n    await prisma.projectInvite.delete({\n      where: {\n        id: inviteId,\n      },\n    });\n  }\n\n  static async getEventsByProjectId(projectId: string) {\n    return prisma.event.findMany({\n      where: {\n        test: {\n          projectId,\n        },\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/PlausibleService.ts",
    "content": "import { env } from \"env/client.mjs\";\nimport type { PlausibleEvents } from \"types/plausible-events\";\n\nexport abstract class PlausibleService {\n  private static readonly PLAUSIBLE_API_URL = \"https://plausible.io/api\";\n  private static readonly SITE_DOMAIN = env.NEXT_PUBLIC_PLAUSIBLE_DOMAIN;\n\n  // API calls to the Plausible API require a UserAgent to be set\n  // for tracking. For privacy reasons, we will use a static random\n  // UserAgent, indicating that an event was triggered by the backend\n  private static readonly BACKEND_USER_AGENT =\n    \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 RuxitSynthetic/1.0 v5219369128283793614 t7034606369950548413 athe94ac249 altpriv cvcv=2 smf=0\";\n\n  static async trackPlausibleGoal<EventName extends keyof PlausibleEvents>(\n    eventName: EventName,\n    props?: PlausibleEvents[EventName],\n    url?: string\n  ) {\n    if (\n      process.env.NODE_ENV !== \"production\" ||\n      !PlausibleService.SITE_DOMAIN\n    ) {\n      return;\n    }\n\n    const res = await fetch(`${PlausibleService.PLAUSIBLE_API_URL}/event`, {\n      method: \"POST\",\n      headers: {\n        \"User-Agent\": PlausibleService.BACKEND_USER_AGENT,\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        name: eventName,\n        domain: PlausibleService.SITE_DOMAIN,\n        url: url ?? `${PlausibleService.SITE_DOMAIN}/api`,\n        props,\n      }),\n    });\n\n    if (!res.ok) {\n      console.error(\n        `Error while sending tracking data to Plausible: ${res.status} ${res.statusText}`\n      );\n    }\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/ProjectService.ts",
    "content": "import { env } from \"node:process\";\nimport { ROLE } from \"@prisma/client\";\nimport { BETA_PRICE_ID } from \"lib/stripe\";\nimport { prisma } from \"server/db/client\";\n\nexport abstract class ProjectService {\n  static async hasProjectAccess(projectId: string, userId: string) {\n    return (\n      (await prisma.projectUser.count({\n        where: {\n          projectId: projectId,\n          userId: userId,\n        },\n      })) > 0\n    );\n  }\n  static async createProject(input: { projectName: string; userId: string }) {\n    return prisma.project.create({\n      data: {\n        name: input.projectName,\n        stripePriceId: env.NODE_ENV === \"development\" ? BETA_PRICE_ID : null,\n        users: {\n          create: {\n            userId: input.userId,\n            role: ROLE.ADMIN,\n          },\n        },\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/RequestCache.ts",
    "content": "import { redis } from \"server/db/redis\";\n\nexport abstract class RequestCache {\n  private static getCacheKey(projectId: string) {\n    return `requests:${projectId}:`;\n  }\n\n  static async increment(projectId: string) {\n    return redis.incr(RequestCache.getCacheKey(projectId));\n  }\n\n  static async get(projectId: string) {\n    return Number(await redis.get(RequestCache.getCacheKey(projectId)));\n  }\n\n  static async reset(projectId: string | string[]) {\n    return redis.del(\n      new Array<string>()\n        .concat(projectId)\n        .map((id) => RequestCache.getCacheKey(id))\n    );\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/RequestService.ts",
    "content": "import type { ApiRequest } from \"@prisma/client\";\nimport { prisma } from \"server/db/client\";\n\nexport abstract class RequestService {\n  static async storeRequest(request: Omit<ApiRequest, \"id\" | \"createdAt\">) {\n    await prisma.apiRequest.create({\n      data: {\n        ...request,\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/services/TestService.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport { getProjectPaidPlan } from \"lib/stripe\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { getLimitByPlan } from \"server/common/plans\";\nimport { prisma } from \"server/db/client\";\n\ntype Variant = {\n  name: string;\n  weight: number;\n};\n\nexport abstract class TestService {\n  static async createTest(\n    projectId: string,\n    variants: Array<Variant>,\n    testName: string,\n    userId: string\n  ) {\n    const project = await prisma.project.findFirst({\n      where: {\n        id: projectId,\n        users: {\n          some: {\n            userId: userId,\n          },\n        },\n      },\n      include: {\n        tests: true,\n        environments: true,\n      },\n    });\n\n    if (!project) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n    const limits = getLimitByPlan(getProjectPaidPlan(project));\n\n    if (project.tests.length >= limits.tests) {\n      throw new TRPCError({\n        code: \"FORBIDDEN\",\n        message: `You have reached the limit of ${limits.tests} tests for your plan.`,\n      });\n    }\n\n    project.environments.forEach((env) => {\n      ConfigCache.deleteConfig({\n        environment: env.name,\n        projectId: env.projectId,\n      });\n    });\n\n    return await prisma.test.create({\n      data: {\n        name: testName,\n        projectId: projectId,\n        options: {\n          createMany: {\n            data: variants.map((variant) => ({\n              identifier: variant.name,\n              chance: variant.weight,\n            })),\n          },\n        },\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "apps/web/src/server/trpc/context.ts",
    "content": "import type { inferAsyncReturnType } from \"@trpc/server\";\nimport type { CreateNextContextOptions } from \"@trpc/server/adapters/next\";\nimport type { Session } from \"next-auth\";\nimport { getRequestOrigin } from \"server/common/getRequestOrigin\";\n\nimport { getServerAuthSession } from \"../common/get-server-auth-session\";\nimport { prisma } from \"../db/client\";\n\ntype CreateContextOptions = {\n  session: Session | null;\n  origin: string;\n};\n\n/** Use this helper for:\n * - testing, so we dont have to mock Next.js' req/res\n * - trpc's `createSSGHelpers` where we don't have req/res\n * @see https://create.t3.gg/en/usage/trpc#-servertrpccontextts\n **/\nexport const createContextInner = (opts: CreateContextOptions) => {\n  return {\n    session: opts.session,\n    prisma,\n    origin: opts.origin,\n  };\n};\n\n/**\n * This is the actual context you'll use in your router\n * @link https://trpc.io/docs/context\n **/\nexport const createContext = async (opts: CreateNextContextOptions) => {\n  const { req, res } = opts;\n\n  // Get the session from the server using the unstable_getServerSession wrapper function\n  const session = await getServerAuthSession({ req, res });\n\n  return {\n    ...createContextInner({\n      session,\n      origin: getRequestOrigin(req),\n    }),\n    req,\n    res,\n  };\n};\n\nexport type Context = inferAsyncReturnType<typeof createContext>;\n"
  },
  {
    "path": "apps/web/src/server/trpc/helpers.ts",
    "content": "import { createServerSideHelpers } from \"@trpc/react-query/server\";\nimport type { CreateNextContextOptions } from \"@trpc/server/adapters/next\";\nimport superjson from \"superjson\";\nimport { createContext } from \"./context\";\nimport { appRouter } from \"./router/_app\";\n\nexport async function getSSRTrpc(opts: CreateNextContextOptions) {\n  return createServerSideHelpers({\n    router: appRouter,\n    ctx: await createContext(opts),\n    transformer: superjson, // optional - adds superjson serialization\n  });\n}\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/_app.ts",
    "content": "import { router } from \"../trpc\";\nimport { apiKeyRouter } from \"./apikey\";\nimport { authRouter } from \"./auth\";\nimport { couponRouter } from \"./coupons\";\nimport { environmentRouter } from \"./environments\";\nimport { eventRouter } from \"./events\";\nimport { exampleRouter } from \"./example\";\nimport { flagRouter } from \"./flags\";\nimport { inviteRouter } from \"./invite\";\nimport { miscRouter } from \"./misc\";\nimport { projectRouter } from \"./project\";\nimport { projectUserRouter } from \"./project-user\";\nimport { testRouter } from \"./tests\";\nimport { userRouter } from \"./user\";\n\nexport const appRouter = router({\n  example: exampleRouter,\n  auth: authRouter,\n  user: userRouter,\n  project: projectRouter,\n  projectUser: projectUserRouter,\n  invite: inviteRouter,\n  events: eventRouter,\n  tests: testRouter,\n  flags: flagRouter,\n  environments: environmentRouter,\n  coupons: couponRouter,\n  misc: miscRouter,\n  apikey: apiKeyRouter,\n});\n\n// export type definition of API\nexport type AppRouter = typeof appRouter;\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/apikey.ts",
    "content": "import dayjs from \"dayjs\";\nimport { generateRandomString, hashString } from \"utils/apiKey\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const apiKeyRouter = router({\n  createApiKey: protectedProcedure\n    .input(\n      z.object({\n        name: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const apiKey = generateRandomString();\n      const hashedApiKey = hashString(apiKey);\n\n      await ctx.prisma.apiKey.create({\n        data: {\n          hashedKey: hashedApiKey,\n          name: input.name,\n          validUntil: dayjs().add(1, \"year\").toDate(),\n          userId: ctx.session.user.id,\n        },\n      });\n\n      return apiKey;\n    }),\n  revokeApiKey: protectedProcedure\n    .input(\n      z.object({\n        id: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      await ctx.prisma.apiKey.update({\n        where: {\n          id: input.id,\n        },\n        data: {\n          revokedAt: new Date(),\n        },\n      });\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/auth.ts",
    "content": "import { protectedProcedure, publicProcedure, router } from \"../trpc\";\n\nexport const authRouter = router({\n  getSession: publicProcedure.query(({ ctx }) => {\n    return ctx.session;\n  }),\n  getSecretMessage: protectedProcedure.query(() => {\n    return \"you can now see this secret message!\";\n  }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/coupons.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport dayjs from \"dayjs\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const couponRouter = router({\n  redeemCode: protectedProcedure\n    .input(\n      z.object({\n        code: z.string(),\n        projectId: z.string(),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      const project = await ctx.prisma.project.findUnique({\n        where: {\n          id: input.projectId,\n        },\n      });\n\n      if (!project) {\n        throw new TRPCError({ code: \"NOT_FOUND\" });\n      }\n\n      const code = await ctx.prisma.couponCodes.findUnique({\n        where: {\n          code: input.code,\n        },\n      });\n\n      if (!code || code.redeemedAt !== null) {\n        throw new TRPCError({ code: \"NOT_FOUND\" });\n      }\n\n      await ctx.prisma.$transaction([\n        ctx.prisma.project.update({\n          where: {\n            id: input.projectId,\n          },\n          data: {\n            stripePriceId: code.stripePriceId,\n            currentPeriodEnd: dayjs().toDate(),\n          },\n        }),\n        ctx.prisma.couponCodes.update({\n          where: {\n            code: input.code,\n          },\n          data: {\n            redeemedAt: new Date(),\n            redeemedById: ctx.session.user.id,\n          },\n        }),\n      ]);\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/environments.ts",
    "content": "import { FeatureFlagType } from \"@prisma/client\";\nimport { TRPCError } from \"@trpc/server\";\nimport { getProjectPaidPlan } from \"lib/stripe\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { getLimitByPlan } from \"server/common/plans\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const environmentRouter = router({\n  addEnvironment: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        name: z.string().min(1),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const project = await ctx.prisma.project.findFirst({\n        where: {\n          id: input.projectId,\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n        },\n        include: {\n          environments: true,\n        },\n      });\n\n      if (!project) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      const limits = getLimitByPlan(getProjectPaidPlan(project));\n\n      if (project.environments.length >= limits.environments) {\n        throw new TRPCError({\n          code: \"FORBIDDEN\",\n          message: `You have reached the limit of ${limits.environments} environments for your plan.`,\n        });\n      }\n\n      const [newEnv, featureFlags] = await Promise.all([\n        ctx.prisma.environment.create({\n          data: {\n            name: input.name,\n            projectId: input.projectId,\n            sortIndex: project.environments.length,\n          },\n        }),\n        ctx.prisma.featureFlag.findMany({\n          where: {\n            projectId: input.projectId,\n          },\n        }),\n      ]);\n\n      await ctx.prisma.$transaction(async (tx) => {\n        const newFlagValues = await Promise.all(\n          featureFlags.map((flag) =>\n            tx.featureFlagValue.create({\n              data: {\n                flagId: flag.id,\n                environmentId: newEnv.id,\n                value:\n                  flag.type === FeatureFlagType.BOOLEAN\n                    ? \"false\"\n                    : flag.type === FeatureFlagType.STRING\n                      ? \"new value\"\n                      : \"0\",\n              },\n            })\n          )\n        );\n        return tx.featureFlagHistory.createMany({\n          data: newFlagValues.map((flag) => ({\n            userId: ctx.session.user.id,\n            newValue: \"false\",\n            flagValueId: flag.id,\n            oldValue: null,\n          })),\n        });\n      });\n    }),\n  updateName: protectedProcedure\n    .input(z.object({ name: z.string(), environmentId: z.string() }))\n    .mutation(async ({ ctx, input }) => {\n      const env = await ctx.prisma.environment.findFirst({\n        where: {\n          id: input.environmentId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n      });\n\n      if (!env) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      ConfigCache.deleteConfig({\n        environment: env.name,\n        projectId: env.projectId,\n      });\n      return ctx.prisma.environment.update({\n        where: {\n          id: input.environmentId,\n        },\n        data: {\n          name: input.name,\n        },\n      });\n    }),\n  deleteEnvironment: protectedProcedure\n    .input(z.object({ environmentId: z.string() }))\n    .mutation(async ({ ctx, input }) => {\n      const env = await ctx.prisma.environment.findFirst({\n        where: {\n          id: input.environmentId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n      });\n\n      if (!env) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      ConfigCache.deleteConfig({\n        environment: env.name,\n        projectId: env.projectId,\n      });\n      // delete all environment\n      await ctx.prisma.environment.delete({\n        where: {\n          id: input.environmentId,\n        },\n      });\n    }),\n  updateEnvironmentSort: protectedProcedure\n    .input(\n      z.object({\n        environments: z.array(\n          z.object({\n            id: z.string(),\n            sortIndex: z.number(),\n          })\n        ),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const env = await ctx.prisma.environment.findFirst({\n        where: {\n          id: { in: input.environments.map((env) => env.id) },\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n      });\n\n      if (!env) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      await ctx.prisma.$transaction(\n        input.environments.map((env) =>\n          ctx.prisma.environment.update({\n            where: {\n              id: env.id,\n            },\n            data: {\n              sortIndex: env.sortIndex,\n            },\n          })\n        )\n      );\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/events.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport { AbbyEventType } from \"@tryabby/core\";\nimport dayjs from \"dayjs\";\nimport { TIME_INTERVAL, getBaseEventsByInterval } from \"lib/events\";\nimport { groupBy, uniqBy } from \"lodash-es\";\nimport memoize from \"memoize\";\nimport { prisma } from \"server/db/client\";\nimport { EventService } from \"server/services/EventService\";\nimport { ProjectService } from \"server/services/ProjectService\";\nimport { z } from \"zod\";\nimport { protectedProcedure, publicProcedure, router } from \"../trpc\";\n\nexport const getEventData = memoize(\n  async (testId: string, interval: string, potentialVariants: string[]) => {\n    const [_actEvents, _pingEvents] = await Promise.all([\n      EventService.getEventsByTestId(testId, interval, AbbyEventType.ACT),\n      EventService.getEventsByTestId(testId, interval, AbbyEventType.PING),\n    ]);\n\n    const baseActEvents =\n      getBaseEventsByInterval(\n        interval,\n        potentialVariants,\n        _actEvents[0]?.createdAt ?? new Date()\n      ) ?? [];\n\n    const basePingEvents =\n      getBaseEventsByInterval(\n        interval,\n        potentialVariants,\n        _actEvents[0]?.createdAt ?? new Date()\n      ) ?? [];\n\n    const actEventsByDate = groupBy(_actEvents, (e) => {\n      const date = dayjs(e.createdAt);\n      if (interval === TIME_INTERVAL.DAY) {\n        // round by 3 hours\n        const hour = Math.floor(date.hour() / 3) * 3;\n\n        return date\n          .set(\"hour\", hour)\n          .set(\"minute\", 0)\n          .set(\"second\", 0)\n          .set(\"millisecond\", 0)\n          .toISOString();\n      }\n      return date.startOf(\"day\").toISOString();\n    });\n\n    const pingEventsByDate = groupBy(_pingEvents, (e) => {\n      const date = dayjs(e.createdAt);\n      if (interval === TIME_INTERVAL.DAY) {\n        // round by 3 hours\n        const hour = Math.floor(date.hour() / 3) * 3;\n\n        return date\n          .set(\"hour\", hour)\n          .set(\"minute\", 0)\n          .set(\"second\", 0)\n          .set(\"millisecond\", 0)\n          .toISOString();\n      }\n      return date.startOf(\"day\").toISOString();\n    });\n\n    const pingEvents = uniqBy(\n      [\n        ...Object.entries(pingEventsByDate).map(([date, events]) => {\n          const tests = groupBy(events, (e) => e.selectedVariant);\n\n          const testCount = Object.entries(tests).reduce(\n            (acc, [variant, events]) => {\n              acc[variant] = {\n                totalEventCount: events.reduce(\n                  (acc, e) => acc + Number(e.eventCount),\n                  0\n                ),\n                uniqueEventCount: events.reduce(\n                  (acc, e) => acc + Number(e.uniqueEventCount),\n                  0\n                ),\n              };\n              return acc;\n            },\n            {} as Record<\n              string,\n              {\n                totalEventCount: number;\n                uniqueEventCount: number;\n              }\n            >\n          );\n          potentialVariants.forEach((variant) => {\n            if (!testCount[variant]) {\n              testCount[variant] = {\n                totalEventCount: 0,\n                uniqueEventCount: 0,\n              };\n            }\n          });\n          return { date, ...testCount } as {\n            date: string;\n            [key: string]: number | string;\n          };\n        }),\n        ...basePingEvents,\n      ].toSorted((a, b) => (dayjs(a.date).isBefore(dayjs(b.date)) ? -1 : 1)),\n      (e) => e.date\n    ) as Array<{\n      date: string;\n      [key: string]:\n        | {\n            totalEventCount: number;\n            uniqueEventCount: number;\n          }\n        | string;\n    }>;\n\n    const actEvents = uniqBy(\n      [\n        ...Object.entries(actEventsByDate).map(([date, events]) => {\n          const tests = groupBy(events, (e) => e.selectedVariant);\n          const testCount = Object.entries(tests).reduce(\n            (acc, [variant, events]) => {\n              acc[variant] = {\n                totalEventCount: events.reduce(\n                  (acc, e) => acc + Number(e.eventCount),\n                  0\n                ),\n                uniqueEventCount: events.reduce(\n                  (acc, e) => acc + Number(e.uniqueEventCount),\n                  0\n                ),\n              };\n              return acc;\n            },\n            {} as Record<\n              string,\n              {\n                totalEventCount: number;\n                uniqueEventCount: number;\n              }\n            >\n          );\n          potentialVariants.forEach((variant) => {\n            if (!testCount[variant]) {\n              testCount[variant] = {\n                totalEventCount: 0,\n                uniqueEventCount: 0,\n              };\n            }\n          });\n          return { date, ...testCount } as {\n            date: string;\n            [key: string]:\n              | {\n                  totalEventCount: number;\n                  uniqueEventCount: number;\n                }\n              | string;\n          };\n        }),\n        ...baseActEvents,\n      ].toSorted((a, b) => (dayjs(a.date).isBefore(dayjs(b.date)) ? -1 : 1)),\n      (e) => e.date\n    ) as Array<{\n      [key: string]:\n        | {\n            totalEventCount: number;\n            uniqueEventCount: number;\n          }\n        | string;\n    }>;\n\n    const totalPingEvents = pingEvents.map((e) => {\n      return {\n        date: e.date,\n        ...Object.entries(e).reduce(\n          (acc, [key, value]) => {\n            if (key === \"date\") return acc;\n            if (typeof value === \"string\") {\n              acc[key] = 0;\n              return acc;\n            }\n\n            acc[key] = value.totalEventCount;\n            return acc;\n          },\n          {} as {\n            [key: string]: number | string;\n          }\n        ),\n      } as {\n        date: string;\n        [key: string]: string;\n      };\n    });\n\n    const uniquePingEvents = pingEvents.map((e) => {\n      return {\n        date: e.date,\n        ...Object.entries(e).reduce(\n          (acc, [key, value]) => {\n            if (key === \"date\") return acc;\n            if (typeof value === \"string\") return acc;\n            acc[key] = value.uniqueEventCount;\n            return acc;\n          },\n          {} as {\n            [key: string]: number | string;\n          }\n        ),\n      } as {\n        date: string;\n        [key: string]: string;\n      };\n    });\n\n    const totalActEvents = actEvents.map((e) => {\n      return {\n        date: e.date,\n        ...Object.entries(e).reduce(\n          (acc, [key, value]) => {\n            if (key === \"date\") return acc;\n            if (typeof value === \"string\") return acc;\n            acc[key] = value.totalEventCount;\n            return acc;\n          },\n          {} as {\n            [key: string]: number | string;\n          }\n        ),\n      } as {\n        date: string;\n        [key: string]: string;\n      };\n    });\n\n    const uniqueActEvents = actEvents.map((e) => {\n      return {\n        date: e.date,\n        ...Object.entries(e).reduce(\n          (acc, [key, value]) => {\n            if (key === \"date\") return acc;\n            if (typeof value === \"string\") return acc;\n            acc[key] = value.uniqueEventCount;\n            return acc;\n          },\n          {} as {\n            [key: string]: number | string;\n          }\n        ),\n      } as {\n        date: string;\n        [key: string]: string;\n      };\n    });\n\n    return {\n      totalPingEvents,\n      uniquePingEvents,\n      totalActEvents,\n      uniqueActEvents,\n      potentialVariants,\n    };\n  },\n  {\n    maxAge: 1000 * 10,\n    cacheKey: ([testId, interval, potentialVariants]) => {\n      return `${testId}-${interval}-${potentialVariants.join(\"-\")}`;\n    },\n  }\n);\n\nexport const eventRouter = router({\n  getEvents: protectedProcedure\n    .input(z.object({ projectId: z.string() }))\n    .query(async ({ ctx, input }) => {\n      const hasAccess = await ProjectService.hasProjectAccess(\n        input.projectId,\n        ctx.session.user.id\n      );\n\n      if (!hasAccess) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      return EventService.getEventsByProjectId(input.projectId);\n    }),\n  getEventsByTestId: protectedProcedure\n    .input(\n      z.object({\n        testId: z.string(),\n        interval: z.string(),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      const currentTest = await ctx.prisma.test.findFirst({\n        where: {\n          id: input.testId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          options: true,\n        },\n      });\n\n      if (!currentTest) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      const potentialVariants = currentTest.options.map((o) => o.identifier);\n\n      return {\n        currentTest,\n        ...(await getEventData(\n          input.testId,\n          input.interval,\n          potentialVariants\n        )),\n      };\n    }),\n  getEventCount: publicProcedure.query(async () => {\n    return await getTotalEventCount();\n  }),\n});\n\nconst getTotalEventCount = memoize(\n  async () => {\n    const [eventCount, apiRequestCount] = await Promise.all([\n      prisma.event.count(),\n      prisma.apiRequest.count(),\n    ]);\n    return eventCount + apiRequestCount;\n  },\n  {\n    maxAge: 1000 * 60 * 60,\n  }\n);\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/example.ts",
    "content": "import { generateCodeSnippets } from \"utils/snippets\";\nimport { z } from \"zod\";\n\nimport { publicProcedure, router } from \"../trpc\";\n\nexport const exampleRouter = router({\n  hello: publicProcedure\n    .input(z.object({ text: z.string().nullish() }).nullish())\n    .query(({ input }) => {\n      return {\n        greeting: `Hello ${input?.text ?? \"world\"}`,\n      };\n    }),\n  getAll: publicProcedure.query(({ ctx }) => {\n    return ctx.prisma.example.findMany();\n  }),\n  exampleSnippet: publicProcedure.query(() => {\n    return generateCodeSnippets({\n      projectId: \"<PROJECT_ID>\",\n      tests: [\n        {\n          name: \"footer\",\n          options: [\n            {\n              identifier: \"oldFooter\",\n            },\n            {\n              identifier: \"newFooter\",\n            },\n          ],\n        },\n        {\n          name: \"ctaButton\",\n          options: [\n            {\n              identifier: \"dark\",\n            },\n            {\n              identifier: \"light\",\n            },\n            {\n              identifier: \"cyberpunk\",\n            },\n          ],\n        },\n      ],\n      flags: [\n        {\n          name: \"showPrices\",\n          type: \"BOOLEAN\",\n        },\n        {\n          name: \"userLimit\",\n          type: \"NUMBER\",\n        },\n        {\n          name: \"appMode\",\n          type: \"STRING\",\n        },\n      ],\n    });\n  }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/flags.ts",
    "content": "import { randomUUID } from \"node:crypto\";\nimport { FeatureFlagType } from \"@prisma/client\";\nimport { TRPCError } from \"@trpc/server\";\nimport { getUseFeatureFlagRegex } from \"@tryabby/core\";\nimport { flagRulesSetSchema } from \"@tryabby/core/schema\";\nimport { env } from \"env/server.mjs\";\nimport OpenAI from \"openai\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { getGithubApp } from \"server/common/github-app\";\nimport { githubIntegrationSettingsSchema } from \"server/common/integrations\";\nimport { serverTrackingService } from \"server/common/tracking\";\nimport { AIFlagRemovalService } from \"server/services/AiFlagRemovalService\";\nimport { FlagService } from \"server/services/FlagService\";\nimport { validateFlag } from \"utils/validateFlags\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const flagRouter = router({\n  getFlags: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        types: z.array(z.nativeEnum(FeatureFlagType)),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      const project = await ctx.prisma.project.findUnique({\n        where: { id: input.projectId },\n        include: {\n          users: { select: { userId: true } },\n          integrations: { where: { type: \"GITHUB\" } },\n        },\n      });\n      if (!project) throw new TRPCError({ code: \"NOT_FOUND\" });\n      if (!project.users.some((u) => u.userId === ctx.session.user.id)) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n      const [flags, environments] = await Promise.all([\n        ctx.prisma.featureFlag.findMany({\n          where: {\n            type: {\n              in: input.types,\n            },\n            project: {\n              id: input.projectId,\n            },\n          },\n          orderBy: { createdAt: \"asc\" },\n          include: {\n            values: {\n              include: {\n                environment: true,\n              },\n            },\n          },\n        }),\n        ctx.prisma.environment.findMany({\n          where: {\n            project: {\n              id: input.projectId,\n            },\n          },\n          orderBy: { sortIndex: \"asc\" },\n        }),\n      ]);\n      const githubIntegration = project.integrations[0];\n      const integrationSettings = githubIntegration\n        ? githubIntegrationSettingsSchema.parse(githubIntegration.settings)\n        : null;\n\n      return {\n        flags,\n        environments,\n        hasGithubIntegration:\n          !!integrationSettings?.repositoryIds[0] &&\n          integrationSettings?.installationId,\n      };\n    }),\n  addFlag: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        name: z.string(),\n        type: z.nativeEnum(FeatureFlagType),\n        value: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const projectId = input.projectId;\n      const flagName = input.name;\n      const userId = ctx.session.user.id;\n      await FlagService.createFlag({\n        projectId,\n        flagName,\n        userId,\n        value: input.value,\n        type: input.type,\n      });\n    }),\n  updateFlag: protectedProcedure\n    .input(\n      z.object({\n        flagValueId: z.string(),\n        value: z.string(),\n        name: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const currentFlag = await ctx.prisma.featureFlagValue.findFirst({\n        where: {\n          id: input.flagValueId,\n          flag: {\n            project: {\n              users: {\n                some: {\n                  userId: ctx.session.user.id,\n                },\n              },\n            },\n          },\n        },\n        include: {\n          flag: { select: { type: true, projectId: true } },\n          environment: { select: { name: true } },\n        },\n      });\n\n      if (!currentFlag) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      if (!validateFlag(currentFlag.flag.type, input.value)) {\n        throw new TRPCError({\n          code: \"INTERNAL_SERVER_ERROR\",\n          message: `The value ${input.value} is not valid for the type ${currentFlag.flag.type}`,\n        });\n      }\n\n      await ctx.prisma.$transaction([\n        ctx.prisma.featureFlagValue.update({\n          where: {\n            id: input.flagValueId,\n          },\n          data: {\n            value: input.value,\n          },\n        }),\n        ctx.prisma.featureFlag.update({\n          where: {\n            id: currentFlag.flagId,\n          },\n          data: {\n            name: input.name,\n          },\n        }),\n        ctx.prisma.featureFlagHistory.create({\n          data: {\n            userId: ctx.session.user.id,\n            flagValueId: input.flagValueId,\n            oldValue: currentFlag.value,\n            newValue: input.value,\n          },\n        }),\n      ]);\n      ConfigCache.deleteConfig({\n        environment: currentFlag.environment.name,\n        projectId: currentFlag.flag.projectId,\n      });\n    }),\n  removeFlag: protectedProcedure\n    .input(\n      z.object({\n        name: z.string(),\n        projectId: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const currentFlag = await ctx.prisma.featureFlag.findFirst({\n        where: {\n          name: input.name,\n          projectId: input.projectId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          project: {\n            include: { environments: { select: { name: true } } },\n          },\n        },\n      });\n\n      if (!currentFlag) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      await ctx.prisma.featureFlag.deleteMany({\n        where: {\n          projectId: input.projectId,\n          name: input.name,\n        },\n      });\n\n      currentFlag.project.environments.forEach((env) =>\n        ConfigCache.deleteConfig({\n          environment: env.name,\n          projectId: input.projectId,\n        })\n      );\n    }),\n  getHistory: protectedProcedure\n    .input(\n      z.object({\n        flagValueId: z.string(),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      const canReadFlag = await ctx.prisma.featureFlag.findFirst({\n        where: {\n          values: {\n            some: {\n              id: input.flagValueId,\n            },\n          },\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n      });\n\n      if (!canReadFlag) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      return ctx.prisma.featureFlagHistory.findMany({\n        where: {\n          flagValueId: input.flagValueId,\n        },\n        include: {\n          user: true,\n        },\n        orderBy: {\n          createdAt: \"desc\",\n        },\n      });\n    }),\n  updateDescription: protectedProcedure\n    .input(\n      z.object({\n        flagId: z.string(),\n        description: z.string().min(1),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const flagToUpdate = await ctx.prisma.featureFlag.findFirst({\n        where: {\n          id: input.flagId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n      });\n\n      if (!flagToUpdate) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      return ctx.prisma.featureFlag.update({\n        where: {\n          id: flagToUpdate.id,\n        },\n        data: {\n          description: input.description,\n        },\n      });\n    }),\n  updateFlagTitle: protectedProcedure\n    .input(\n      z.object({\n        flagId: z.string(),\n        title: z.string().min(1),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const flagToUpdate = await ctx.prisma.featureFlag.findFirst({\n        where: {\n          id: input.flagId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          project: {\n            include: {\n              environments: {\n                select: { name: true },\n              },\n            },\n          },\n        },\n      });\n\n      if (!flagToUpdate) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      await ctx.prisma.featureFlag.update({\n        where: {\n          id: flagToUpdate.id,\n        },\n        data: {\n          name: input.title,\n        },\n      });\n\n      flagToUpdate.project.environments.forEach((env) =>\n        ConfigCache.deleteConfig({\n          environment: env.name,\n          projectId: flagToUpdate.project.id,\n        })\n      );\n    }),\n  createFlagRemovalPR: protectedProcedure\n    .input(\n      z.object({\n        flagId: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const flag = await ctx.prisma.featureFlag.findUnique({\n        where: { id: input.flagId },\n        include: {\n          project: {\n            include: { users: true, integrations: true },\n          },\n        },\n      });\n      if (!flag) throw new TRPCError({ code: \"NOT_FOUND\" });\n      const integration = flag.project.integrations.find(\n        (i) => i.type === \"GITHUB\"\n      );\n      if (!integration) {\n        throw new TRPCError({ code: \"INTERNAL_SERVER_ERROR\" });\n      }\n\n      if (!flag.project.users.some((u) => u.userId === ctx.session.user.id)) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      const parsedIntegration = githubIntegrationSettingsSchema.parse(\n        integration.settings\n      );\n      const gh = await getGithubApp().getInstallationOctokit(\n        parsedIntegration.installationId\n      );\n      const repositoryId = parsedIntegration.repositoryIds[0];\n      if (!repositoryId) {\n        throw new TRPCError({\n          code: \"INTERNAL_SERVER_ERROR\",\n        });\n      }\n\n      const repo = await gh.request(\"GET /repositories/:id\", {\n        id: repositoryId,\n      });\n\n      if (!repo) {\n        throw new TRPCError({\n          code: \"INTERNAL_SERVER_ERROR\",\n        });\n      }\n\n      if (!env.OPENAI_API_KEY) {\n        throw new TRPCError({ code: \"INTERNAL_SERVER_ERROR\" });\n      }\n      const ai = new AIFlagRemovalService(\n        new OpenAI({\n          apiKey: env.OPENAI_API_KEY,\n        })\n      );\n\n      const flagRegex = getUseFeatureFlagRegex(flag.name);\n      const owner = repo.data.owner.login;\n      const name = repo.data.name;\n      const defaultBranch = repo.data.default_branch;\n\n      const u = await gh.request(\n        \"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\",\n        {\n          owner,\n          repo: name,\n          tree_sha: defaultBranch,\n          recursive: \"1\",\n        }\n      );\n\n      const files = u.data.tree\n        .filter((f) => f.type === \"blob\")\n        .filter((f) => f.path?.endsWith(\".ts\") || f.path?.endsWith(\".tsx\"));\n\n      if (files.length === 0) {\n        throw new TRPCError({\n          code: \"INTERNAL_SERVER_ERROR\",\n          message: \"No files found in the repository\",\n        });\n      }\n\n      const fileContents = (\n        await Promise.all(\n          files.flatMap(async (f) => {\n            if (!f.sha || !f.path) return [];\n            const res = await gh.request(\n              \"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\",\n              {\n                owner,\n                repo: name,\n                file_sha: f.sha,\n              }\n            );\n            const fileContent = Buffer.from(\n              res.data.content,\n              \"base64\"\n            ).toString(\"utf-8\");\n            if (!flagRegex.test(fileContent)) return [];\n            return {\n              fileSha: f.sha,\n              filePath: f.path,\n              fileContent,\n            };\n          })\n        )\n      ).flat();\n\n      serverTrackingService.trackEvent(\"flag_removal_pr_created\", {\n        files_changed: fileContents.length,\n      });\n\n      const baseBranchResponse = await gh.rest.git.getRef({\n        owner,\n        repo: name,\n        ref: `heads/${defaultBranch}`,\n      });\n\n      const baseSha = baseBranchResponse.data.object.sha;\n\n      const b = await gh.rest.git.createRef({\n        owner: \"cstrnt\",\n        repo: name,\n        ref: `refs/heads/abby_${randomUUID()}_remove_client_flag`,\n        sha: baseSha,\n      });\n\n      await Promise.all(\n        fileContents.map(async (f) => {\n          const updatedCode = await ai.removeFlagFromCode(\n            f.fileContent,\n            flag.name\n          );\n          if (!updatedCode) return;\n          return gh.rest.repos.createOrUpdateFileContents({\n            owner,\n            repo: name,\n            path: f.filePath,\n            message: `Remove Feature Flag: ${flag.name}`,\n            content: Buffer.from(updatedCode).toString(\"base64\"),\n            sha: f.fileSha,\n            branch: b.data.ref,\n          });\n        })\n      );\n\n      const response = await gh.rest.pulls.create({\n        owner,\n        repo: name,\n        title: `[ABBY] Remove Feature Flag ${flag.name}`,\n        head: b.data.ref,\n        base: defaultBranch,\n        body: `This PR was created by Abby to remove the flag ${flag.name} from the codebase. Please review the changes and merge when ready.`,\n      });\n\n      return response.data.html_url;\n    }),\n  getFlagByValueId: protectedProcedure\n    .input(\n      z.object({\n        flagValueId: z.string(),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      return ctx.prisma.featureFlagValue.findFirst({\n        where: {\n          id: input.flagValueId,\n          flag: {\n            project: {\n              users: {\n                some: {\n                  userId: ctx.session.user.id,\n                },\n              },\n            },\n          },\n        },\n        include: {\n          environment: true,\n          history: { include: { user: true } },\n          flag: {\n            include: {\n              project: {\n                include: {\n                  userSegments: true,\n                },\n              },\n            },\n          },\n          ruleSets: true,\n        },\n      });\n    }),\n  updateFlagRuleSet: protectedProcedure\n    .input(\n      z.object({\n        flagValueId: z.string(),\n        ruleSet: flagRulesSetSchema,\n        ruleSetId: z.string().optional(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const flagValue = await ctx.prisma.featureFlagValue.findFirst({\n        where: {\n          id: input.flagValueId,\n          flag: {\n            project: {\n              users: {\n                some: {\n                  userId: ctx.session.user.id,\n                },\n              },\n            },\n          },\n        },\n        include: {\n          flag: {\n            include: {\n              project: {\n                include: {\n                  environments: {\n                    select: { name: true },\n                  },\n                },\n              },\n            },\n          },\n        },\n      });\n      if (!flagValue) throw new TRPCError({ code: \"NOT_FOUND\" });\n      if (!input.ruleSetId) {\n        await ctx.prisma.flagRuleSet.create({\n          data: {\n            flagValueId: flagValue.id,\n            rules: input.ruleSet,\n            name: \"Default\",\n          },\n        });\n      } else {\n        await ctx.prisma.flagRuleSet.update({\n          where: {\n            id: input.ruleSetId,\n          },\n          data: {\n            rules: input.ruleSet,\n          },\n        });\n      }\n\n      flagValue.flag.project.environments.forEach((env) => {\n        ConfigCache.deleteConfig({\n          projectId: flagValue.flag.projectId,\n          environment: env.name,\n        });\n      });\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/invite.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport { prisma } from \"server/db/client\";\nimport { InviteService } from \"server/services/InviteService\";\nimport { updateProjectsOnSession } from \"utils/updateSession\";\nimport { z } from \"zod\";\nimport { sendInviteEmail } from \"../../../../emails\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const inviteRouter = router({\n  getInviteData: protectedProcedure\n    .input(z.object({ inviteId: z.string() }))\n    .query(async ({ ctx, input }) => {\n      return ctx.prisma.projectInvite.findUnique({\n        where: {\n          id: input.inviteId,\n        },\n        include: {\n          project: true,\n        },\n      });\n    }),\n  createInvite: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        email: z.string().email(),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      const currentProject = await ctx.prisma.project.findFirst({\n        where: {\n          id: input.projectId,\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n        },\n        include: {\n          users: { include: { user: true } },\n        },\n      });\n\n      if (!currentProject) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      if (\n        input.email === ctx.session.user.email ||\n        currentProject.users.some((user) => user.user.email === input.email)\n      ) {\n        throw new TRPCError({ code: \"CONFLICT\" });\n      }\n\n      const userToInvite = await ctx.prisma.user.findFirst({\n        where: {\n          email: input.email,\n        },\n      });\n\n      if (!userToInvite) {\n        throw new TRPCError({ code: \"NOT_FOUND\" });\n      }\n\n      const invite = await prisma.projectInvite.create({\n        data: {\n          projectId: input.projectId,\n          email: input.email,\n          userId: userToInvite.id,\n        },\n      });\n\n      if (!ctx.session.user.email) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n      try {\n        await sendInviteEmail({\n          invitee: {\n            name: userToInvite.name ?? undefined,\n            email: input.email,\n          },\n          inviter: {\n            name: ctx.session.user.name ?? ctx.session.user.email,\n            email: ctx.session.user.email,\n          },\n          project: currentProject,\n          inviteId: invite.id,\n        });\n        // we need to make sure the invite is deleted if the email fails to send\n        // so that the user can try again\n      } catch (e) {\n        await prisma.projectInvite.delete({\n          where: {\n            id: invite.id,\n          },\n        });\n        throw e;\n      }\n\n      return {\n        inviteId: invite.id,\n      };\n    }),\n  acceptInvite: protectedProcedure\n    .input(z.object({ inviteId: z.string() }))\n    .mutation(async ({ input, ctx }) => {\n      const invite = await prisma.projectInvite.findUnique({\n        where: {\n          id: input.inviteId,\n        },\n      });\n\n      if (!invite) {\n        throw new TRPCError({ code: \"NOT_FOUND\" });\n      }\n\n      if (invite.email !== ctx.session.user.email) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      await InviteService.acceptInvite(invite.id, ctx.session.user.id);\n\n      // manually add the projectId to the token\n      await updateProjectsOnSession(ctx, invite.projectId);\n\n      return {\n        projectId: invite.projectId,\n      };\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/misc.ts",
    "content": "import { Octokit } from \"octokit\";\n\nimport createCacheRealm from \"@databases/cache\";\nimport { env } from \"env/server.mjs\";\nimport ms from \"ms\";\nimport { z } from \"zod\";\nimport { sendContactFormularEmail } from \"../../../../emails/index\";\nimport { publicProcedure, router } from \"../trpc\";\n\nconst cache = createCacheRealm({ maximumSize: 5 }).createCache({\n  name: \"stars\",\n  expireAfterMilliseconds: ms(\"6h\"),\n});\n\nexport const miscRouter = router({\n  getStars: publicProcedure.query(async () => {\n    if (!env.GITHUB_OAUTH_TOKEN) {\n      return 0;\n    }\n    const cachedStars = cache.get(\"stars\");\n    if (cachedStars) {\n      return cachedStars;\n    }\n    const octokit = new Octokit({\n      auth: env.GITHUB_OAUTH_TOKEN,\n    });\n    const stars = await octokit.request(\"GET /repos/{owner}/{repo}\", {\n      owner: \"tryabby\",\n      repo: \"abby\",\n      headers: {\n        \"X-GitHub-Api-Version\": \"2022-11-28\",\n      },\n    });\n    cache.set(\"stars\", stars.data.stargazers_count);\n    return stars.data.stargazers_count;\n  }),\n  contactPageEmail: publicProcedure\n    .input(\n      z.object({\n        surname: z.string(),\n        name: z.string(),\n        mailadress: z.string().email(),\n        message: z.string(),\n      })\n    )\n    .mutation(async ({ input }) => {\n      await sendContactFormularEmail(input);\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/project-user.ts",
    "content": "import { prisma } from \"server/db/client\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const projectUserRouter = router({\n  addUser: protectedProcedure\n    .input(z.object({ projectId: z.string(), userId: z.string() }))\n    .mutation(async ({ input, ctx }) => {\n      await prisma.projectUser.create({\n        data: {\n          projectId: input.projectId,\n          userId: ctx.session.user.id,\n        },\n      });\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/project.ts",
    "content": "import { type Option, ROLE } from \"@prisma/client\";\nimport { TRPCError } from \"@trpc/server\";\nimport { PLANS, planNameSchema } from \"server/common/plans\";\nimport { stripe } from \"server/common/stripe\";\nimport { prisma } from \"server/db/client\";\nimport { EventService } from \"server/services/EventService\";\nimport { ProjectService } from \"server/services/ProjectService\";\nimport { generateCodeSnippets } from \"utils/snippets\";\nimport { z } from \"zod\";\n\nexport type ClientOption = Omit<Option, \"chance\"> & {\n  chance: number;\n};\nimport { AbbyEventType } from \"@tryabby/core\";\nimport dayjs from \"dayjs\";\nimport { assertUserHasAcessToProject } from \"server/common/auth\";\nimport {\n  getAllRepositoriesForInstallation,\n  getGithubApp,\n} from \"server/common/github-app\";\nimport { githubIntegrationSettingsSchema } from \"server/common/integrations\";\nimport { match } from \"ts-pattern\";\nimport { updateProjectsOnSession } from \"utils/updateSession\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const projectRouter = router({\n  getProjectData: protectedProcedure\n    .input(z.object({ projectId: z.string() }))\n    .query(async ({ ctx, input }) => {\n      const project = await ctx.prisma.project.findFirst({\n        where: {\n          id: input.projectId,\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n        },\n        include: {\n          tests: {\n            orderBy: { createdAt: \"asc\" },\n            include: {\n              options: true,\n            },\n          },\n          userSegments: true,\n          environments: true,\n          featureFlags: true,\n          users: { include: { user: true } },\n          integrations: true,\n        },\n      });\n\n      if (!project) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n      const { events: eventsThisPeriod } =\n        await EventService.getEventsForCurrentPeriod(project.id);\n\n      const events = await ctx.prisma.event.groupBy({\n        by: [\"selectedVariant\", \"type\", \"testId\"],\n        _count: { _all: true },\n        where: {\n          testId: { in: project.tests.map((test) => test.id) },\n          createdAt: {\n            gte: dayjs().subtract(30, \"days\").toDate(),\n          },\n        },\n      });\n\n      return {\n        project: {\n          ...project,\n          eventsThisPeriod,\n          tests: project.tests.map((test) => {\n            const actEvents: typeof events = [];\n            const pingEvents: typeof events = [];\n            for (const event of events) {\n              if (event.testId === test.id) {\n                if (event.type === AbbyEventType.ACT) {\n                  actEvents.push(event);\n                } else {\n                  pingEvents.push(event);\n                }\n              }\n            }\n            return {\n              ...test,\n\n              actEvents,\n              pingEvents,\n              options: test.options.map((option) => ({\n                ...option,\n                chance: option.chance.toNumber(),\n              })),\n            };\n          }),\n        },\n      };\n    }),\n  getCodeSnippet: protectedProcedure\n    .input(z.object({ projectId: z.string() }))\n    .query(async ({ ctx, input }) => {\n      const projectData = await ctx.prisma.project.findUnique({\n        where: {\n          id: input.projectId,\n        },\n        include: {\n          tests: {\n            include: {\n              options: true,\n            },\n          },\n          featureFlags: true,\n        },\n      });\n\n      if (!projectData) throw new TRPCError({ code: \"NOT_FOUND\" });\n\n      return generateCodeSnippets({\n        projectId: input.projectId,\n        tests: projectData.tests,\n        flags: projectData.featureFlags,\n      });\n    }),\n  createStripeCheckoutSession: protectedProcedure\n    .input(z.object({ projectId: z.string(), plan: planNameSchema }))\n    .mutation(async ({ ctx, input: { plan, projectId } }) => {\n      const priceId = PLANS[plan];\n\n      const project = await ctx.prisma.project.findFirst({\n        where: {\n          id: projectId,\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n        },\n      });\n\n      if (!project) throw new TRPCError({ code: \"NOT_FOUND\" });\n\n      // checkout.sessions.create can only be called with *either* a customer ID (if it exists) *or* a customer_email (if no ID exists yet)\n      const customerMetadata = project.stripeCustomerId\n        ? {\n            customer: project.stripeCustomerId,\n          }\n        : {\n            // biome-ignore lint/style/noNonNullAssertion:>\n            customer_email: ctx.session.user.email!,\n          };\n\n      const session = await stripe.checkout.sessions.create({\n        mode: \"subscription\",\n        payment_method_types: [\"card\"],\n        line_items: [\n          {\n            price: priceId,\n            quantity: 1,\n          },\n        ],\n        metadata: {\n          projectId,\n          userId: ctx.session.user.id,\n        },\n        allow_promotion_codes: true,\n        ...customerMetadata,\n        billing_address_collection: \"auto\",\n        success_url: `${ctx.origin}/projects/${project.id}/?upgraded=true`,\n        cancel_url: `${ctx.origin}/projects/${project.id}`,\n      });\n\n      return session.id;\n    }),\n  createStripeBillingPortalUrl: protectedProcedure\n    .input(z.object({ projectId: z.string() }))\n    .mutation(async ({ ctx, input: { projectId } }) => {\n      const project = await ctx.prisma.project.findFirst({\n        where: {\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n          id: projectId,\n        },\n      });\n\n      if (!project || !project.stripeCustomerId) return null;\n\n      const { url } = await stripe.billingPortal.sessions.create({\n        customer: project.stripeCustomerId,\n        return_url: `${ctx.origin}/projects/${project.id}/settings`,\n      });\n\n      return url;\n    }),\n  updateName: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        name: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const project = await ctx.prisma.project.update({\n        where: {\n          id: input.projectId,\n        },\n        data: {\n          name: input.name,\n        },\n      });\n      return project;\n    }),\n  removeUser: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        userId: z.string(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      await ctx.prisma.projectInvite.deleteMany({\n        where: {\n          projectId: input.projectId,\n          userId: input.userId,\n        },\n      });\n      await ctx.prisma.projectUser.delete({\n        where: {\n          userId_projectId: {\n            projectId: input.projectId,\n            userId: input.userId,\n          },\n        },\n      });\n    }),\n  deleteProject: protectedProcedure\n    .input(z.object({ projectId: z.string() }))\n    .mutation(async ({ ctx, input }) => {\n      const projectId = input.projectId;\n\n      const project = await ctx.prisma.project.findFirst({\n        where: {\n          id: projectId,\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n              role: ROLE.ADMIN,\n            },\n          },\n        },\n      });\n\n      if (!project) throw new TRPCError({ code: \"UNAUTHORIZED\" });\n\n      await ctx.prisma.project.delete({\n        where: {\n          id: projectId,\n        },\n      });\n    }),\n  createProject: protectedProcedure\n    .input(z.object({ projectName: z.string().min(3) }))\n    .mutation(async ({ ctx, input }) => {\n      const userId = ctx.session.user.id;\n      const project = await ProjectService.createProject({\n        projectName: input.projectName,\n        userId,\n      });\n      await updateProjectsOnSession(ctx, project.id);\n      return project;\n    }),\n  getEventLogs: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n        limit: z.number().min(1).max(100).nullish(),\n        cursor: z.string().nullish(),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      const cursor = input.cursor;\n      const limit = input.limit ?? 50;\n      const logItems = await ctx.prisma.featureFlagHistory.findMany({\n        take: limit + 1,\n        where: {\n          flagValue: {\n            flag: {\n              project: {\n                id: input.projectId,\n                users: {\n                  some: {\n                    userId: ctx.session.user.id,\n                  },\n                },\n              },\n            },\n          },\n        },\n        orderBy: {\n          createdAt: \"desc\",\n        },\n        include: {\n          user: true,\n          flagValue: {\n            include: {\n              flag: { select: { name: true } },\n              environment: { select: { name: true } },\n            },\n          },\n        },\n        cursor: cursor ? { id: cursor } : undefined,\n      });\n\n      let nextCursor: typeof cursor | undefined = undefined;\n      if (logItems.length > limit) {\n        const nextItem = logItems.pop();\n        nextCursor = nextItem?.id;\n      }\n      return {\n        items: logItems,\n        nextCursor,\n      };\n    }),\n  getIntegrations: protectedProcedure\n    .input(\n      z.object({\n        projectId: z.string(),\n      })\n    )\n    .query(async ({ ctx, input }) => {\n      await assertUserHasAcessToProject(input.projectId, ctx.session.user.id);\n\n      const project = await prisma.project.findUniqueOrThrow({\n        where: { id: input.projectId },\n        include: { integrations: true },\n      });\n\n      return await Promise.all(\n        project.integrations.map((i) =>\n          match(i.type)\n            .with(\"GITHUB\", async () => {\n              const integration =\n                await githubIntegrationSettingsSchema.parseAsync(i.settings);\n\n              const gh = await getGithubApp().getInstallationOctokit(\n                integration.installationId\n              );\n              const [potentialRepositories, ...installedRepos] =\n                await Promise.all([\n                  getAllRepositoriesForInstallation(integration.installationId),\n                  ...integration.repositoryIds.map((id) =>\n                    gh.request(\"GET /repositories/:id\", {\n                      id,\n                    })\n                  ),\n                ]);\n\n              return {\n                ...i,\n                settings: integration,\n                potentialRepositories: potentialRepositories.map((r) => ({\n                  name: r.name,\n                  owner: r.owner.login,\n                  id: r.id,\n                })),\n                installedRepos: installedRepos.map((r) => ({\n                  name: r.data.name,\n                  owner: r.data.owner.login,\n                  id: r.data.id,\n                })),\n              };\n            })\n            .exhaustive()\n        )\n      );\n    }),\n  updateGithubIntegration: protectedProcedure\n    .input(\n      z.object({\n        integrationId: z.string(),\n        repositoryId: z.number(),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const integration = await prisma.integration.findUnique({\n        where: {\n          id: input.integrationId,\n        },\n        include: { project: { include: { users: true } } },\n      });\n      if (!integration) throw new TRPCError({ code: \"NOT_FOUND\" });\n      if (integration.type !== \"GITHUB\") {\n        throw new TRPCError({ code: \"INTERNAL_SERVER_ERROR\" });\n      }\n      if (\n        !integration.project.users.some((u) => u.userId === ctx.session.user.id)\n      ) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      const newSettings = await githubIntegrationSettingsSchema.parseAsync(\n        integration.settings\n      );\n      newSettings.repositoryIds = [input.repositoryId];\n\n      return await prisma.integration.update({\n        where: {\n          id: input.integrationId,\n        },\n        data: {\n          settings:\n            await githubIntegrationSettingsSchema.parseAsync(newSettings),\n        },\n      });\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/tests.ts",
    "content": "import { TRPCError } from \"@trpc/server\";\nimport { ConfigCache } from \"server/common/config-cache\";\nimport { prisma } from \"server/db/client\";\nimport { TestService } from \"server/services/TestService\";\nimport { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const testRouter = router({\n  createTest: protectedProcedure\n    .input(\n      z.object({\n        name: z.string(),\n        projectId: z.string(),\n        variants: z.array(\n          z.object({\n            name: z.string(),\n            weight: z.number().min(0).max(1),\n          })\n        ),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      await TestService.createTest(\n        input.projectId,\n        input.variants,\n        input.name,\n        ctx.session.user.id\n      );\n    }),\n  updateName: protectedProcedure\n    .input(\n      z.object({\n        testId: z.string(),\n        name: z.string(),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      // check whether the user has access to the test\n      const currentTest = await prisma.test.findFirst({\n        where: {\n          id: input.testId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          project: {\n            include: {\n              environments: true,\n            },\n          },\n        },\n      });\n      if (!currentTest) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      currentTest.project.environments.forEach((env) => {\n        ConfigCache.deleteConfig({\n          environment: env.name,\n          projectId: env.projectId,\n        });\n      });\n      await ctx.prisma.test.update({\n        where: {\n          id: input.testId,\n        },\n        data: {\n          name: input.name,\n        },\n      });\n    }),\n\n  updateWeights: protectedProcedure\n    .input(\n      z.object({\n        testId: z.string(),\n        weights: z.array(\n          z.object({\n            variantId: z.string(),\n            weight: z.number().min(0).max(1),\n          })\n        ),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      // check whether the user has access to the test\n      const currentTest = await prisma.test.findFirst({\n        where: {\n          id: input.testId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          project: {\n            include: {\n              environments: true,\n            },\n          },\n        },\n      });\n      if (!currentTest) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      currentTest.project.environments.forEach((env) => {\n        ConfigCache.deleteConfig({\n          environment: env.name,\n          projectId: env.projectId,\n        });\n      });\n      await Promise.all(\n        input.weights.map((w) =>\n          prisma.option.update({\n            where: {\n              id: w.variantId,\n            },\n            data: {\n              chance: w.weight,\n            },\n          })\n        )\n      );\n    }),\n  getById: protectedProcedure\n    .input(\n      z.object({\n        testId: z.string(),\n      })\n    )\n    .query(async ({ input, ctx }) => {\n      const currentTest = await prisma.test.findFirst({\n        where: {\n          id: input.testId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          options: true,\n        },\n      });\n\n      if (!currentTest) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      return currentTest;\n    }),\n  delete: protectedProcedure\n    .input(\n      z.object({\n        testId: z.string(),\n      })\n    )\n    .mutation(async ({ input, ctx }) => {\n      const currentTest = await prisma.test.findFirst({\n        where: {\n          id: input.testId,\n          project: {\n            users: {\n              some: {\n                userId: ctx.session.user.id,\n              },\n            },\n          },\n        },\n        include: {\n          project: {\n            include: {\n              environments: true,\n            },\n          },\n        },\n      });\n\n      if (!currentTest) {\n        throw new TRPCError({ code: \"UNAUTHORIZED\" });\n      }\n\n      currentTest.project.environments.forEach((env) => {\n        ConfigCache.deleteConfig({\n          environment: env.name,\n          projectId: env.projectId,\n        });\n      });\n      await prisma.$transaction([\n        prisma.test.delete({\n          where: {\n            id: input.testId,\n          },\n        }),\n      ]);\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/router/user.ts",
    "content": "import { z } from \"zod\";\nimport { protectedProcedure, router } from \"../trpc\";\n\nexport const updateProfileSchema = z.object({\n  name: z.string().min(1),\n});\n\nexport const userRouter = router({\n  getUserData: protectedProcedure.query(async ({ ctx }) => {\n    return {\n      user: ctx.session.user.id,\n      projects: await ctx.prisma.project.findMany({\n        where: {\n          users: {\n            some: {\n              userId: ctx.session.user.id,\n            },\n          },\n        },\n        include: {\n          tests: true,\n        },\n      }),\n    };\n  }),\n  me: protectedProcedure.query(async ({ ctx }) => {\n    return ctx.prisma.user.findUnique({\n      where: {\n        id: ctx.session.user.id,\n      },\n      include: {\n        accounts: true,\n      },\n    });\n  }),\n  getProjects: protectedProcedure.query(async ({ ctx }) => {\n    return {\n      user: ctx.session.user.id,\n      projects: await ctx.prisma.projectUser.findMany({\n        where: {\n          userId: ctx.session.user.id,\n        },\n        include: {\n          project: true,\n        },\n      }),\n    };\n  }),\n  getApiKeyData: protectedProcedure.query(async ({ ctx }) => {\n    return {\n      userId: ctx.session.user.id,\n      apiKeys: await ctx.prisma.apiKey.findMany({\n        where: {\n          userId: ctx.session.user.id,\n          revokedAt: null,\n        },\n      }),\n    };\n  }),\n  updateProfile: protectedProcedure\n    .input(updateProfileSchema)\n    .mutation(async ({ ctx, input }) => {\n      return ctx.prisma.user.update({\n        where: {\n          id: ctx.session.user.id,\n        },\n        data: {\n          name: input.name,\n        },\n      });\n    }),\n  onboardUser: protectedProcedure\n    .input(\n      z.object({\n        name: z.string().min(1),\n        profession: z.string(),\n        technologies: z.array(z.string()),\n        experienceLevelFlags: z.number().min(1).max(5),\n        experienceLevelTests: z.number().min(1).max(5),\n      })\n    )\n    .mutation(async ({ ctx, input }) => {\n      const userId = ctx.session.user.id;\n      await ctx.prisma.user.update({\n        where: {\n          id: userId,\n        },\n        data: {\n          name: input.name,\n          profession: input.profession,\n          technologies: input.technologies,\n          experienceLevelFlags: input.experienceLevelFlags,\n          experienceLevelTests: input.experienceLevelTests,\n          hasCompletedOnboarding: true,\n        },\n      });\n    }),\n});\n"
  },
  {
    "path": "apps/web/src/server/trpc/trpc.ts",
    "content": "import { TRPCError, initTRPC } from \"@trpc/server\";\nimport superjson from \"superjson\";\n\nimport type { Context } from \"./context\";\n\nconst t = initTRPC.context<Context>().create({\n  transformer: superjson,\n  errorFormatter({ shape }) {\n    return shape;\n  },\n});\n\nexport const router = t.router;\n\n/**\n * Unprotected procedure\n **/\nexport const publicProcedure = t.procedure;\n\n/**\n * Reusable middleware to ensure\n * users are logged in\n */\nconst isAuthed = t.middleware(({ ctx, next }) => {\n  if (!ctx.session || !ctx.session.user) {\n    throw new TRPCError({ code: \"UNAUTHORIZED\" });\n  }\n  return next({\n    ctx: {\n      // infers the `session` as non-nullable\n      session: { ...ctx.session, user: ctx.session.user },\n    },\n  });\n});\n\n/**\n * Protected procedure\n **/\nexport const protectedProcedure = t.procedure.use(isAuthed);\n"
  },
  {
    "path": "apps/web/src/styles/shadcn.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 240 5.9% 10%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 240 5.9% 10%;\n    --radius: 0.5rem;\n  }\n\n  .dark {\n    --background: 221.7 39% 11.6%;\n    --foreground: 0 0% 98%;\n    --card: 223 48% 17%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 327.4 87.1% 81.8%;\n    --primary-foreground: 240 5.9% 10%;\n    --secondary: 223 37% 20%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 223 37% 20%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 223 37% 20%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 223 37% 20%;\n    --input: 223 37% 20%;\n    --ring: 327.7 87% 82%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n}\n\n:root {\n  --color-primary-background: 255, 255, 255;\n  --color-primary-foreground: 18, 25, 41;\n  --color-accent-background: 249, 168, 212;\n  --color-accent-foreground: 0, 0, 0;\n}\n\n.dark {\n  --color-primary-background: 18, 25, 41;\n  --color-primary-foreground: 255, 255, 255;\n  --color-accent-background: 249, 168, 212;\n  --color-accent-foreground: 0, 0, 0;\n}\n\n@font-face {\n  font-family: \"Mona Sans\";\n  src: url(\"/Mona-Sans.woff2\") format(\"woff2 supports variations\"),\n    url(\"/Mona-Sans.woff2\") format(\"woff2-variations\");\n  font-weight: 200 900;\n  font-stretch: 75% 125%;\n  font-display: swap;\n}\n\n@font-face {\n  font-family: \"Fragment Mono\";\n  src: url(\"/FragmentMono-Regular.ttf\") format(\"ttf\");\n}\n\nhtml {\n  @apply scroll-smooth;\n}\n\n.shiki {\n  @apply mr-auto overflow-x-auto rounded-lg p-4 pt-24 !font-mono;\n}\n\n.shiki * {\n  @apply !font-mono;\n}\n\n@layer components {\n  input[type=\"range\"] {\n    @apply appearance-none bg-transparent;\n  }\n\n  input[type=\"range\"]::-webkit-slider-runnable-track {\n    @apply rounded-full bg-background;\n  }\n\n  input[type=\"range\"]::-moz-range-track {\n    @apply rounded-full bg-background;\n  }\n\n  input[type=\"range\"]::-moz-range-thumb {\n    @apply bg-primary;\n  }\n\n  input[type=\"range\"]::-webkit-slider-thumb {\n    @apply h-4 w-4 appearance-none rounded-full bg-primary;\n  }\n\n  input[type=\"range\"]::-ms-track {\n    @apply rounded-full bg-background;\n  }\n}\n\n.mark {\n  position: relative;\n  display: inline-block;\n  z-index: 0;\n  @apply text-ab_accent-foreground;\n}\n\n.mark::before {\n  /* Highlight color */\n  @apply bg-ab_accent-background;\n\n  content: \"\";\n  position: absolute;\n  width: calc(100% + 12px);\n  height: 100%;\n  left: -6px;\n  bottom: 0px;\n  z-index: -1;\n  transform: rotate(-1deg);\n}\n\n/* charts */\n@layer base {\n  :root {\n    --chart-1: 173 58% 39%;\n    --chart-2: 12 76% 61%;\n    --chart-3: 197 37% 24%;\n    --chart-4: 43 74% 66%;\n    --chart-5: 27 87% 67%;\n  }\n\n  .dark {\n    --chart-1: 327.4, 70%, 50%;\n\n    --chart-2: 192, 61%, 82%;\n\n    --chart-3: 137.4, 80%, 55%;\n\n    --chart-4: 47.4, 65%, 60%;\n\n    --chart-5: 267.4, 60%, 45%;\n  }\n}\n"
  },
  {
    "path": "apps/web/src/styles/theme.json",
    "content": "{\n  \"--background\": \"231.43 42.17% 16.27%\",\n  \"--foreground\": \"222.2 47.4% 11.2%\",\n  \"--muted\": \"210 40% 96.1%\",\n  \"--muted-foreground\": \"215.4 16.3% 46.9%\",\n  \"--primary\": \"222.2 47.4% 11.2%\",\n  \"--primary-foreground\": \"210 40% 98%\",\n  \"--secondary\": \"210 40% 96.1%\",\n  \"--secondary-foreground\": \"222.2 47.4% 11.2%\",\n  \"--popover\": \"0 0% 100%\",\n  \"--popover-foreground\": \"222.2 47.4% 11.2%\",\n  \"--input\": \"214.3 31.8% 91.4%\",\n  \"--accent\": \"210 40% 96.1%\",\n  \"--accent-foreground\": \"222.2 47.4% 11.2%\",\n  \"--card\": \"0 0% 100%\",\n  \"--card-foreground\": \"222.2 47.4% 11.2%\",\n  \"--border\": \"214.3 31.8% 91.4%\",\n  \"--destructive\": \"0 100% 50%\",\n  \"--destructive-foreground\": \"210 40% 98%\",\n  \"--ring\": \"215 20.2% 65.1%\",\n  \"--radius\": \"0.5rem\",\n  \"[object Object]\": \"--background\"\n}\n"
  },
  {
    "path": "apps/web/src/types/flags.ts",
    "content": "import type { RemoteConfigValueString } from \"@tryabby/core\";\n\nexport type FlagValueString = RemoteConfigValueString | \"Boolean\";\n"
  },
  {
    "path": "apps/web/src/types/next-auth.d.ts",
    "content": "import type { DefaultSession } from \"next-auth\";\n\ntype UserSession = {\n  id: string;\n  image: string;\n  projectIds: string[];\n  lastOpenProjectId: string | undefined;\n  hasCompletedOnboarding: boolean;\n};\n\ndeclare module \"next-auth\" {\n  /**\n   * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context\n   */\n  interface Session {\n    user?: UserSession & DefaultSession[\"user\"];\n  }\n}\n\ndeclare module \"next-auth/jwt\" {\n  /** Returned by the `jwt` callback and `getToken`, when using JWT sessions */\n  interface JWT {\n    /** OpenID ID Token */\n    user: {} & UserSession;\n  }\n}\n"
  },
  {
    "path": "apps/web/src/types/plausible-events.ts",
    "content": "import type { FeatureFlagType } from \"@prisma/client\";\nimport type { PlanName } from \"server/common/plans\";\n\nexport type Plan = PlanName | \"HOBBY\";\n\nexport type PlausibleEvents = {\n  \"Sign Up Clicked\": never;\n  \"Plan Selected\": {\n    Plan: Plan;\n  };\n  \"Plan Upgrade Clicked\": {\n    Plan: Plan;\n  };\n  \"Project Created\": never;\n  \"AB-Test Created\": {\n    \"Amount Of Variants\": number;\n  };\n  \"Environment Created\": never;\n  \"Feature Flag Created\": {\n    \"Feature Flag Type\": FeatureFlagType;\n  };\n  \"Devtools Opened\": never;\n  \"Devtools Interaction\": {\n    type: \"Flag Updated\" | \"Variant Selected\";\n  };\n  \"API Project Data Retrieved\": {\n    projectId: string;\n  };\n  \"Dashboard Help Clicked\": never;\n  \"Dashboard Code Clicked\": never;\n};\n\nexport type ServerEvents = {\n  flag_removal_pr_created: {\n    files_changed: number;\n  };\n};\n"
  },
  {
    "path": "apps/web/src/utils/apiKey.ts",
    "content": "import { createHmac, randomBytes } from \"node:crypto\";\nimport { env } from \"env/server.mjs\";\n\nexport function generateRandomString(length = 32): string {\n  const apiKey = randomBytes(length).toString(\"hex\");\n  return apiKey;\n}\n\nexport function hashString(data: string): string {\n  const hmac = createHmac(\"sha256\", env.HASHING_SECRET);\n  hmac.update(data);\n  const hashKey = hmac.digest(\"hex\");\n  return hashKey;\n}\n"
  },
  {
    "path": "apps/web/src/utils/checkSession.ts",
    "content": "import type { NextApiRequest, NextApiResponse } from \"next\";\nimport { type Session, unstable_getServerSession } from \"next-auth\";\nimport { authOptions } from \"../pages/api/auth/[...nextauth]\";\n\nconst checkSession = async (\n  req: NextApiRequest,\n  res: NextApiResponse\n): Promise<Session | undefined> => {\n  const session = await unstable_getServerSession(req, res, authOptions);\n  if (session) {\n    return session;\n  }\n  throw Error(\"Couldn't find a session.\");\n};\n\nexport default checkSession;\n"
  },
  {
    "path": "apps/web/src/utils/snippets.ts",
    "content": "import * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { FeatureFlag, Option, Test } from \"@prisma/client\";\nimport type { AbbyConfig, RemoteConfigValueString } from \"@tryabby/core\";\nimport { transformDBFlagTypeToclient } from \"lib/flags\";\nimport prettier from \"prettier\";\nimport { getHighlighter } from \"shiki\";\n\n// Shiki loads languages and themes using \"fs\" instead of \"import\", so Next.js\n// doesn't bundle them into production build. To work around, we manually copy\n// them over to our source code (lib/shiki/*) and update the \"paths\".\n//\n// Note that they are only referenced on server side\n// See: https://github.com/shikijs/shiki/issues/138\nconst getShikiPath = (): string => {\n  return path.join(process.cwd(), \"src/lib/shiki\");\n};\n\nconst touched = { current: false };\n\n// \"Touch\" the shiki assets so that Vercel will include them in the production\n// bundle. This is required because shiki itself dynamically access these files,\n// so Vercel doesn't know about them by default\nconst touchShikiPath = (): void => {\n  if (touched.current) return; // only need to do once\n  fs.readdir(getShikiPath()); // fire and forget\n  touched.current = true;\n};\n\nconst formatCode = (code: string) => {\n  return prettier.format(\n    code.replace('\"process.env.NODE_ENV\"', \"process.env.NODE_ENV\"),\n    {\n      parser: \"typescript\",\n    }\n  );\n};\n\nexport type CodeSnippetData = {\n  code: string;\n  html: string;\n};\n\nexport type Integrations = \"react\" | \"nextjs\" | \"svelte\" | \"angular\";\n\nexport async function generateCodeSnippets({\n  projectId,\n  tests,\n  flags,\n}: {\n  projectId: string;\n  tests: Array<\n    Pick<Test, \"name\"> & {\n      options: Pick<Option, \"identifier\">[];\n    }\n  >;\n  flags: Array<Pick<FeatureFlag, \"name\" | \"type\">>;\n}): Promise<Record<Integrations, CodeSnippetData>> {\n  touchShikiPath();\n\n  const baseConfig = JSON.stringify(\n    {\n      projectId,\n      currentEnvironment: \"process.env.NODE_ENV\",\n      flags: flags\n        .filter((flag) => flag.type === \"BOOLEAN\")\n        .map((flag) => flag.name),\n      remoteConfig: flags.reduce(\n        (acc, flag) => {\n          if (flag.type !== \"BOOLEAN\") {\n            acc[flag.name] = transformDBFlagTypeToclient(\n              flag.type\n            ) as RemoteConfigValueString;\n          }\n          return acc;\n        },\n        {} as Record<string, RemoteConfigValueString>\n      ),\n      tests: tests.reduce(\n        (acc, test) => {\n          acc[test.name] = {\n            variants: test.options.map((option) => option.identifier),\n          };\n          return acc;\n        },\n        {} as NonNullable<AbbyConfig[\"tests\"]>\n      ),\n    } as AbbyConfig,\n    null,\n    2\n  );\n\n  const reactCode = formatCode(\n    `import { createAbby } from \"@tryabby/react\"; \n    \n    export const { useAbby, AbbyProvider, useFeatureFlag } = createAbby(${baseConfig})`\n  );\n\n  const nextJsCode = formatCode(\n    `import { createAbby } from \"@tryabby/next\"; \n    \n    export const { useAbby, AbbyProvider, useFeatureFlag, withAbby } = createAbby(${baseConfig})`\n  );\n\n  const svelteCode = formatCode(\n    `import { createAbby } from \"@tryabby/svelte\"; \n    \n    export const { useAbby, AbbyProvider, useFeatureFlag, withAbby } = createAbby(${baseConfig})`\n  );\n\n  const angularCode = formatCode(\n    `import { AbbyModule } from \"@tryabby/angular\"; \n\n    @NgModule({\n      declarations: [\n        // your declarations\n      ],\n      imports: [\n        AbbyModule.forRoot(${baseConfig})\n      ],\n      bootstrap: [AppComponent]\n    })\n    export class AppModule {}`\n  );\n\n  const highlighter = await getHighlighter({\n    // it is in-fact a proper theme, but the types are wrong\n    theme: \"poimandres\",\n    paths: {\n      languages: `${getShikiPath()}/languages/`,\n      themes: `${getShikiPath()}/themes/`,\n    },\n  });\n\n  return {\n    react: {\n      code: reactCode,\n      html: highlighter.codeToHtml(reactCode, {\n        lang: \"tsx\",\n      }),\n    },\n    nextjs: {\n      code: nextJsCode,\n      html: highlighter.codeToHtml(nextJsCode, {\n        lang: \"tsx\",\n      }),\n    },\n    svelte: {\n      code: svelteCode,\n      html: highlighter.codeToHtml(svelteCode, {\n        lang: \"svelte\",\n      }),\n    },\n    angular: {\n      code: angularCode,\n      html: highlighter.codeToHtml(angularCode, {\n        lang: \"tsx\",\n      }),\n    },\n  };\n}\n"
  },
  {
    "path": "apps/web/src/utils/trpc.ts",
    "content": "import { httpLink, loggerLink } from \"@trpc/client\";\nimport { createTRPCNext } from \"@trpc/next\";\nimport type { inferRouterInputs, inferRouterOutputs } from \"@trpc/server\";\nimport superjson from \"superjson\";\n\nimport type { AppRouter } from \"../server/trpc/router/_app\";\n\nconst getBaseUrl = () => {\n  if (typeof window !== \"undefined\") return \"\"; // browser should use relative url\n  if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`; // SSR should use vercel url\n  return `http://localhost:${process.env.PORT ?? 3000}`; // dev SSR should use localhost\n};\n\nexport const trpc = createTRPCNext<AppRouter>({\n  config() {\n    return {\n      transformer: superjson,\n      links: [\n        loggerLink({\n          enabled: (_opts) => process.env.NODE_ENV === \"development\",\n        }),\n        httpLink({\n          url: `${getBaseUrl()}/api/trpc`,\n        }),\n      ],\n    };\n  },\n  ssr: false,\n});\n\n/**\n * Inference helper for inputs\n * @example type HelloInput = RouterInputs['example']['hello']\n **/\nexport type RouterInputs = inferRouterInputs<AppRouter>;\n/**\n * Inference helper for outputs\n * @example type HelloOutput = RouterOutputs['example']['hello']\n **/\nexport type RouterOutputs = inferRouterOutputs<AppRouter>;\n"
  },
  {
    "path": "apps/web/src/utils/updateSession.ts",
    "content": "import { env } from \"node:process\";\nimport { encode, getToken } from \"next-auth/jwt\";\nimport type { Context } from \"server/trpc/context\";\n\nexport const updateProjectsOnSession = async (\n  ctx: Context,\n  projectId: string\n) => {\n  if (!env.NEXTAUTH_SECRET) return;\n  // manually add the projectId to the token\n  const jwt = await getToken({ req: ctx.req, secret: env.NEXTAUTH_SECRET });\n  if (!jwt) return;\n  jwt.user.projectIds.push(projectId);\n  const encodedJwt = await encode({\n    token: jwt,\n    secret: env.NEXTAUTH_SECRET,\n  });\n\n  if (env.NODE_ENV === \"production\") {\n    ctx.res.setHeader(\"Set-Cookie\", [\n      `__Secure-next-auth.session-token=${encodedJwt}; path=/; expires=${new Date(\n        Date.now() + 30 * 24 * 60 * 60 * 1000\n      ).toUTCString()}; httponly; secure; samesite=none`,\n    ]);\n  } else {\n    ctx.res.setHeader(\"Set-Cookie\", [\n      `next-auth.session-token=${encodedJwt}; path=/; expires=${new Date(\n        Date.now() + 30 * 24 * 60 * 60 * 1000\n      ).toUTCString()}; httponly`,\n    ]);\n  }\n};\n"
  },
  {
    "path": "apps/web/src/utils/validateFlags.ts",
    "content": "import { FeatureFlagType } from \"@prisma/client\";\n\nexport function validateFlag(flagType: FeatureFlagType, value: string) {\n  switch (flagType) {\n    case FeatureFlagType.BOOLEAN: {\n      return value === \"true\" || value === \"false\";\n    }\n    case FeatureFlagType.NUMBER: {\n      return !Number.isNaN(Number(value));\n    }\n    case FeatureFlagType.STRING: {\n      return true;\n    }\n    case FeatureFlagType.JSON: {\n      try {\n        JSON.parse(value);\n        return true;\n      } catch (_e) {\n        return false;\n      }\n    }\n  }\n  // exhaustivenes test for switch\n  flagType satisfies never;\n}\n"
  },
  {
    "path": "apps/web/tailwind.config.cjs",
    "content": "const { fontFamily } = require(\"tailwindcss/defaultTheme\");\n\n/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: [\"class\"],\n  content: [\"./src/**/*.{js,ts,jsx,tsx}\"],\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: {\n        \"2xl\": \"1400px\",\n      },\n    },\n    extend: {\n      colors: {\n        ab_primary: {\n          foreground: {\n            DEFAULT: \"rgba(var(--color-primary-foreground), 1)\",\n            hover: \"rgba(var(--color-primary-foreground), 0.9)\",\n            muted: \"rgba(var(--color-primary-foreground), 0.6)\",\n          },\n          background: {\n            DEFAULT: \"rgba(var(--color-primary-background), 1)\",\n            hover: \"rgba(var(--color-primary-foreground), 0.1)\",\n            muted: \"rgba(var(--color-primary-background), 0.6)\",\n          },\n        },\n        ab_accent: {\n          foreground: {\n            DEFAULT: \"rgba(var(--color-accent-foreground), 1)\",\n            hover: \"rgba(var(--color-accent-foreground), 0.9)\",\n            muted: \"rgba(var(--color-accent-foreground), 0.6)\",\n          },\n          background: {\n            DEFAULT: \"rgba(var(--color-accent-background), 1)\",\n            hover: \"rgba(var(--color-accent-background), 0.85)\",\n            muted: \"rgba(var(--color-accent-background), 0.6)\",\n          },\n        },\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"rgba(var(--color-accent-background), 1)\",\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        primary: {\n          DEFAULT: \"rgba(var(--color-accent-background), 1)\",\n          foreground: \"hsl(var(--background))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n      },\n      fontFamily: {\n        sans: [\"Mona Sans\", ...fontFamily.sans],\n        mono: [\"Fragment Mono\", ...fontFamily.mono],\n        logo: [\"Martian Mono\", ...fontFamily.mono],\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n      keyframes: {\n        slideUpAndFade: {\n          from: { opacity: 0, transform: \"translateY(2px)\" },\n          to: { opacity: 1, transform: \"translateY(0)\" },\n        },\n        slideRightAndFade: {\n          from: { opacity: 0, transform: \"translateX(-2px)\" },\n          to: { opacity: 1, transform: \"translateX(0)\" },\n        },\n        slideDownAndFade: {\n          from: { opacity: 0, transform: \"translateY(-2px)\" },\n          to: { opacity: 1, transform: \"translateY(0)\" },\n        },\n        slideLeftAndFade: {\n          from: { opacity: 0, transform: \"translateX(2px)\" },\n          to: { opacity: 1, transform: \"translateX(0)\" },\n        },\n        \"accordion-down\": {\n          from: { height: 0 },\n          to: { height: \"var(--radix-accordion-content-height)\" },\n        },\n        \"accordion-up\": {\n          from: { height: \"var(--radix-accordion-content-height)\" },\n          to: { height: 0 },\n        },\n      },\n      animation: {\n        slideUpAndFade: \"slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)\",\n        slideRightAndFade:\n          \"slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)\",\n        slideDownAndFade:\n          \"slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)\",\n        slideLeftAndFade:\n          \"slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)\",\n        \"accordion-down\": \"accordion-down 0.2s ease-out\",\n        \"accordion-up\": \"accordion-up 0.2s ease-out\",\n      },\n    },\n  },\n  plugins: [\n    require(\"@tailwindcss/typography\"),\n    require(\"@tailwindcss/forms\"),\n    require(\"tailwindcss-animate\"),\n  ],\n};\n"
  },
  {
    "path": "apps/web/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es2017\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"Bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"baseUrl\": \"src\",\n    \"paths\": {\n      \"server/*\": [\"server/*\"],\n      \"pages/*\": [\"pages/*\"],\n      \"components/*\": [\"components/*\"]\n    },\n    \"types\": [\"vitest/globals\"]\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"**/*.cjs\", \"**/*.mjs\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "apps/web/vercel.json",
    "content": "{\n  \"crons\": [\n    {\n      \"path\": \"/api/invalidate-limits?secretKey=yfMWV3TC0xyLvEKoHjslTp8GeKFEFRDtfVckg3Y2LHA=\",\n      \"schedule\": \"0 0 * * *\"\n    }\n  ]\n}\n"
  },
  {
    "path": "apps/web/vitest.config.ts",
    "content": "import { defineConfig } from \"vite\";\n/// <reference types=\"vitest\" />\nimport tsconfigPaths from \"vite-tsconfig-paths\";\n\nexport default defineConfig({\n  plugins: [tsconfigPaths()],\n  test: {\n    environment: \"jsdom\",\n    globals: true,\n  },\n});\n"
  },
  {
    "path": "biome.json",
    "content": "{\n  \"$schema\": \"https://biomejs.dev/schemas/1.8.3/schema.json\",\n  \"files\": {\n    \"ignore\": [\n      \"dist/**/*\",\n      \".next/**/*\",\n      \"**/tsconfig.json\",\n      \".angular/**/*\",\n      \"**/*.svelte\"\n    ]\n  },\n  \"organizeImports\": {\n    \"enabled\": true\n  },\n  \"javascript\": {\n    \"parser\": {\n      \"unsafeParameterDecoratorsEnabled\": true\n    },\n    \"formatter\": {\n      \"trailingCommas\": \"es5\"\n    }\n  },\n  \"formatter\": {\n    \"enabled\": true,\n    \"indentWidth\": 2,\n    \"indentStyle\": \"space\"\n  },\n  \"linter\": {\n    \"enabled\": true,\n    \"rules\": {\n      \"correctness\": {\n        \"noUnusedImports\": \"error\",\n        \"noUnusedVariables\": \"error\"\n      },\n      \"recommended\": true,\n      \"complexity\": {\n        \"noStaticOnlyClass\": \"off\",\n        \"noForEach\": \"off\"\n      },\n      \"a11y\": {\n        \"useAltText\": \"warn\",\n        \"useButtonType\": \"warn\"\n      }\n    }\n  },\n  \"overrides\": [\n    {\n      \"include\": [\"packages/**/*\", \"**/*.test.ts\", \"**/*.stub.ts\"],\n      \"organizeImports\": {\n        \"enabled\": true\n      },\n      \"linter\": {\n        \"rules\": {\n          \"suspicious\": {\n            \"noExplicitAny\": \"off\"\n          },\n          \"complexity\": {\n            \"noForEach\": \"off\"\n          }\n        }\n      }\n    },\n    {\n      \"include\": [\"**/*.test.ts\", \"**/*.stub.ts\"],\n      \"organizeImports\": {\n        \"enabled\": true\n      },\n      \"linter\": {\n        \"rules\": {\n          \"style\": {\n            \"noNonNullAssertion\": \"off\"\n          },\n          \"suspicious\": {\n            \"noExplicitAny\": \"off\"\n          },\n          \"complexity\": {\n            \"noBannedTypes\": \"off\"\n          }\n        }\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "docker-compose.prod.yaml",
    "content": "version: \"3.3\"\n\nservices:\n  web:\n    image: tryabby/web\n    build:\n      context: .\n      dockerfile: ./apps/web/Dockerfile\n    ports:\n      - \"3000:3000\"\n    environment:\n      DATABASE_URL: \"mysql://root:password@db:3306/abby\"\n      NODE_ENV: \"development\"\n      NEXTAUTH_SECRET: \"secret\"\n      NEXTAUTH_URL: \"http://localhost:3000\"\n      EMAIL_SERVER: \"smtp://mailhog:1025\"\n      GITHUB_ID: \"null\"\n      GITHUB_SECRET: \"null\"\n      GOOGLE_CLIENT_ID: \"\"\n      GOOGLE_CLIENT_SECRET: \"\"\n      REDIS_URL: \"redis://redis:6379\"\n      ABBY_FROM_EMAIL: \"no-reply@tryabby.dev\"\n      GITHUB_OAUTH_TOKEN: \"\"\n      STRIPE_WEBHOOK_SECRET: \"null\"\n      STRIPE_SECRET_KEY: \"null\"\n      LOGSNAG_API_KEY: \"null\"\n      HASHING_SECRET: \"secret\"\n      NEXT_PUBLIC_PLAUSIBLE_DOMAIN: \"tryabby.com\"\n      NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY: \"null\"\n      NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID: \"null\"\n      NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID: \"null\"\n      NEXT_PUBLIC_ABBY_PROJECT_ID: \"null\"\n\n  db:\n    image: mariadb\n    restart: always\n    environment:\n      MYSQL_DATABASE: \"db\"\n      # So you don't have to use root, but you can if you like\n      MYSQL_USER: \"root\"\n      # You can use whatever password you like\n      MYSQL_PASSWORD: \"password\"\n      # Password for root access\n      MYSQL_ROOT_PASSWORD: \"password\"\n    ports:\n      # <Port exposed> : < MySQL Port running inside container>\n      - \"3306:3306\"\n    expose:\n      # Opens port 3306 on the container\n      - \"3306\"\n      # Where our data will be persisted\n    volumes:\n      - my-db:/var/lib/mysql\n  redis:\n    image: redis\n    restart: always\n    ports:\n      - \"6379:6379\"\n    expose:\n      - \"6379\"\n    volumes:\n      - my-redis:/data\n  mailhog:\n    image: mailhog/mailhog\n    ports:\n      - \"1025:1025\"\n      - \"8025:8025\"\n# Names our volume\nvolumes:\n  my-db:\n  my-redis:\n"
  },
  {
    "path": "docker-compose.yaml",
    "content": "version: \"3.3\"\nservices:\n  db:\n    image: mariadb\n    restart: always\n    environment:\n      MYSQL_DATABASE: \"db\"\n      # So you don't have to use root, but you can if you like\n      MYSQL_USER: \"user\"\n      # You can use whatever password you like\n      MYSQL_PASSWORD: \"password\"\n      # Password for root access\n      MYSQL_ROOT_PASSWORD: \"password\"\n    ports:\n      # <Port exposed> : < MySQL Port running inside container>\n      - \"3306:3306\"\n    expose:\n      # Opens port 3306 on the container\n      - \"3306\"\n      # Where our data will be persisted\n    volumes:\n      - my-db:/var/lib/mysql\n  redis:\n    image: redis\n    restart: always\n    ports:\n      - \"6379:6379\"\n    expose:\n      - \"6379\"\n    volumes:\n      - my-redis:/data\n  mailhog:\n    image: mailhog/mailhog\n    ports:\n      - \"1025:1025\"\n      - \"8025:8025\"\n# Names our volume\nvolumes:\n  my-db:\n  my-redis:\n"
  },
  {
    "path": "docs/integrations.md",
    "content": "# Abby Integration Checklist\n\n## Philosophy\n\nThe number 1 priority for every integration is **Developer Experience (DX)**\nThis means the following:\n\n- Everything is typesafe (if the language / framework allows this)\n- There should be as few boilerplate as possible\n- The code should be documented and verbose\n- It should be so simple to use that you never need to open the docs after setting Abby up once\n\n## Features\n\n### Isomorphic (Client & Server)\n\n- Retrieve the Value of a Feature Flag (typesafety: parameter should be typed and only the possible names from the config)\n- Retrieve the current variant of the User for a given A/B Test (typesafety: parameter should be typed and only the possible names from the config, return value should also be only the potential values)\n\n### Client\n\n- By default Feature Flags & A/B Tests should be rendered on the client\n- If possible there should be a central way of fetching the values from the Abby API\n- If there is a central way (e.g. React Context) data should be consumed from there\n- If not data needs to be fetched when consuming\n- If possible (Next.js, Sveltekit) Feature Flags should be rendered on the Server (SEO)\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"abby\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"build:prod\": \"turbo run build:prod\",\n    \"build:packages\": \"turbo run build --filter=./packages/*\",\n    \"test:packages\": \"turbo run test --filter=./packages/*\",\n    \"dev\": \"turbo run dev --filter=./apps/web\",\n    \"dev:packages\": \"turbo run dev --filter=./packages/*\",\n    \"dev:docs\": \"turbo run dev --filter=./apps/docs\",\n    \"dev:angular\": \"turbo run dev --filter=./apps/angular-example\",\n    \"dev:all\": \"turbo run dev --filter=!./apps/docs\",\n    \"lint\": \"biome lint --fix\",\n    \"format\": \"biome format --write\",\n    \"db:start\": \"docker-compose up -d\",\n    \"db:migrate\": \"turbo run db:migrate --filter=./apps/web\",\n    \"db:generate\": \"turbo run db:generate --filter=./apps/web\",\n    \"db:stop\": \"docker-compose down\",\n    \"ci:publish\": \"pnpm publish -r --access public\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"1.9.4\",\n    \"@changesets/cli\": \"^2.26.0\",\n    \"prettier\": \"latest\",\n    \"turbo\": \"^2.0.4\"\n  },\n  \"engines\": {\n    \"node\": \">=22.8.0\"\n  },\n  \"packageManager\": \"pnpm@9.9.0\"\n}\n"
  },
  {
    "path": "packages/angular/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# Compiled output\n/dist\n/tmp\n/out-tsc\n/bazel-out\n\n# Node\n/node_modules\nnpm-debug.log\nyarn-error.log\n\n# IDEs and editors\n.idea/\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# Visual Studio Code\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.history/*\n\n# Miscellaneous\n/.angular/cache\n.sass-cache/\n/connect.lock\n/coverage\n/libpeerconnection.log\ntestem.log\n/typings\nTESTS.xml\n\n# System files\n.DS_Store\nThumbs.db\n"
  },
  {
    "path": "packages/angular/CHANGELOG.md",
    "content": "# @tryabby/angular\n\n## 4.0.1\n\n### Patch Changes\n\n- fix build\n- Updated dependencies\n  - @tryabby/core@7.0.1\n\n## 4.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.0\n\n## 3.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@6.0.0\n\n## 2.0.10\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.4.0\n\n## 2.0.9\n\n### Patch Changes\n\n- Updated dependencies [d05cb9a]\n  - @tryabby/core@5.3.1\n\n## 2.0.8\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/core@5.3.0\n\n## 2.0.7\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.2.0\n\n## 2.0.6\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.4\n\n## 2.0.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.3\n\n## 2.0.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.2\n\n## 2.0.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.1\n\n## 2.0.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.0\n\n## 2.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n- Updated dependencies\n  - @tryabby/core@5.0.1\n\n## 2.0.0\n\n### Major Changes\n\n- add remote config\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.0.0\n\n## 1.2.0\n\n### Minor Changes\n\n- add lookup object to useAbby and ab test value function\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.2.0\n\n## 1.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.1.0\n\n## 1.0.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.1\n\n## 1.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.0\n\n## 0.1.5\n\n- make it reactive\n\n## 0.1.2\n\n- fix package.json\n\n## 0.1.1\n\n- use shared package content from @tryabby/core\n- fix abby service\n\n## 0.1.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n## 0.0.3\n\n### Patch Changes\n\n- refactor shard package\n\n## 0.0.2\n\n### Patch Changes\n\n- init\n"
  },
  {
    "path": "packages/angular/README.md",
    "content": "# @tryabby/angular\n\n## AbbyModule\n\nThe AbbyModule is an Angular module that provides a service and some directives to work with Abby.\nYou can then use the AbbyService in your components or services to interact with the Abby platform. The AbbyFlag, AbbyTest and DevtoolsComponent directives can be used in your templates to show/hide content based on feature flags or AB tests.\n\n### Parameters\n\nThe `AbbyModule.forRoot()` method takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                             | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                          | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application             | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests             | -                     |\n| flags              | `object` |          | An array containing your defined Feature Flags          | -                     |\n| settings           | `object` |          | An object with additional settings for Abby             | -                     |\n\n#### properties\n\n##### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n###### abby.ts\n\n```ts\nexport const abby = {\n  // ..your config\n  tests: {\n    test: {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n    flags: { \"test-flag\": \"Boolean\" },\n  },\n};\n\n@Injectable({\n  providedIn: \"root\",\n  useExisting: AbbyService,\n})\nexport class Abby extends AbbyService<\n  (typeof abby)[\"flags\"][number],\n  keyof (typeof abby)[\"tests\"]\n> {}\n```\n\n###### app.module.ts\n\n```ts\nimport { AbbyModule } from \"abby\";\nimport { Abby, abby } from \"./abby\";\n\n@NgModule({\n  // your config\n  imports: [\n    // your imports\n    AbbyModule.forRoot(abby),\n  ],\n  providers: [\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (abby: Abby) => () => abby.init(),\n      deps: [Abby],\n      multi: true,\n    },\n  ],\n})\nexport class AppModule {}\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValues`: Allows you to set a general default value for each flag type. The keys of the object represent the types of the flags.\n  The default value is the following:\n\n  ```json\n  {\n    \"Boolean\": false,\n    \"String\": \"\",\n    \"Number\": 0,\n    \"JSON\": {}\n  }\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the flag. This means if your flag is a `String` flag, this needs to be a `string`.\n\n## AbbyService\n\n- `AbbyService` is a angular service, which provides methods for getting\n\n### getVariant(testName: string)\n\nResolves the selected variant for a given test name.\n\n#### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n#### Return Value\n\nThe variant of the test _Type: `string`_\n\n### getFeatureFlagValue(flagName: string)\n\nResolves the value of a feature flag by the flagname.\n\n#### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n### onAct\n\nA function to call when the user performs an action associated with the test _Type: `function`_\n\n## Directives\n\n### Test Directive\n\nThe `AbbyTest` is an Angular directive provided by @tryabby/angular package that enables conditional rendering of components based on the selected variant of an A/B test. It works in conjunction with the AbbyService and is used to wrap the HTML code to be conditionally rendered.\n\n#### Parameters\n\n- `testName`: The name of the test, needs to be one of the defined tests.\n- `variant`: The name of the variant to compare with the selected variant of the test.\n\n#### Example\n\n```html\n<ng-container *abbyTest=\"{ testName: 'test-abtest', variant: 'variant-a' }\">AAAAAA</ng-container>\n<ng-container *abbyTest=\"{ testName: 'test-abtest', variant: 'variant-b' }\">BBBBBB</ng-container>\n```\n\n### Flag Directive\n\nThe AbbyFlag is an Angular directive provided by @tryabby/core package that enables conditional rendering of components based on the value of a feature flag. It works in conjunction with the AbbyService and is used to wrap the HTML code to be conditionally rendered.\n\n#### Parameters\n\nThe name of the feature flag. The name can be prefixed with ! to invert the flag value.\n\n#### Example\n\n```html\n<div *featureFlag=\"'test-flag'\"></div>\n```\n\n## Devtool Component\n\nThe DevtoolsComponent is an Angular component provided by @tryabby/angular package that renders the Abby Devtools in your application. The component is used to wrap the HTML code that renders the Abby Devtools.\n\nThe DevtoolsComponent won't work with Server Side Rendering using Angular Universal.\n\n### Example\n\n```html\n<abby-devtools></abby-devtools>\n```\n"
  },
  {
    "path": "packages/angular/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"angular\": {\n      \"projectType\": \"library\",\n      \"root\": \".\",\n      \"sourceRoot\": \"./src\",\n      \"prefix\": \"lib\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular-devkit/build-angular:ng-packagr\",\n          \"options\": {\n            \"project\": \"./ng-package.json\"\n          },\n          \"configurations\": {\n            \"production\": {\n              \"tsConfig\": \"./tsconfig.lib.prod.json\"\n            },\n            \"development\": {\n              \"tsConfig\": \"./tsconfig.lib.json\"\n            }\n          },\n          \"defaultConfiguration\": \"production\"\n        },\n        \"test\": {\n          \"builder\": \"@angular-devkit/build-angular:karma\",\n          \"options\": {\n            \"tsConfig\": \"./tsconfig.spec.json\",\n            \"polyfills\": [\"zone.js\", \"zone.js/testing\"],\n            \"karmaConfig\": \"karma.conf.js\"\n          }\n        }\n      }\n    }\n  },\n  \"cli\": {\n    \"analytics\": false\n  }\n}\n"
  },
  {
    "path": "packages/angular/karma.conf.js",
    "content": "// Karma configuration file, see link for more information\n// https://karma-runner.github.io/1.0/config/configuration-file.html\n\nmodule.exports = (config) => {\n  config.set({\n    basePath: \"\",\n    frameworks: [\"jasmine\", \"@angular-devkit/build-angular\"],\n    plugins: [\n      require(\"karma-jasmine\"),\n      require(\"karma-chrome-launcher\"),\n      require(\"@angular-devkit/build-angular/plugins/karma\"),\n      require(\"karma-junit-reporter\"),\n    ],\n    client: {\n      jasmine: {\n        // you can add configuration options for Jasmine here\n        // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html\n        // for example, you can disable the random execution with `random: false`\n        // or set a specific seed with `seed: 4321`\n        random: false,\n      },\n      clearContext: false, // leave Jasmine Spec Runner output visible in browser\n    },\n    junitReporter: {\n      useBrowserName: false,\n    },\n    reporters: [\"progress\", \"junit\"],\n    browsers: [\"ChromeHeadless\"],\n    restartOnFileChange: true,\n    autoWatch: false,\n    singleRun: true,\n    logLevel: config.LOG_INFO,\n    port: 9876,\n  });\n};\n"
  },
  {
    "path": "packages/angular/ng-package.json",
    "content": "{\n  \"$schema\": \"./node_modules/ng-packagr/ng-package.schema.json\",\n  \"dest\": \"./dist\",\n  \"lib\": {\n    \"entryFile\": \"src/public-api.ts\"\n  },\n  \"allowedNonPeerDependencies\": [\"@tryabby/core\"]\n}\n"
  },
  {
    "path": "packages/angular/package.json",
    "content": "{\n  \"name\": \"@tryabby/angular\",\n  \"version\": \"4.0.1\",\n  \"scripts\": {\n    \"ng\": \"ng\",\n    \"start\": \"ng serve\",\n    \"build\": \"ng-packagr -p ng-package.json\",\n    \"watch\": \"ng build --watch --configuration development\",\n    \"test\": \"ng test --no-watch --no-progress\"\n  },\n  \"peerDependencies\": {\n    \"@angular/common\": \"^18.1.2\",\n    \"@angular/core\": \"^18.1.2\"\n  },\n  \"dependencies\": {\n    \"@tryabby/core\": \"workspace:*\",\n    \"tslib\": \"^2.3.0\"\n  },\n  \"files\": [\"dist\"],\n  \"main\": \"./dist/esm2020/tryabby-angular.mjs\",\n  \"module\": \"./dist/esm2020/tryabby-angular.mjs\",\n  \"types\": \"./dist/index.d.ts\",\n  \"devDependencies\": {\n    \"@angular-devkit/build-angular\": \"^18.1.2\",\n    \"@angular/animations\": \"^18.1.2\",\n    \"@angular/cli\": \"~18.1.2\",\n    \"@angular/common\": \"^18.1.2\",\n    \"@angular/compiler\": \"^18.1.2\",\n    \"@angular/compiler-cli\": \"^18.1.2\",\n    \"@angular/core\": \"^18.1.2\",\n    \"@angular/forms\": \"^18.1.2\",\n    \"@angular/platform-browser\": \"^18.1.2\",\n    \"@angular/platform-browser-dynamic\": \"^18.1.2\",\n    \"@angular/router\": \"^18.1.2\",\n    \"@tryabby/devtools\": \"workspace:*\",\n    \"@types/jasmine\": \"~4.3.0\",\n    \"@types/node\": \"^20.2.5\",\n    \"jasmine-core\": \"~4.5.0\",\n    \"karma\": \"~6.4.0\",\n    \"karma-chrome-launcher\": \"~3.1.0\",\n    \"karma-coverage\": \"~2.2.0\",\n    \"karma-jasmine\": \"~5.1.0\",\n    \"karma-jasmine-html-reporter\": \"~2.0.0\",\n    \"karma-junit-reporter\": \"^2.0.1\",\n    \"ng-packagr\": \"^18.1.0\",\n    \"rxjs\": \"~7.8.0\",\n    \"ts-toolbelt\": \"^9.6.0\",\n    \"tsconfig\": \"workspace:*\",\n    \"typescript\": \"5.5.4\",\n    \"zod\": \"^3.21.4\",\n    \"zone.js\": \"~0.12.0\"\n  },\n  \"sideEffects\": false\n}\n"
  },
  {
    "path": "packages/angular/src/lib/StorageService.ts",
    "content": "import {\n  type IStorageService,\n  getABStorageKey,\n  getFFStorageKey,\n  getRCStorageKey,\n} from \"@tryabby/core\";\n\nclass ABStorageService implements IStorageService {\n  get(projectId: string, testName: string): string | null {\n    const name = `${getABStorageKey(projectId, testName)}=`;\n    const decodedCookie = decodeURIComponent(document.cookie);\n    const cookieArray = decodedCookie.split(\";\");\n\n    for (let i = 0; i < cookieArray.length; i++) {\n      let cookie = cookieArray[i];\n      while (cookie.charAt(0) === \" \") {\n        cookie = cookie.substring(1);\n      }\n      if (cookie.indexOf(name) === 0) {\n        return cookie.substring(name.length, cookie.length);\n      }\n    }\n    return null;\n  }\n\n  set(projectId: string, testName: string, value: string): void {\n    const token = getABStorageKey(projectId, testName);\n    document.cookie = `${token}=${value}`;\n  }\n\n  remove(projectId: string, testName: string): void {\n    const token = getABStorageKey(projectId, testName);\n    document.cookie = `${token}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n  }\n}\n\nclass FFStorageService implements IStorageService {\n  get(projectId: string, flagName: string): string | null {\n    const name = `${getFFStorageKey(projectId, flagName)}=`;\n    const decodedCookie = decodeURIComponent(document.cookie);\n    const cookieArray = decodedCookie.split(\";\");\n\n    for (let i = 0; i < cookieArray.length; i++) {\n      let cookie = cookieArray[i];\n      while (cookie.charAt(0) === \" \") {\n        cookie = cookie.substring(1);\n      }\n      if (cookie.indexOf(name) === 0) {\n        return cookie.substring(name.length, cookie.length);\n      }\n    }\n    return null;\n  }\n\n  set(projectId: string, flagName: string, value: string): void {\n    const token = getFFStorageKey(projectId, flagName);\n    document.cookie = `${token}=${value}`;\n  }\n\n  remove(projectId: string, flagName: string): void {\n    const token = getFFStorageKey(projectId, flagName);\n    document.cookie = `${token}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n  }\n}\n\nclass RCStorageService implements IStorageService {\n  get(projectId: string, key: string): string | null {\n    const name = `${getRCStorageKey(projectId, key)}=`;\n    const decodedCookie = decodeURIComponent(document.cookie);\n    const cookieArray = decodedCookie.split(\";\");\n\n    for (let i = 0; i < cookieArray.length; i++) {\n      let cookie = cookieArray[i];\n      while (cookie.charAt(0) === \" \") {\n        cookie = cookie.substring(1);\n      }\n      if (cookie.indexOf(name) === 0) {\n        return cookie.substring(name.length, cookie.length);\n      }\n    }\n    return null;\n  }\n  set(projectId: string, key: string, value: string): void {\n    const token = getRCStorageKey(projectId, key);\n    document.cookie = `${token}=${value}`;\n  }\n\n  remove(projectId: string, key: string): void {\n    const token = getRCStorageKey(projectId, key);\n    document.cookie = `${token}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n  }\n}\n\nexport const TestStorageService = new ABStorageService();\nexport const FlagStorageService = new FFStorageService();\nexport const RemoteConfigStorageService = new RCStorageService();\n"
  },
  {
    "path": "packages/angular/src/lib/abby-logger.service.ts",
    "content": "import { Inject, Injectable } from \"@angular/core\";\nimport type { AbbyConfig } from \"@tryabby/core\";\nimport { ABBY_CONFIG_TOKEN } from \"./abby.module\";\n\n@Injectable()\nexport class AbbyLoggerService {\n  readonly LOGGER_SCOPE = \"ng.Abby\";\n\n  constructor(@Inject(ABBY_CONFIG_TOKEN) private config: AbbyConfig) {}\n\n  log(...args: unknown[]): void {\n    if (this.config.debug) {\n      console.log(this.LOGGER_SCOPE, ...args);\n    }\n  }\n\n  warn(...args: unknown[]): void {\n    if (this.config.debug) {\n      console.warn(this.LOGGER_SCOPE, ...args);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/abby.module.ts",
    "content": "import {\n  APP_INITIALIZER,\n  InjectionToken,\n  type ModuleWithProviders,\n  NgModule,\n  inject,\n} from \"@angular/core\";\nimport type { AbbyConfig } from \"@tryabby/core\";\nimport { firstValueFrom } from \"rxjs\";\nimport { AbbyLoggerService } from \"./abby-logger.service\";\nimport { AbbyService } from \"./abby.service\";\nimport { DevtoolsComponent } from \"./devtools.component\";\nimport { AbbyFlag } from \"./flag.directive\";\nimport { GetRemoteConfigPipe } from \"./get-remote-config.pipe\";\nimport { GetAbbyVariantPipe } from \"./get-variant.pipe\";\nimport { AbbyTest } from \"./test.directive\";\n\nexport const ABBY_CONFIG_TOKEN = new InjectionToken<AbbyConfig>(\"AbbyConfig\");\n\n@NgModule({\n  declarations: [\n    AbbyFlag,\n    AbbyTest,\n    DevtoolsComponent,\n    GetAbbyVariantPipe,\n    GetRemoteConfigPipe,\n  ],\n  exports: [\n    AbbyFlag,\n    AbbyTest,\n    DevtoolsComponent,\n    GetAbbyVariantPipe,\n    GetRemoteConfigPipe,\n  ],\n})\nexport class AbbyModule {\n  static forRoot(config: AbbyConfig): ModuleWithProviders<AbbyModule> {\n    return {\n      ngModule: AbbyModule,\n      providers: [\n        {\n          provide: AbbyLoggerService,\n        },\n        {\n          provide: ABBY_CONFIG_TOKEN,\n          useValue: config, // assuming 'config' is your configuration data\n        },\n        {\n          provide: AbbyService,\n          useFactory: (config: AbbyConfig) => {\n            return new AbbyService(config, inject(AbbyLoggerService));\n          },\n          deps: [ABBY_CONFIG_TOKEN],\n        },\n        {\n          provide: APP_INITIALIZER,\n          useFactory: (abby: AbbyService) => () => firstValueFrom(abby.init()),\n          deps: [AbbyService],\n          multi: true,\n        },\n      ],\n    };\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/abby.service.spec.ts",
    "content": "import { type ComponentFixture, TestBed } from \"@angular/core/testing\";\n\nimport { AbbyModule } from \"./abby.module\";\nimport { AbbyService } from \"./abby.service\";\n\nimport { Component, Injectable } from \"@angular/core\";\nimport type { Routes } from \"@angular/router\";\nimport type { AbbyConfig } from \"@tryabby/core\";\nimport { zip } from \"rxjs\";\nimport { TestStorageService } from \"./StorageService\";\n\nconst mockConfig = {\n  projectId: \"mock-project-id\",\n  currentEnvironment: \"test\",\n  environments: [\"test\", \"production\"],\n  tests: {\n    test: {\n      variants: [\"A\", \"B\", \"C\", \"D\"],\n    },\n    test2: {\n      variants: [\"A\", \"B\"],\n    },\n    defaultTest: {\n      variants: [\"A\", \"B\"],\n    },\n  },\n  flags: [\"flag1\", \"flag2\", \"overridedFlag1\", \"overrideFlag2\", \"defaultFlag\"],\n  remoteConfig: {\n    remoteConfig1: \"String\",\n    overwrittenRemoteConfig: \"String\",\n  },\n  settings: {\n    flags: {\n      devOverrides: {\n        overridedFlag1: true,\n        overridedFlag2: false,\n      },\n      defaultValue: false,\n    },\n    remoteConfig: {\n      devOverrides: {\n        overwrittenRemoteConfig: \"asdf\",\n      },\n    },\n  },\n} satisfies AbbyConfig;\n\nconst mockedData = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n    {\n      name: \"flag2\",\n      value: false,\n    },\n    {\n      name: \"overridedFlag1\",\n      value: false,\n    },\n    {\n      name: \"overridedFlag2\",\n      value: true,\n    },\n  ],\n  remoteConfig: [\n    { name: \"remoteConfig1\", value: \"foobar\" },\n    { name: \"overwrittenRemoteConfig\", value: \"foobar\" },\n  ],\n};\n// biome-ignore lint/suspicious/noExportsInTest:>\n@Injectable({\n  providedIn: \"root\",\n  useExisting: AbbyService,\n})\nexport class Abby extends AbbyService<\n  (typeof mockConfig)[\"flags\"][number],\n  keyof (typeof mockConfig)[\"tests\"],\n  (typeof mockConfig)[\"tests\"],\n  (typeof mockConfig)[\"remoteConfig\"]\n> {}\n\ndescribe(\"AbbyService\", () => {\n  let service: Abby;\n  let fixture: ComponentFixture<TestComponent>;\n\n  @Component({\n    template: `\n      <div *abbyFlag=\"'flag1'\">\n        <h1>Flag 1</h1>\n      </div>\n      <div *abbyFlag=\"'flag2'\">\n        <h1>Flag 2</h1>\n      </div>\n      <div *abbyFlag=\"dynamicFlag\">\n        <h4>Dynamic Flag</h4>\n      </div>\n      <div *abbyTest=\"{ testName: 'test2', variant: 'A' }\">\n        <h2>A</h2>\n      </div>\n      <div *abbyTest=\"{ testName: 'test2', variant: 'B' }\">\n        <h3>B</h3>\n      </div>\n    `,\n  })\n  class TestComponent {\n    dynamicFlag = \"flag1\";\n  }\n\n  beforeAll(async () => {\n    const fetchSpy = spyOn(window, \"fetch\");\n\n    const mockedResponse = new Response(JSON.stringify(mockedData), {\n      status: 200,\n      headers: { \"Content-type\": \"application/json\" },\n    });\n\n    fetchSpy.and.returnValue(Promise.resolve(mockedResponse));\n\n    await TestBed.configureTestingModule({\n      declarations: [TestComponent],\n      imports: [AbbyModule.forRoot(mockConfig)],\n    })\n      .compileComponents()\n      .then(() => {\n        fixture = TestBed.createComponent(TestComponent);\n        fixture.detectChanges();\n      });\n    service = TestBed.inject(AbbyService);\n  });\n\n  it(\"should be created\", () => {\n    expect(service).toBeTruthy();\n  });\n\n  it(\"gets the stored feature flag value using a function properly\", () => {\n    service.getFeatureFlagValue(\"flag1\").subscribe((value) => {\n      expect(value).toEqual(true);\n    });\n\n    service.getFeatureFlagValue(\"flag2\").subscribe((value) => {\n      expect(value).toEqual(false);\n    });\n  });\n\n  it(\"returns the correct variant\", () => {\n    service.getVariant(\"test2\").subscribe((value: string) => {\n      expect(value).toEqual(\"A\");\n    });\n  });\n\n  it(\"should respect the default values for feature flags\", () => {\n    service.getFeatureFlagValue(\"defaultFlag\").subscribe((value) => {\n      expect(value).toEqual(false);\n    });\n  });\n\n  it(\"should respect the default values for variants\", () => {\n    service.getVariant(\"defaultTest\").subscribe((value: string) => {\n      expect([\"A\", \"B\"]).toContain(value);\n    });\n  });\n\n  it(\"uses the devOverrides\", () => {\n    service.getFeatureFlagValue(\"overridedFlag1\").subscribe((value) => {\n      expect(value).toEqual(true);\n    });\n\n    service.getFeatureFlagValue(\"overridedFlag2\").subscribe((value) => {\n      expect(value).toEqual(false);\n    });\n  });\n\n  it(\"should use the persistedValue\", () => {\n    const persistedValue = \"A\";\n    const _variants = [\"A\", \"B\", \"C\", \"D\"];\n\n    const getSpy = spyOn(TestStorageService, \"get\");\n    const setSpy = spyOn(TestStorageService, \"set\");\n\n    getSpy.and.returnValue(persistedValue);\n\n    service.getVariant(\"test\").subscribe((value: string) => {\n      expect(setSpy).not.toHaveBeenCalled();\n      expect(getSpy).toHaveBeenCalled();\n      expect(value).toEqual(persistedValue);\n    });\n  });\n\n  it(\"returns correct value for remote config\", () => {\n    service.getRemoteConfig(\"remoteConfig1\").subscribe((value) => {\n      expect(value).toBe(\"foobar\");\n    });\n  });\n\n  it(\"uses overwritten value for remote config\", () => {\n    service.getRemoteConfig(\"overwrittenRemoteConfig\").subscribe((value) => {\n      expect(value).toBe(\"asdf\");\n    });\n  });\n\n  it(\"should get the correct router variant\", () => {\n    @Component({})\n    class ATestComponent {}\n\n    @Component({})\n    class BTestComponent {}\n\n    @Component({})\n    class CTestComponent {}\n\n    @Component({})\n    class DTestComponent {}\n\n    @Component({})\n    class FlagComponent {}\n\n    let routes: Routes = [];\n\n    zip(\n      service.getVariant(\"test\"),\n      service.getFeatureFlagValue(\"flag1\")\n    ).subscribe(([angularTest, angularFlag]) => {\n      routes = [\n        service.getRouterVariant(angularTest, {\n          path: \"test\",\n          outlet: \"test\",\n          abbyVariants: {\n            A: {\n              title: \"TEST A\",\n              component: ATestComponent,\n            },\n            B: {\n              title: \"TEST B\",\n              component: BTestComponent,\n            },\n            C: {\n              title: \"TEST C\",\n              component: CTestComponent,\n            },\n            D: {\n              title: \"TEST D\",\n              component: DTestComponent,\n            },\n          },\n        }),\n        ...(angularFlag\n          ? [\n              {\n                path: \"flag\",\n                title: \"Flag\",\n                component: FlagComponent,\n              },\n            ]\n          : []),\n      ];\n\n      expect(routes).not.toEqual([]);\n    });\n  });\n\n  it(\"returns the correct possible variant values\", () => {\n    service.getVariants(\"test\").subscribe((value: readonly string[]) => {\n      expect(value).toEqual([\"A\", \"B\", \"C\", \"D\"]);\n    });\n  });\n\n  it(\"directives should work\", () => {\n    const compiled = fixture.nativeElement as HTMLElement;\n    const flagElement = compiled.querySelector(\"h1\");\n    const testAElement = compiled.querySelector(\"h2\");\n    const _testBElement = compiled.querySelector(\"h3\");\n\n    if (flagElement) {\n      expect(flagElement.textContent).toEqual(\"Flag 1\");\n    } else fail(\"querySelector is null\");\n    if (testAElement) {\n      expect(testAElement.textContent).toEqual(\"A\");\n    } else fail(\"querySelector is null\");\n  });\n\n  it(\"evaluates flag directives with property bound values\", () => {\n    const compiled = fixture.nativeElement as HTMLElement;\n    const flagElement = compiled.querySelector(\"h4\");\n    expect(flagElement?.textContent).toEqual(\"Dynamic Flag\");\n  });\n});\n"
  },
  {
    "path": "packages/angular/src/lib/abby.service.ts",
    "content": "import { Inject, Injectable } from \"@angular/core\";\nimport type { Route } from \"@angular/router\";\nimport type {\n  FlagRuleSet,\n  RemoteConfigValue,\n  RemoteConfigValueString,\n  RemoteConfigValueStringToType,\n} from \"@tryabby/core\";\nimport {\n  type ABConfig,\n  Abby,\n  type AbbyConfig,\n  AbbyEventType,\n  HttpService,\n} from \"@tryabby/core\";\nimport {\n  type Observable,\n  Subject,\n  from,\n  map,\n  merge,\n  of,\n  shareReplay,\n  startWith,\n  switchMap,\n  tap,\n} from \"rxjs\";\nimport {\n  FlagStorageService,\n  RemoteConfigStorageService,\n  TestStorageService,\n} from \"./StorageService\";\nimport type { AbbyLoggerService } from \"./abby-logger.service\";\n\ntype LocalData<\n  FlagName extends string = string,\n  TestName extends string = string,\n  RemoteConfigName extends string = string,\n> = {\n  tests: Record<\n    TestName,\n    ABConfig & {\n      weights?: Array<number>;\n      selectedVariant?: string;\n    }\n  >;\n  flags: Record<FlagName, { value: boolean; ruleSet?: FlagRuleSet }>;\n  remoteConfig: Record<\n    RemoteConfigName,\n    { value: RemoteConfigValue; ruleSet?: FlagRuleSet }\n  >;\n};\n\nexport type InferFlagNames<C extends AbbyConfig> = InferFlags<C>[number];\nexport type InferTestNames<C extends AbbyConfig> = InferTests<C> extends Record<\n  infer T,\n  any\n>\n  ? T\n  : never;\nexport type InferTests<C extends AbbyConfig> = NonNullable<C[\"tests\"]>;\nexport type InferFlags<C extends AbbyConfig> = NonNullable<C[\"flags\"]>;\nexport type InferRemoteConfig<C extends AbbyConfig> = NonNullable<\n  C[\"remoteConfig\"]\n>;\nexport type InferRemoteConfigName<C extends AbbyConfig> = keyof NonNullable<\n  C[\"remoteConfig\"]\n>;\n\ntype PossibleFlagName<FlagName extends string> = FlagName | `!${FlagName}`;\n\n@Injectable({ providedIn: \"root\" })\nexport class AbbyService<\n  const FlagName extends string = string,\n  const TestName extends string = string,\n  const Tests extends Record<TestName, ABConfig> = Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<\n    RemoteConfigName,\n    RemoteConfigValueString\n  > = Record<string, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string> = Extract<\n    keyof RemoteConfig,\n    string\n  >,\n> {\n  private abby: Abby<FlagName, TestName, Tests, RemoteConfig, RemoteConfigName>;\n\n  private selectedVariants: { [key: string]: string } = {};\n\n  private config: AbbyConfig<\n    FlagName,\n    Tests,\n    string[],\n    RemoteConfigName,\n    RemoteConfig\n  >;\n\n  private projectData$?: Observable<\n    LocalData<FlagName, TestName, RemoteConfigName>\n  >;\n\n  private cookieChanged$ = new Subject<void>();\n\n  constructor(\n    @Inject(AbbyService)\n    config: AbbyConfig<\n      FlagName,\n      Tests,\n      string[],\n      RemoteConfigName,\n      RemoteConfig\n    >,\n    private abbyLogger: AbbyLoggerService\n  ) {\n    this.abby = new Abby(\n      config,\n      {\n        get: (key: string) => {\n          if (typeof window === \"undefined\") return null;\n          return TestStorageService.get(config.projectId, key);\n        },\n        set: (key: string, value: any) => {\n          if (typeof window === \"undefined\") return;\n          TestStorageService.set(config.projectId, key, value);\n          this.cookieChanged$.next();\n        },\n      },\n      {\n        get: (key: string) => {\n          if (typeof window === \"undefined\") return null;\n          return FlagStorageService.get(config.projectId, key);\n        },\n        set: (key: string, value: any) => {\n          if (typeof window === \"undefined\") return;\n          FlagStorageService.set(config.projectId, key, value);\n          this.cookieChanged$.next();\n        },\n      },\n      {\n        get: (key: string) => {\n          if (typeof window === \"undefined\") return null;\n          return RemoteConfigStorageService.get(config.projectId, key);\n        },\n        set: (key: string, value: any) => {\n          if (typeof window === \"undefined\") return;\n          RemoteConfigStorageService.set(config.projectId, key, value);\n          this.cookieChanged$.next();\n        },\n      }\n    );\n\n    this.config = config;\n  }\n\n  public init(): Observable<void> {\n    return this.resolveData().pipe(map(() => void 0));\n  }\n\n  public getVariant<T extends keyof Tests>(testName: T): Observable<string> {\n    this.abbyLogger.log(`getVariant(${testName as string})`);\n\n    return this.resolveData().pipe(\n      map((_data) => this.abby.getTestVariant(testName)),\n      // biome-ignore lint/suspicious/noAssignInExpressions:>\n      tap((variant) => (this.selectedVariants[testName as string] = variant)),\n      tap((variant) =>\n        this.abbyLogger.log(`getVariant(${testName as string}) =>`, variant)\n      ),\n      shareReplay(1)\n    );\n  }\n\n  public onAct(testName: string): void {\n    this.abbyLogger.log(`onAct(${testName})`);\n\n    if (!this.selectedVariants[testName]) return;\n\n    this.abbyLogger.log({\n      url: this.config.apiUrl,\n      type: AbbyEventType.ACT,\n      data: {\n        projectId: this.config.projectId,\n        selectedVariant: this.selectedVariants[testName],\n        testName: testName,\n      },\n    });\n\n    HttpService.sendData({\n      url: this.config.apiUrl,\n      type: AbbyEventType.ACT,\n      data: {\n        projectId: this.config.projectId,\n        selectedVariant: this.selectedVariants[testName],\n        testName: testName,\n      },\n    });\n  }\n\n  public getFeatureFlagValue<F extends PossibleFlagName<FlagName>>(\n    name: F\n  ): Observable<boolean> {\n    const isFeatureFlagInverted = name.startsWith(\"!\");\n    const strippedFlagName = isFeatureFlagInverted\n      ? (name.slice(1) as FlagName)\n      : (name as FlagName);\n\n    this.abbyLogger.log(\n      `getFeatureFlagValue(${name}) -> ${this.abby.getFeatureFlag(strippedFlagName)}`\n    );\n\n    return this.resolveData().pipe(\n      map(() => this.abby.getFeatureFlag(strippedFlagName)),\n      tap((value) =>\n        this.abbyLogger.log(`getFeatureFlagValue(${name}) =>`, value)\n      ),\n      map((featureFlagValue) => {\n        return (\n          (!featureFlagValue && isFeatureFlagInverted) ||\n          (featureFlagValue && !isFeatureFlagInverted)\n        );\n      }),\n      shareReplay(1)\n    );\n  }\n\n  public getRemoteConfig<T extends RemoteConfigName>(\n    name: T\n  ): Observable<RemoteConfigValueStringToType<RemoteConfig[T]>> {\n    return this.resolveData().pipe(\n      map(() => this.abby.getRemoteConfig(name)),\n      tap((value) =>\n        this.abbyLogger.log(`getRemoteConfig(${name}) => ${value}`)\n      )\n    );\n  }\n\n  private resolveData(): Observable<\n    LocalData<FlagName, TestName, RemoteConfigName>\n  > {\n    this.projectData$ ??= from(this.abby.getProjectDataAsync()).pipe(\n      switchMap((data) => {\n        const initialData$ = of(data); // Create an observable with the initial data\n\n        return merge(this.cookieChanged$, initialData$).pipe(\n          switchMap(() => from(this.abby.getProjectDataAsync())),\n          startWith(data) // Ensure that the initial data is emitted first\n        );\n      }),\n      shareReplay(1)\n    );\n    return this.projectData$ as Observable<\n      LocalData<FlagName, TestName, RemoteConfigName>\n    >;\n  }\n\n  public getAbbyInstance(): Abby<\n    FlagName,\n    TestName,\n    Tests,\n    RemoteConfig,\n    RemoteConfigName\n  > {\n    return this.abby;\n  }\n\n  public getRouterVariant(\n    test: string,\n    baseRoute: Route & {\n      abbyVariants: Record<string, Pick<Route, \"component\" | \"title\">>;\n    }\n  ): Route {\n    return {\n      ...baseRoute,\n      ...baseRoute.abbyVariants[test],\n    };\n  }\n\n  public getVariants = <T extends keyof Tests>(name: T) => {\n    return this.resolveData().pipe(map((_data) => this.abby.getVariants(name)));\n  };\n\n  public resetAB = <T extends keyof Tests>(name: T) => {\n    TestStorageService.remove(this.config.projectId, name as string);\n  };\n}\n"
  },
  {
    "path": "packages/angular/src/lib/devtools.component.ts",
    "content": "import { Input, type OnInit, ViewChild } from \"@angular/core\";\nimport { Component, type ElementRef } from \"@angular/core\";\nimport type { AbbyDevtoolProps } from \"@tryabby/devtools\";\nimport abbyDevTool from \"@tryabby/devtools\";\n// biome-ignore lint/style/useImportType: angular\nimport { AbbyService } from \"./abby.service\";\n\n@Component({\n  selector: \"abby-devtools\",\n  template: \"<ng-container #devtoolsContainer></ng-container>\",\n})\nexport class DevtoolsComponent implements OnInit {\n  @Input() props: Omit<AbbyDevtoolProps, \"abby\">;\n  @ViewChild(\"devtoolsContainer\", { static: true })\n  devtoolsContainerRef!: ElementRef;\n\n  constructor(private readonly abby: AbbyService) {}\n\n  ngOnInit(): void {\n    if (\n      // biome-ignore lint/complexity/useLiteralKeys: angular\n      this.props?.[\"dangerouslyForceShow\"] ||\n      // biome-ignore lint/complexity/useLiteralKeys: angular\n      process.env[\"NODE_ENV\"] === \"development\"\n    ) {\n      const abbyInstance = this.abby.getAbbyInstance();\n\n      abbyDevTool.create({\n        ...this.props,\n        abby: abbyInstance,\n      });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/flag.directive.ts",
    "content": "import {\n  Directive,\n  Input,\n  OnDestroy,\n  TemplateRef,\n  // biome-ignore lint/style/useImportType: angular needs this\n  ViewContainerRef,\n} from \"@angular/core\";\nimport { Subject, distinctUntilChanged, switchMap, takeUntil } from \"rxjs\";\n// biome-ignore lint/style/useImportType: angular needs this\nimport { AbbyLoggerService } from \"./abby-logger.service\";\n// biome-ignore lint/style/useImportType: angular needs this\nimport { AbbyService } from \"./abby.service\";\n\n@Directive({\n  selector: \"[abbyFlag]\",\n})\nexport class AbbyFlag implements OnDestroy {\n  @Input()\n  set abbyFlag(featureFlag: string) {\n    // ensure featureFlag is a string to quit gracefully\n    if (typeof featureFlag !== \"string\") {\n      this.abbyLogger.warn(\n        `Expected a string as featureFlag. Got ${featureFlag}`\n      );\n      return;\n    }\n\n    this.currentFlag$.next(featureFlag);\n  }\n\n  private currentFlag$ = new Subject<string>();\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private readonly abby: AbbyService,\n    private readonly abbyLogger: AbbyLoggerService,\n    private _viewContainer: ViewContainerRef,\n    private _templateRef: TemplateRef<any>\n  ) {\n    this.currentFlag$\n      .pipe(\n        switchMap((flagName) => this.abby.getFeatureFlagValue(flagName)),\n        distinctUntilChanged(),\n        takeUntil(this.destroy$)\n      )\n      .subscribe((visible) => {\n        if (visible) {\n          this._viewContainer.createEmbeddedView(this._templateRef);\n        } else {\n          this._viewContainer.clear();\n        }\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/get-remote-config.pipe.spec.ts",
    "content": "import { TestBed } from \"@angular/core/testing\";\nimport type { AbbyConfig } from \"@tryabby/core\";\nimport { AbbyModule } from \"./abby.module\";\nimport { GetRemoteConfigPipe } from \"./get-remote-config.pipe\";\n\nconst mockConfig = {\n  projectId: \"mock-project-id\",\n  environments: [],\n  currentEnvironment: \"test\",\n  tests: {},\n  flags: [],\n  remoteConfig: {\n    remoteConfig1: \"String\",\n  },\n  settings: {},\n} satisfies AbbyConfig;\n\nconst mockedData = {\n  tests: [],\n  flags: [],\n  remoteConfig: [{ name: \"remoteConfig1\", value: \"foobar\" }],\n};\n\ndescribe(\"GetRemoteConfigurationPipe\", () => {\n  let pipe: GetRemoteConfigPipe<(typeof mockConfig)[\"remoteConfig\"]>;\n\n  let fetchSpy: any;\n\n  beforeAll(() => {\n    fetchSpy = spyOn(window, \"fetch\");\n\n    const mockedResponse = new Response(JSON.stringify(mockedData), {\n      status: 200,\n      headers: { \"Content-type\": \"application/json\" },\n    });\n\n    fetchSpy.and.returnValue(Promise.resolve(mockedResponse));\n\n    TestBed.configureTestingModule({\n      providers: [GetRemoteConfigPipe],\n      imports: [AbbyModule.forRoot(mockConfig)],\n    });\n\n    pipe = TestBed.inject(GetRemoteConfigPipe);\n  });\n\n  it(\"creates pipe correctly\", () => {\n    expect(pipe).toBeTruthy();\n  });\n\n  it(\"returns remote config value\", () => {\n    pipe.transform(\"remoteConfig1\").subscribe((value) => {\n      expect(value).toBe(\"foobar\");\n    });\n  });\n});\n"
  },
  {
    "path": "packages/angular/src/lib/get-remote-config.pipe.ts",
    "content": "import { Pipe, type PipeTransform } from \"@angular/core\";\nimport type {\n  RemoteConfigValueString,\n  RemoteConfigValueStringToType,\n} from \"@tryabby/core\";\n// biome-ignore lint/style/useImportType: angular needs this\nimport { Observable } from \"rxjs\";\n// biome-ignore lint/style/useImportType: angular needs this\nimport { AbbyService } from \"./abby.service\";\n\n@Pipe({\n  name: \"getAbbyRemoteConfig\",\n})\nexport class GetRemoteConfigPipe<\n  RemoteConfig extends Record<string, RemoteConfigValueString>,\n> implements PipeTransform\n{\n  constructor(private abbyService: AbbyService) {}\n\n  transform<T extends Extract<keyof RemoteConfig, string>>(\n    value: T\n  ): Observable<RemoteConfigValueStringToType<RemoteConfig[T]>> {\n    return this.abbyService.getRemoteConfig(value) as Observable<\n      RemoteConfigValueStringToType<RemoteConfig[T]>\n    >;\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/get-variant.pipe.spec.ts",
    "content": "import { TestBed } from \"@angular/core/testing\";\nimport type { AbbyConfig } from \"@tryabby/core\";\nimport { combineLatest } from \"rxjs\";\nimport { AbbyModule } from \"./abby.module\";\nimport { AbbyService } from \"./abby.service\";\nimport { GetAbbyVariantPipe } from \"./get-variant.pipe\";\n\nconst mockConfig = {\n  projectId: \"mock-project-id\",\n  environments: [],\n  currentEnvironment: \"test\",\n  tests: {\n    test: {\n      variants: [\"A\", \"B\", \"C\", \"D\"],\n    },\n  },\n  flags: [],\n  settings: {},\n} satisfies AbbyConfig;\n\nconst mockedData = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n  ],\n  flags: [],\n  remoteConfig: [],\n};\n\ndescribe(\"GetAbbyVariantPipe\", () => {\n  let pipe: GetAbbyVariantPipe<\n    keyof (typeof mockConfig)[\"tests\"],\n    (typeof mockConfig)[\"tests\"]\n  >;\n  let service: AbbyService<\n    (typeof mockConfig)[\"flags\"][number],\n    keyof (typeof mockConfig)[\"tests\"],\n    (typeof mockConfig)[\"tests\"]\n  >;\n\n  let fetchSpy: any;\n\n  beforeAll(() => {\n    fetchSpy = spyOn(window, \"fetch\");\n\n    const mockedResponse = new Response(JSON.stringify(mockedData), {\n      status: 200,\n      headers: { \"Content-type\": \"application/json\" },\n    });\n\n    fetchSpy.and.returnValue(Promise.resolve(mockedResponse));\n\n    TestBed.configureTestingModule({\n      providers: [GetAbbyVariantPipe],\n      imports: [AbbyModule.forRoot(mockConfig)],\n    });\n\n    service = TestBed.inject(AbbyService) as typeof service;\n    pipe = TestBed.inject(GetAbbyVariantPipe);\n  });\n\n  it(\"creates pipe correctly\", () => {\n    expect(pipe).toBeTruthy();\n  });\n\n  it(\"returns currently active variant\", () => {\n    combineLatest([\n      service.getVariant(\"test\"),\n      pipe.transform(\"test\"),\n    ]).subscribe(([expected, actual]) => {\n      expect(actual).toEqual(expected);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/angular/src/lib/get-variant.pipe.ts",
    "content": "import { Pipe, type PipeTransform } from \"@angular/core\";\nimport type { ABConfig } from \"@tryabby/core\";\nimport type { Observable } from \"rxjs\";\nimport type { Key } from \"ts-toolbelt/out/Any/Key\";\n// biome-ignore lint/style/useImportType: angular needs this\nimport { AbbyService } from \"./abby.service\";\n\n@Pipe({\n  name: \"getAbbyVariant\",\n})\nexport class GetAbbyVariantPipe<\n  const TestName extends Key,\n  const Tests extends Record<TestName, ABConfig>,\n> implements PipeTransform\n{\n  constructor(private abbyService: AbbyService<string, string, Tests>) {}\n\n  transform(testName: TestName): Observable<string> {\n    return this.abbyService.getVariant(testName);\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/lib/test.directive.ts",
    "content": "// biome-ignore lint/style/useImportType: angular needs this\nimport {\n  Directive,\n  Input,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewContainerRef,\n} from \"@angular/core\";\nimport { Subject, distinctUntilChanged, map, takeUntil } from \"rxjs\";\n\n// biome-ignore lint/style/useImportType: angular needs this\nimport { AbbyService } from \"./abby.service\";\n\n@Directive({\n  selector: \"[abbyTest]\",\n})\nexport class AbbyTest implements OnInit, OnDestroy {\n  @Input() abbyTest: { testName: string; variant: string };\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private readonly abby: AbbyService,\n    private _viewContainer: ViewContainerRef,\n    private _templateRef: TemplateRef<any>\n  ) {}\n\n  ngOnInit(): void {\n    this.abby\n      .getVariant(this.abbyTest.testName)\n      .pipe(\n        map((selectedVariant) => selectedVariant === this.abbyTest.variant),\n        distinctUntilChanged(),\n        takeUntil(this.destroy$)\n      )\n      .subscribe((visible) => {\n        if (visible) {\n          this._viewContainer.createEmbeddedView(this._templateRef);\n        } else {\n          this._viewContainer.clear();\n        }\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n}\n"
  },
  {
    "path": "packages/angular/src/public-api.ts",
    "content": "/*\n * Public API Surface of angular\n */\n\nexport * from \"./lib/abby.service\";\nexport * from \"./lib/abby.module\";\nexport * from \"./lib/test.directive\";\nexport * from \"./lib/flag.directive\";\nexport * from \"./lib/get-variant.pipe\";\nexport * from \"./lib/devtools.component\";\nexport * from \"./lib/get-remote-config.pipe\";\nexport { defineConfig } from \"@tryabby/core\";\n"
  },
  {
    "path": "packages/angular/tsconfig.json",
    "content": "{\n  \"extends\": \"tsconfig/angular-library.json\",\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"paths\": {\n      \"angular\": [\"dist\"]\n    }\n  },\n  \"angularCompilerOptions\": {\n    \"enableI18nLegacyMessageIdFormat\": false,\n    \"strictInjectionParameters\": true,\n    \"strictInputAccessModifiers\": true,\n    \"strictTemplates\": true\n  }\n}\n"
  },
  {
    "path": "packages/angular/tsconfig.lib.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/lib\",\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"inlineSources\": true,\n    \"types\": [],\n    \"experimentalDecorators\": true\n  },\n  \"exclude\": [\"**/*.spec.ts\"]\n}\n"
  },
  {
    "path": "packages/angular/tsconfig.lib.prod.json",
    "content": "{\n  \"extends\": \"./tsconfig.lib.json\",\n  \"compilerOptions\": {\n    \"declarationMap\": false\n  },\n  \"angularCompilerOptions\": {\n    \"compilationMode\": \"partial\"\n  }\n}\n"
  },
  {
    "path": "packages/angular/tsconfig.spec.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/spec\",\n    \"types\": [\"jasmine\", \"node\"]\n  },\n  \"include\": [\"**/*.spec.ts\", \"**/*.d.ts\"]\n}\n"
  },
  {
    "path": "packages/cli/.gitignore",
    "content": "dist/*"
  },
  {
    "path": "packages/cli/CHANGELOG.md",
    "content": "# @tryabby/cli\n\n## 3.0.1\n\n### Patch Changes\n\n- fix build\n\n## 3.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n## 2.0.0\n\n### Major Changes\n\n- use typescript 5\n\n## 1.2.1\n\n### Patch Changes\n\n- add version to version command\n\n## 1.2.0\n\n### Minor Changes\n\n- update ai command\n\n## 1.1.1\n\n### Patch Changes\n\n- d05cb9a: add feature flag removal command\n\n## 1.1.0\n\n### Minor Changes\n\n- introduce new add commands\n\n## 1.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n\n## 1.0.0\n\n### Major Changes\n\n- add remote config\n\n## 0.3.0\n\n### Minor Changes\n\n- add auto login flow\n\n## 0.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n"
  },
  {
    "path": "packages/cli/README.md",
    "content": "# Offical Abby CLI\n\nThe Abby CLI works with Node 10.x or higher.\n\n## Installation\n\nTo get started make sure to install the packages using your favorite package manager.\n\n```bash\nnpm i -g @tryabby/cli\n```\n\n## Usage\n\nTo get started with the CLI, you need to authenticate yourself. You can do this by running the `login` command.\n\nYou will need to obtain an API key from the [Abby Dashboard](https://www.tryabby.com/profile) first. After you have obtained your API key, run the following command:\n\n```bash\nabby login -t [YOUR_TOKEN]\n```\n\nWhen you have successfully authenticated yourself, you can start using the CLI.\n\n## Commands\n\n### `login`\n\nAuthenticate yourself with the Abby API.\n\n#### Options\n\n| Flag            | Description   | Default     | Required |\n| --------------- | ------------- | ----------- | -------- |\n| `-t`, `--token` | Your API key. | `undefined` | ✅       |\n\n### `push`\n\nPush the changes from your local config to the Abby API.\nThe updates in the cloud will happen follwing those rules\n\n- If a new test is added, it will be created in the cloud\n- If a new environment is added, it will be created in the cloud\n- If a new flag is added, it will be created in the cloud\n\n**Caveats:**\n\nYou will need to delete flags, tests and environments in the dashboard if you want to fully delete it.\nYou will then need to delete it manually from your local config. **We are working on a better solution for this.**\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n### `pull`\n\nPull the changes from the Abby API to your local config. It will merge the changes from the cloud with your local config.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n\n### `check`\n\nCheck if your local config is in sync with the Abby API. It will return a list of changes that need to be pushed or pulled.\n\n#### Options\n\n| Flag             | Description                        | Default                                        | Required |\n| ---------------- | ---------------------------------- | ---------------------------------------------- | -------- |\n| `-h`, `--host`   | The API URL for the Abby instance. | `https://www.tryabby.com`                      | ❌       |\n| `-c`, `--config` | The path to the config file.       | The nearest `abby.config.(ts,js,mjs,cjs)` file | ❌       |\n"
  },
  {
    "path": "packages/cli/package.json",
    "content": "{\n  \"name\": \"@tryabby/cli\",\n  \"version\": \"3.0.1\",\n  \"private\": false,\n  \"main\": \"./dist/index.js\",\n  \"bin\": {\n    \"abby\": \"./dist/index.js\"\n  },\n  \"files\": [\"dist\"],\n  \"scripts\": {\n    \"dev\": \"pnpm run build --watch\",\n    \"start\": \"pnpm run build && ./dist/index.js\",\n    \"create\": \"npm run build && npm run test\",\n    \"build\": \"esbuild src/index.ts --bundle --target=node10.4 --bundle --platform=node --format=cjs --outfile=dist/index.js --external:figlet  --external:prettier\",\n    \"build:prod\": \"tsc --noEmit && pnpm run build\",\n    \"refresh\": \"rm -rf ./node_modules ./package-lock.json && npm install\",\n    \"test\": \"vitest\"\n  },\n  \"dependencies\": {\n    \"chalk\": \"^5.2.0\",\n    \"clear\": \"^0.1.0\",\n    \"commander\": \"^10.0.1\",\n    \"cors\": \"^2.8.5\",\n    \"deepmerge\": \"^4.3.1\",\n    \"dotenv\": \"^16.0.3\",\n    \"esbuild\": \"0.18.17\",\n    \"figlet\": \"^1.6.0\",\n    \"globby\": \"^14.0.2\",\n    \"magicast\": \"^0.3.4\",\n    \"msw\": \"^1.2.2\",\n    \"node-fetch\": \"^3.3.1\",\n    \"ora\": \"^8.0.1\",\n    \"polka\": \"^0.5.2\",\n    \"portfinder\": \"^1.0.32\",\n    \"prettier\": \"^3.0.0\",\n    \"prompts\": \"^2.4.2\",\n    \"tsup\": \"^6.5.0\",\n    \"unconfig\": \"^0.3.10\",\n    \"vite\": \"5.4.0\",\n    \"zod\": \"^3.21.4\"\n  },\n  \"devDependencies\": {\n    \"@tryabby/core\": \"workspace:^\",\n    \"@types/cors\": \"^2.8.13\",\n    \"@types/figlet\": \"^1.5.6\",\n    \"@types/node\": \"^20.3.1\",\n    \"@types/polka\": \"^0.5.4\",\n    \"@types/prompts\": \"^2.4.5\",\n    \"nodemon\": \"^2.0.22\",\n    \"ts-node\": \"^10.9.1\",\n    \"tsconfig\": \"workspace:*\",\n    \"typescript\": \"5.5.4\",\n    \"vitest\": \"2.0.5\"\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/add-flag.ts",
    "content": "import chalk from \"chalk\";\nimport { default as prompts } from \"prompts\";\nimport { push } from \"./push\";\nimport { loadLocalConfig } from \"./util\";\n\nexport async function addFlag(options: {\n  apiKey: string;\n  host?: string;\n  configPath?: string;\n}) {\n  const { mutableConfig, saveMutableConfig, restoreConfig } =\n    await loadLocalConfig({\n      configPath: options.configPath,\n    });\n\n  const { flagName } = await prompts({\n    type: \"text\",\n    name: \"flagName\",\n    message: \"Type the name for your new flag: \",\n  });\n\n  if (!mutableConfig.flags) {\n    mutableConfig.flags = [];\n  }\n\n  if (mutableConfig.flags.includes(flagName)) {\n    console.log(chalk.red(\"A flag with that name already exists!\"));\n    return;\n  }\n\n  mutableConfig.flags.push(flagName);\n\n  try {\n    console.log(chalk.blue(\"Updating local config...\"));\n    await saveMutableConfig();\n    console.log(chalk.green(\"Local config updated successfully\"));\n\n    console.log(chalk.blue(\"Updating remote config...\"));\n    await push({\n      apiKey: options.apiKey,\n      configPath: options.configPath,\n      apiUrl: options.host,\n    });\n  } catch (error) {\n    console.log(chalk.red(\"Pushing flag failed, restoring old config file...\"));\n\n    await restoreConfig();\n\n    console.log(chalk.green(\"Restored old config file\"));\n    // pass error to command handler\n    throw error;\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/add-remote-config.ts",
    "content": "import chalk from \"chalk\";\nimport { builders } from \"magicast\";\nimport { default as prompts } from \"prompts\";\nimport { push } from \"./push\";\nimport { loadLocalConfig } from \"./util\";\n\nexport async function addRemoteConfig(options: {\n  apiKey: string;\n  host?: string;\n  configPath?: string;\n}) {\n  const { mutableConfig, saveMutableConfig, restoreConfig } =\n    await loadLocalConfig({\n      configPath: options.configPath,\n    });\n\n  const { remoteConfigName, remoteConfigType } = await prompts([\n    {\n      type: \"text\",\n      name: \"remoteConfigName\",\n      message: \"Type the name for your new remote config: \",\n    },\n    {\n      type: \"select\",\n      name: \"remoteConfigType\",\n      message: \"Select the type for your new remote config: \",\n      choices: [\n        {\n          title: \"String\",\n          value: \"String\",\n        },\n        {\n          title: \"Number\",\n          value: \"Number\",\n        },\n        {\n          title: \"JSON\",\n          value: \"JSON\",\n        },\n      ],\n    },\n  ]);\n\n  if (!mutableConfig.remoteConfig) {\n    mutableConfig.remoteConfig = builders.literal({});\n  }\n\n  if (\n    mutableConfig.remoteConfig &&\n    remoteConfigName in mutableConfig.remoteConfig\n  ) {\n    console.log(chalk.red(\"A remote config with that name already exists!\"));\n    return;\n  }\n\n  if (mutableConfig.remoteConfig) {\n    mutableConfig.remoteConfig[remoteConfigName] = remoteConfigType;\n  }\n\n  try {\n    console.log(chalk.blue(\"Updating local config...\"));\n    await saveMutableConfig();\n    console.log(chalk.green(\"Local config updated successfully\"));\n\n    console.log(chalk.blue(\"Updating remote config...\"));\n    await push({\n      apiKey: options.apiKey,\n      configPath: options.configPath,\n      apiUrl: options.host,\n    });\n    console.log(chalk.green(\"Remote config updated successfully\"));\n  } catch (error) {\n    console.log(\n      chalk.red(\n        \"Pushing the configuration failed. Restoring old config file...\"\n      )\n    );\n    await restoreConfig();\n    console.log(chalk.green(\"Old config restored.\"));\n\n    // pass error to command handler\n    throw error;\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/ai.ts",
    "content": "import { readFile } from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { getUseFeatureFlagRegex } from \"@tryabby/core\";\nimport { globby } from \"globby\";\nimport { HttpService } from \"./http\";\nimport { loadLocalConfig } from \"./util\";\n\nexport async function removeFlagInstance(options: {\n  flagName: string;\n  apiKey: string;\n  path: string;\n  host?: string;\n  configPath?: string;\n}) {\n  const files = await globby(\"**/*.tsx\", {\n    cwd: options.path,\n    gitignore: true,\n    onlyFiles: true,\n  });\n\n  const regex = getUseFeatureFlagRegex(options.flagName);\n\n  const filesToUse = (\n    await Promise.all(\n      files.flatMap(async (fp) => {\n        const filePath = path.join(options.path, fp);\n        const content = await readFile(filePath, \"utf-8\").then((content) => {\n          const matches = content.match(regex);\n          return matches ? content : null;\n        });\n        if (!content) return [];\n\n        return {\n          filePath,\n          fileContent: content,\n        };\n      })\n    )\n  ).flat();\n\n  await HttpService.getFilesWithFlagsRemoved({\n    apiKey: options.apiKey,\n    files: filesToUse,\n    flagName: options.flagName,\n    apiUrl: options.host,\n  });\n\n  let updatedFileCount = filesToUse.length;\n  try {\n    const { mutableConfig, saveMutableConfig } = await loadLocalConfig({\n      configPath: options.configPath,\n      cwd: options.path,\n    });\n\n    if (mutableConfig.flags === undefined) {\n      console.error(\"No flags found in the config file\");\n      return;\n    }\n\n    mutableConfig.flags = Array.from(mutableConfig.flags).filter(\n      (flag) => flag !== options.flagName\n    );\n    updatedFileCount++;\n    await saveMutableConfig();\n  } catch (e) {\n    console.error(e);\n    // fail silently\n  }\n  return updatedFileCount;\n}\n"
  },
  {
    "path": "packages/cli/src/auth.ts",
    "content": "import fs from \"node:fs/promises\";\nimport { z } from \"zod\";\nimport { getTokenFilePath } from \"./consts\";\n\nexport const tokenFileSchema = z.object({\n  token: z.string(),\n});\n\nexport function writeTokenFile(token: string) {\n  return fs.writeFile(getTokenFilePath(), JSON.stringify({ token }));\n}\n\nexport async function getToken() {\n  const contents = await fs.readFile(getTokenFilePath(), \"utf-8\");\n  return tokenFileSchema.parse(JSON.parse(contents)).token;\n}\n"
  },
  {
    "path": "packages/cli/src/check.ts",
    "content": "import { HttpService } from \"./http\";\nimport { loadLocalConfig } from \"./util\";\n\n/**\n * Verify that the local config is valid\n * This includes validating the local config against the schema\n * and checking that all tests and flags are present on the server\n * Think of this as a \"lint + fetch\" for the local config\n */\nexport async function verifyLocalConfig({\n  apiKey,\n  apiUrl,\n  configPath,\n}: {\n  apiKey: string;\n  apiUrl?: string;\n  configPath?: string;\n}) {\n  const { config: localConfig } = await loadLocalConfig({ configPath });\n\n  const remoteConfig = await HttpService.getConfigFromServer({\n    projectId: localConfig.projectId,\n    apiKey,\n    apiUrl,\n  });\n\n  const invalidTests = Object.keys(remoteConfig.tests ?? {}).filter((key) => {\n    return (\n      localConfig.tests[key] === undefined &&\n      localConfig.tests[key] !== remoteConfig.tests?.[key]\n    );\n  });\n\n  const invalidFlags = Object.keys(remoteConfig.flags ?? {}).filter((key) => {\n    return (\n      localConfig.flags[key] === undefined &&\n      localConfig.flags[key] !== remoteConfig.flags?.[key]\n    );\n  });\n\n  return {\n    isValid: invalidTests.length === 0 && invalidFlags.length === 0,\n    invalidTests,\n    invalidFlags,\n  };\n}\n"
  },
  {
    "path": "packages/cli/src/consts.ts",
    "content": "import os from \"node:os\";\nimport path from \"node:path\";\n\nexport const ABBY_BASE_URL = \"https://www.tryabby.com\";\n\nexport const getTokenFilePath = () => path.join(os.homedir(), \".abby\");\n"
  },
  {
    "path": "packages/cli/src/http.ts",
    "content": "import { writeFile } from \"node:fs/promises\";\nimport type { AbbyConfig, PullAbbyConfigResponse } from \"@tryabby/core\";\nimport chalk from \"chalk\";\nimport fetch from \"node-fetch\";\nimport { ABBY_BASE_URL } from \"./consts\";\nimport { multiLineLog } from \"./util\";\n\nexport abstract class HttpService {\n  static async getConfigFromServer({\n    projectId,\n    apiKey,\n    apiUrl,\n  }: {\n    projectId: string;\n    apiKey: string;\n    apiUrl?: string;\n  }) {\n    const url = apiUrl ?? ABBY_BASE_URL;\n\n    const response = await fetch(`${url}/api/v1/config/${projectId}`, {\n      method: \"GET\",\n      headers: {\n        Authorization: `Bearer ${apiKey}`,\n        \"Content-Type\": \"application/json\",\n      },\n    });\n\n    if (!response.ok) {\n      throw new Error(\"Invalid response from server\");\n    }\n\n    const responseJson = await response.json();\n    return responseJson as PullAbbyConfigResponse;\n  }\n\n  static async updateConfigOnServer({\n    apiKey,\n    localAbbyConfig,\n    apiUrl,\n  }: {\n    apiKey: string;\n    localAbbyConfig: AbbyConfig;\n    apiUrl?: string;\n  }) {\n    const url = apiUrl ?? ABBY_BASE_URL;\n\n    try {\n      const response = await fetch(\n        `${url}/api/v1/config/${localAbbyConfig.projectId}`,\n        {\n          method: \"PUT\",\n          headers: {\n            Authorization: `Bearer ${apiKey}`,\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify(localAbbyConfig),\n        }\n      );\n\n      const status = response.status;\n\n      if (status === 200) {\n        console.log(chalk.green(\"Config was pushed successfully\"));\n      } else if (status === 500) {\n        throw new Error(\"Internal server error while pushing config\");\n      } else if (status === 401) {\n        throw new Error(\"Invalid API Key\");\n      } else {\n        throw new Error(\"Push failed\");\n      }\n    } catch (e) {\n      console.log(chalk.red(multiLineLog(`Error: ${e}`)));\n      throw e;\n    }\n  }\n\n  static async getFilesWithFlagsRemoved({\n    apiKey,\n    files,\n    flagName,\n    apiUrl,\n  }: {\n    apiKey: string;\n    files: Array<{ filePath: string; fileContent: string }>;\n    flagName: string;\n    apiUrl?: string;\n  }) {\n    const url = apiUrl ?? ABBY_BASE_URL;\n\n    try {\n      const response = await fetch(`${url}/api/ee/v1/abby-ai/flag-removal`, {\n        method: \"POST\",\n        headers: {\n          Authorization: `Bearer ${apiKey}`,\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          flagName,\n          files,\n        }),\n      });\n\n      const status = response.status;\n\n      if (status === 200) {\n        const res = await response.json();\n        if (!Array.isArray(res)) {\n          throw new Error(\"Invalid response from server\");\n        }\n        await Promise.all(\n          res.map((file) => writeFile(file.filePath, file.fileContent))\n        );\n      } else if (status === 500) {\n        throw new Error(\"Internal server error trying to update files\");\n      } else if (status === 401) {\n        throw new Error(\"Invalid API Key\");\n      } else {\n        throw new Error(\"Unable to update files\");\n      }\n    } catch (e) {\n      console.log(chalk.red(multiLineLog(`Error: ${e}`)));\n      throw e;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/index.ts",
    "content": "#!/usr/bin/env node\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport * as figlet from \"figlet\";\nimport ora from \"ora\";\nimport packageJson from \"../package.json\";\nimport { addFlag } from \"./add-flag\";\nimport { addRemoteConfig } from \"./add-remote-config\";\nimport { removeFlagInstance } from \"./ai\";\nimport { getToken, writeTokenFile } from \"./auth\";\nimport { verifyLocalConfig } from \"./check\";\nimport { ABBY_BASE_URL, getTokenFilePath } from \"./consts\";\nimport { initAbbyConfig } from \"./init\";\nimport { pullAndMerge } from \"./pull\";\nimport { push } from \"./push\";\nimport { addCommandTypeSchema } from \"./schemas\";\nimport { ConfigOption, HostOption } from \"./sharedOptions\";\nimport { multiLineLog, startServerAndGetToken } from \"./util\";\n\nconst program = new Command();\n\nconsole.log(\n  chalk.magenta(figlet.textSync(\"abby-cli\", { horizontalLayout: \"full\" }))\n);\n\nprogram\n  .name(\"abby-cli\")\n  .description(\"CLI Tool for Abby\")\n  .version(packageJson.version);\n\nprogram\n  .command(\"login\")\n  .addOption(HostOption)\n  .option(\"-t, --token <token>\", \"token\")\n  .action(async ({ token, host }: { token?: string; host?: string }) => {\n    let tokenToUse = token;\n\n    // the token parameter is optional, if not given we start a login flow\n    if (typeof token !== \"string\") {\n      tokenToUse = await startServerAndGetToken(host);\n    }\n\n    if (typeof tokenToUse === \"string\") {\n      await writeTokenFile(tokenToUse);\n      console.log(\n        chalk.green(`Token successfully written to ${getTokenFilePath()}`)\n      );\n    } else {\n      console.log(\n        chalk.red(\"You need to provide a token to log in.\"),\n        chalk.green(`\\nYou can get one at ${ABBY_BASE_URL}/profile`)\n      );\n    }\n  });\n\nprogram\n  .command(\"pull\")\n  .addOption(HostOption)\n  .addOption(ConfigOption)\n  .action(async (options: { config?: string; host?: string }) => {\n    try {\n      const token = await getToken();\n      await pullAndMerge({\n        apiKey: token,\n        apiUrl: options.host,\n        configPath: options.config,\n      });\n    } catch (e) {\n      console.log(\n        chalk.red(\n          multiLineLog(\n            e instanceof Error\n              ? e.message\n              : \"Something went wrong. Please check your internet connection\"\n          )\n        )\n      );\n    }\n  });\n\nprogram\n  .command(\"push\")\n  .description(\"push local config to server\")\n  .addOption(HostOption)\n  .addOption(ConfigOption)\n  .action(async (options: { config?: string; host?: string }) => {\n    try {\n      const token = await getToken();\n      await push({\n        apiKey: token,\n        apiUrl: options.host,\n        configPath: options.config,\n      });\n    } catch (e) {\n      console.log(\n        chalk.red(\n          multiLineLog(\n            e instanceof Error\n              ? e.message\n              : \"Something went wrong. Please check your internet connection\"\n          )\n        )\n      );\n    }\n  });\n\nprogram\n  .command(\"add\")\n  .description(\"create a new flag or remote config both locally and remotely\")\n  .argument(\"<entryType>\", \"Whether you want to create a `flag` or `config`\")\n  .addOption(HostOption)\n  .addOption(ConfigOption)\n  .action(\n    async (entryType, options: { configPath?: string; host?: string }) => {\n      const parsedEntryType = addCommandTypeSchema.safeParse(entryType);\n\n      if (!parsedEntryType.success) {\n        console.log(\n          chalk.red(\n            \"Invalid type. Only `flag` or `config` are possible or leave the option empty\"\n          )\n        );\n        return;\n      }\n\n      try {\n        const token = await getToken();\n        switch (parsedEntryType.data) {\n          case \"flag\":\n            await addFlag({ ...options, apiKey: token });\n            break;\n          case \"config\":\n            await addRemoteConfig({ ...options, apiKey: token });\n            break;\n        }\n      } catch (e) {\n        console.log(\n          chalk.red(\n            multiLineLog(\n              e instanceof Error\n                ? e.message\n                : \"Something went wrong. Please check your internet connection\"\n            )\n          )\n        );\n      }\n    }\n  );\n\nprogram\n  .command(\"check\")\n  .description(\"check local config against server\")\n  .addOption(HostOption)\n  .addOption(ConfigOption)\n  .action(async (options: { config?: string; host?: string }) => {\n    try {\n      const token = await getToken();\n      const { isValid, invalidFlags, invalidTests } = await verifyLocalConfig({\n        apiKey: token,\n        apiUrl: options.host,\n        configPath: options.config,\n      });\n      if (isValid) {\n        console.log(chalk.green(\"Local config is up to date\"));\n      } else {\n        console.log(\n          chalk.red(\"Local config is not up to date\"),\n          chalk.red(`Invalid flags: ${invalidFlags.join(\", \")}`),\n          chalk.red(`Invalid tests: ${invalidTests.join(\", \")}}`)\n        );\n      }\n    } catch (e) {\n      console.log(\n        chalk.red(\n          e instanceof Error\n            ? e.message\n            : \"Something went wrong. Please check your internet connection\"\n        )\n      );\n      return;\n    }\n  });\n\nprogram\n  .command(\"init\")\n  .description(\"create your local config file\")\n  .addOption(ConfigOption)\n  .action(async (options: { config?: string }) => {\n    try {\n      const configPath = options.config ?? \"./abby.config.ts\";\n      await initAbbyConfig({ path: configPath });\n      console.log(\n        chalk.green(`Config file created successfully at ${configPath}`)\n      );\n    } catch (e) {\n      console.log(\n        chalk.red(\n          e instanceof Error\n            ? e.message\n            : \"Something went wrong. Please check your internet connection\"\n        )\n      );\n      return;\n    }\n  });\n\nconst aiCommand = program.command(\"ai\").description(\"Abby AI helpers\");\n\naiCommand\n  .command(\"remove\")\n  .description(\"remove a flag from your code\")\n  .argument(\"<dir>\", \"The directory to scan for\")\n  .argument(\"<flag>\", \"The flag name to remove\")\n  .addOption(ConfigOption)\n  .addOption(HostOption)\n  .action(\n    async (\n      dir: string,\n      flagName: string,\n      options: { config?: string; host?: string }\n    ) => {\n      const spinner = ora(\"Removing feature flag with ✨AI✨\").start();\n      const updatedFileCount = await removeFlagInstance({\n        apiKey: await getToken(),\n        flagName,\n        path: dir,\n        configPath: options.config,\n        host: options.host,\n      });\n      spinner.succeed();\n      console.log(chalk.green(\"\\nFlag removed successfully\"));\n      console.log(chalk.green(\"Files updated:\", updatedFileCount));\n    }\n  );\n\nprogram.parse(process.argv);\n"
  },
  {
    "path": "packages/cli/src/init.ts",
    "content": "import fs from \"node:fs/promises\";\nimport type { AbbyConfigFile, DynamicConfigKeys } from \"@tryabby/core\";\nimport * as prettier from \"prettier\";\n\nexport async function initAbbyConfig({ path }: { path: string }) {\n  const dynamicConfig: Pick<AbbyConfigFile, DynamicConfigKeys> = {\n    projectId: \"<YOUR_PROJECT_ID>\",\n    currentEnvironment: \"<YOUR_ENVIRONMENT>\",\n  };\n\n  const staticConfig: Omit<AbbyConfigFile, DynamicConfigKeys> = {\n    environments: [],\n  };\n\n  const fileContent = `\n  import { defineConfig } from '@tryabby/core';\n\n\n    export default defineConfig(${JSON.stringify(dynamicConfig, null, 2)}, ${JSON.stringify(\n      staticConfig,\n      null,\n      2\n    )});\n  `;\n\n  await fs.writeFile(\n    path,\n    await prettier.format(fileContent, { parser: \"typescript\" })\n  );\n}\n"
  },
  {
    "path": "packages/cli/src/pull.ts",
    "content": "import * as fs from \"node:fs/promises\";\nimport type { AbbyConfig, PullAbbyConfigResponse } from \"@tryabby/core\";\nimport deepmerge from \"deepmerge\";\nimport { HttpService } from \"./http\";\nimport { updateConfigFile } from \"./update-config-file\";\nimport { loadLocalConfig } from \"./util\";\n\nexport function mergeConfigs(\n  localConfig: AbbyConfig,\n  remoteConfig: PullAbbyConfigResponse\n) {\n  return {\n    ...localConfig,\n    environments: Array.from(\n      new Set([...localConfig.environments, ...remoteConfig.environments])\n    ),\n    tests: deepmerge(localConfig.tests ?? {}, remoteConfig.tests ?? {}),\n    flags: deepmerge(localConfig.flags ?? [], remoteConfig.flags ?? []),\n    remoteConfig: deepmerge(\n      localConfig.remoteConfig ?? {},\n      remoteConfig.remoteConfig ?? {}\n    ),\n  } satisfies AbbyConfig;\n}\n\nexport async function pullAndMerge({\n  apiKey,\n  apiUrl,\n  configPath,\n}: {\n  apiKey: string;\n  apiUrl?: string;\n  configPath?: string;\n}): Promise<void> {\n  const { config: localConfig, configFilePath } = await loadLocalConfig({\n    configPath,\n  });\n\n  const configFileContents = await fs.readFile(configFilePath, \"utf-8\");\n\n  const remoteConfig = await HttpService.getConfigFromServer({\n    projectId: localConfig.projectId,\n    apiKey,\n    apiUrl,\n  });\n\n  if (remoteConfig) {\n    const updatedConfig = mergeConfigs(localConfig, remoteConfig);\n    await updateConfigFile(updatedConfig, configFileContents, configFilePath);\n  } else {\n    console.error(\"Config in file not found\");\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/push.ts",
    "content": "import { HttpService } from \"./http\";\nimport { loadLocalConfig } from \"./util\";\n\nexport async function push({\n  apiKey,\n  apiUrl,\n  configPath,\n}: {\n  apiKey: string;\n  apiUrl?: string;\n  configPath?: string;\n}) {\n  const { config } = await loadLocalConfig({ configPath });\n\n  await HttpService.updateConfigOnServer({\n    apiKey,\n    localAbbyConfig: config,\n    apiUrl,\n  });\n}\n"
  },
  {
    "path": "packages/cli/src/schemas.ts",
    "content": "import { z } from \"zod\";\n\nexport const addCommandTypeSchema = z.enum([\"flag\", \"config\"]);\n"
  },
  {
    "path": "packages/cli/src/sharedOptions.ts",
    "content": "import { Option } from \"commander\";\n\nexport const ConfigOption = new Option(\n  \"-c, --config <config>\",\n  \"Path to your Abby config file\"\n);\n\nexport const HostOption = new Option(\n  \"-h, --host <host>\",\n  \"The URL of your Abby instance. Defaults to the cloud version\"\n);\n"
  },
  {
    "path": "packages/cli/src/update-config-file.ts",
    "content": "import * as fs from \"node:fs/promises\";\nimport {\n  type AbbyConfig,\n  DYNAMIC_ABBY_CONFIG_KEYS,\n  type DynamicConfigKeys,\n} from \"@tryabby/core\";\nimport * as prettier from \"prettier\";\n\nexport async function updateConfigFile(\n  updatedConfig: Omit<AbbyConfig, DynamicConfigKeys>,\n  configFileString: string,\n  configFilePath: string\n) {\n  const newContent = updateConfigFileContent(updatedConfig, configFileString);\n\n  if (!newContent) {\n    console.error(\"Config in file not found\");\n    return;\n  }\n\n  const formattedFile = await prettier.format(newContent, {\n    filepath: configFilePath,\n  });\n\n  await fs.writeFile(configFilePath, formattedFile);\n}\n\nfunction updateConfigFileContent(\n  updatedConfig: Omit<AbbyConfig, DynamicConfigKeys>,\n  configFileString: string\n): string {\n  // filter out keys that are marked as dynamic. Those are set in the\n  // first parameter of `defineConfig`, but we are only updating the\n  // second parameter.\n  // biome-ignore lint:\n  updatedConfig = Object.fromEntries(\n    Object.entries(updatedConfig).filter(\n      ([key]) => !(DYNAMIC_ABBY_CONFIG_KEYS as readonly string[]).includes(key)\n    )\n  ) as Omit<AbbyConfig, DynamicConfigKeys>;\n\n  // replaces newlines inside the `defineConfig(...)` part of the config\n  const defineConfigRegex = /defineConfig\\(\\s*{([\\s\\S]*?)}[\\s\\S]*\\)/;\n  // biome-ignore lint:\n  configFileString = configFileString.replace(defineConfigRegex, (match) => {\n    const replacedParameters = match.replace(/(?:\\r\\n|\\r|\\n)/g, \" \");\n    return replacedParameters;\n  });\n\n  const configRegex = /defineConfig.*, *({.*})/g;\n  const matchRegex = configRegex.exec(configFileString);\n  const matchedObject = matchRegex?.at(1);\n\n  if (!matchedObject) {\n    throw new Error(\"Invalid config file\");\n  }\n\n  const updatedContent = configFileString.replace(\n    matchedObject,\n    JSON.stringify(updatedConfig, null, 2)\n  );\n\n  return updatedContent;\n}\n"
  },
  {
    "path": "packages/cli/src/util.ts",
    "content": "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { type AbbyConfig, abbyConfigSchema } from \"@tryabby/core\";\nimport cors from \"cors\";\nimport { config as loadEnv } from \"dotenv\";\nimport { loadFile, parseModule, writeFile } from \"magicast\";\nimport polka from \"polka\";\nimport portFinder from \"portfinder\";\nimport { loadConfig } from \"unconfig\";\nimport { ABBY_BASE_URL } from \"./consts\";\n\nexport async function loadLocalConfig({\n  configPath,\n  cwd: initialCwd,\n}: {\n  configPath?: string;\n  cwd?: string;\n}) {\n  loadEnv({ path: initialCwd ? path.resolve(initialCwd, \".env\") : \"\" });\n\n  let cwd = initialCwd ?? process.cwd();\n  let fileName = \"abby.config\";\n  let extensions = [\"ts\", \"js\", \"mjs\", \"cjs\"];\n\n  // if configPath is provided, use it to load the config\n  if (configPath) {\n    const config = path.resolve(configPath);\n\n    cwd = path.dirname(config);\n    fileName = path.basename(config, path.extname(config));\n    extensions = [path.extname(config).slice(1)];\n  }\n\n  const { config, sources } = await loadConfig({\n    sources: [\n      {\n        files: fileName,\n        extensions,\n      },\n    ],\n    cwd,\n  });\n\n  if (!config || !sources[0]) throw new Error(\"Could not load config file\");\n\n  const result = await abbyConfigSchema.safeParseAsync(config);\n  if (!result.success) {\n    console.error(result.error);\n    throw new Error(\"Invalid config file\");\n  }\n  const originalConfig = await fs.readFile(sources[0], \"utf-8\");\n  const mod = await loadFile(sources[0]);\n  if (mod.exports.default.$type !== \"function-call\")\n    throw new Error(\"Invalid config file\");\n\n  return {\n    config: result.data,\n    configFilePath: sources[0],\n    mutableConfig: mod.exports.default.$args[1] as AbbyConfig,\n    saveMutableConfig: () => writeFile(mod, sources[0]),\n    restoreConfig: () => {\n      const mod = parseModule(originalConfig);\n      return writeFile(mod, sources[0]);\n    },\n  };\n}\n\nexport function multiLineLog(...args: any[]) {\n  console.log(args.join(\"\\n\"));\n}\n\nexport async function startServerAndGetToken(host?: string) {\n  const freePort = await portFinder.getPortPromise();\n\n  const url = new URL(host ?? ABBY_BASE_URL);\n  url.pathname = \"/profile/generate-token\";\n  url.searchParams.set(\"callbackUrl\", `http://localhost:${freePort}`);\n  console.log(`Please open the following URL in your Browser: ${url}`);\n\n  return new Promise<string>((resolve) => {\n    const server = polka()\n      .use(\n        cors({\n          origin: \"*\",\n          methods: [\"GET\"],\n        })\n      )\n      .get(\"/\", (req, res) => {\n        const token = req.query.token;\n        if (typeof token !== \"string\") {\n          res.statusCode = 400;\n          res.end(\"Invalid token\");\n          return;\n        }\n        res.statusCode = 200;\n        res.end();\n\n        server.server?.close();\n        resolve(token);\n      })\n      .listen(freePort);\n\n    process.on(\"SIGTERM\", () => {\n      server.server?.closeAllConnections();\n      server.server?.close();\n    });\n  });\n}\n"
  },
  {
    "path": "packages/cli/tests/abby.config.stub.ts",
    "content": "import { defineConfig } from \"@tryabby/core\";\n\nexport default defineConfig(\n  {\n    projectId: process.env.ABBY_PROJECT_ID!,\n    currentEnvironment: \"development\",\n  },\n  {\n    environments: [],\n    tests: {\n      test1: {\n        variants: [\"A\", \"B\", \"C\", \"D\"],\n      },\n      test2: {\n        variants: [\"A\", \"B\"],\n      },\n    },\n    flags: [\"flag1\"],\n    remoteConfig: { flag2: \"Number\" },\n  }\n);\n"
  },
  {
    "path": "packages/cli/tests/base.test.ts",
    "content": "import { writeFile } from \"node:fs/promises\";\nimport type { PullAbbyConfigResponse, defineConfig } from \"@tryabby/core\";\nimport { writeFile as mgWriteFile } from \"magicast\";\nimport prompts from \"prompts\";\nimport { HttpService } from \"../src/http\";\n\nimport { addFlag } from \"../src/add-flag\";\nimport { addRemoteConfig } from \"../src/add-remote-config\";\nimport { pullAndMerge } from \"../src/pull\";\nimport { push } from \"../src/push\";\n\n// we don't want to actually write to the file system\nvi.mock(\"prettier\", () => ({\n  format: (str: string) => str,\n}));\n\nvi.mock(\"fs/promises\", async () => ({\n  ...(await vi.importActual<typeof import(\"fs/promises\")>(\"fs/promises\")),\n  writeFile: vi.fn(),\n}));\n\nvi.mock(\"magicast\", async () => ({\n  ...(await vi.importActual<typeof import(\"magicast\")>(\"magicast\")),\n  writeFile: vi.fn(),\n}));\n\nconst API_KEY = \"test\";\n\nconst sampleLocalConfig = [\n  {\n    projectId: \"test\",\n    currentEnvironment: \"development\",\n  },\n  {\n    environments: [],\n    tests: {\n      test1: {\n        variants: [\"A\", \"B\", \"C\", \"D\"],\n      },\n      test2: {\n        variants: [\"A\", \"B\"],\n      },\n    },\n    flags: [\"flag1\"],\n    remoteConfig: { flag2: \"Number\" },\n  },\n] satisfies Parameters<typeof defineConfig>;\n\nconst sampleServerConfig = {\n  environments: [\"test\"],\n  tests: {\n    test1: {\n      variants: [\"A\", \"B\", \"C\", \"D\"],\n    },\n    test2: {\n      variants: [\"A\", \"B\"],\n    },\n    test3: {\n      variants: [\"A\", \"B\", \"C\", \"D\"],\n    },\n  },\n  flags: [\"flag1\"],\n  remoteConfig: { flag2: \"Number\", flag3: \"JSON\" },\n} satisfies PullAbbyConfigResponse;\n\ndescribe(\"Abby CLI\", () => {\n  beforeAll(() => {\n    process.env.ABBY_PROJECT_ID = \"test\";\n  });\n\n  beforeEach(() => {\n    vi.resetAllMocks();\n  });\n\n  it(\"pushes the config properly\", async () => {\n    const spy = vi.spyOn(HttpService, \"updateConfigOnServer\");\n\n    await push({\n      apiKey: API_KEY,\n      configPath: `${__dirname}/abby.config.stub.ts`,\n    });\n\n    expect(spy).toHaveBeenCalledOnce();\n    expect(spy).toHaveBeenCalledWith({\n      apiKey: API_KEY,\n      localAbbyConfig: { ...sampleLocalConfig[0], ...sampleLocalConfig[1] },\n    });\n  });\n\n  it(\"pulls the config properly\", async () => {\n    const spy = vi.spyOn(HttpService, \"getConfigFromServer\");\n    spy.mockResolvedValueOnce(sampleServerConfig);\n    await pullAndMerge({\n      apiKey: API_KEY,\n      configPath: `${__dirname}/abby.config.stub.ts`,\n    });\n\n    expect(spy).toHaveBeenCalledOnce();\n    expect(spy).toHaveBeenCalledWith({\n      projectId: \"test\",\n      apiKey: API_KEY,\n    });\n    expect(writeFile).toHaveBeenCalledOnce();\n    // make sure the merged test (test 3) is included in the new file\n    expect(writeFile).toHaveBeenCalledWith(\n      `${__dirname}/abby.config.stub.ts`,\n      expect.stringContaining(\"test3\")\n    );\n  });\n\n  it(\"doesn't overwrite dynamic configuration values\", async () => {\n    const spy = vi.spyOn(HttpService, \"getConfigFromServer\");\n    spy.mockResolvedValueOnce(sampleServerConfig);\n    await pullAndMerge({\n      apiKey: API_KEY,\n      configPath: `${__dirname}/abby.config.stub.ts`,\n    });\n\n    expect(writeFile).toHaveBeenCalledWith(\n      `${__dirname}/abby.config.stub.ts`,\n      expect.stringContaining(\"process.env.ABBY_PROJECT_ID\")\n    );\n  });\n\n  it(\"adds a flag and pushes it\", async () => {\n    prompts.inject([\"newFlag\"]);\n    const httpSpy = vi.spyOn(HttpService, \"updateConfigOnServer\");\n\n    await addFlag({\n      apiKey: API_KEY,\n      configPath: `${__dirname}/abby.config.stub.ts`,\n    });\n\n    expect(mgWriteFile).toHaveBeenCalledWith(\n      expect.anything(),\n      `${__dirname}/abby.config.stub.ts`\n    );\n    expect(httpSpy).toHaveBeenCalledOnce();\n  });\n\n  it(\"adds a remote config and pushes it\", async () => {\n    prompts.inject([\"newRemoteConfig\", \"String\"]);\n    const spy = vi.spyOn(HttpService, \"updateConfigOnServer\");\n\n    await addRemoteConfig({\n      apiKey: API_KEY,\n      configPath: `${__dirname}/abby.config.stub.ts`,\n    });\n\n    expect(mgWriteFile).toHaveBeenCalledWith(\n      expect.anything(),\n      `${__dirname}/abby.config.stub.ts`\n    );\n    expect(spy).toHaveBeenCalledOnce();\n  });\n\n  it(\"restores old config when push after adding flag fails\", async () => {\n    prompts.inject([\"newFlag\"]);\n    const spy = vi.spyOn(HttpService, \"updateConfigOnServer\");\n    spy.mockImplementation(() => {\n      throw new Error(\"failed\");\n    });\n\n    let errorCaught = false;\n    try {\n      await addFlag({\n        apiKey: API_KEY,\n        configPath: `${__dirname}/abby.config.stub.ts`,\n      });\n    } catch (error) {\n      expect(error).instanceof(Error);\n      expect((error as Error).message).toBe(\"failed\");\n      errorCaught = true;\n    }\n\n    expect(errorCaught).toBe(true);\n\n    expect(mgWriteFile).toHaveBeenCalledTimes(2);\n    expect(mgWriteFile).toHaveBeenLastCalledWith(\n      expect.anything(),\n      `${__dirname}/abby.config.stub.ts`\n    );\n  });\n\n  it(\"restores old config when push after adding remote config fails\", async () => {\n    prompts.inject([\"newRemoteConfig\", \"String\"]);\n    const spy = vi.spyOn(HttpService, \"updateConfigOnServer\");\n    spy.mockImplementation(() => {\n      throw new Error(\"failed\");\n    });\n\n    let errorCaught = false;\n    try {\n      await addRemoteConfig({\n        apiKey: API_KEY,\n        configPath: `${__dirname}/abby.config.stub.ts`,\n      });\n    } catch (error) {\n      expect(error).instanceof(Error);\n      expect((error as Error).message).toBe(\"failed\");\n      errorCaught = true;\n    }\n\n    expect(errorCaught).toBe(true);\n\n    expect(mgWriteFile).toHaveBeenCalledTimes(2);\n    expect(mgWriteFile).toHaveBeenLastCalledWith(\n      expect.anything(),\n      `${__dirname}/abby.config.stub.ts`\n    );\n  });\n});\n"
  },
  {
    "path": "packages/cli/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nexport const handlers = [\n  rest.get(`${ABBY_BASE_URL}/api/v1/config/:projectId`, (req, res, ctx) => {\n    const apiKey = req.url.searchParams.get(\"apiKey\");\n\n    if (apiKey === \"test\") {\n      return res(\n        ctx.json({\n          projectId: \"test\",\n          tests: {\n            test1: {\n              variants: [\"A\", \"B\", \"C\", \"D\"],\n            },\n            test2: {\n              variants: [\"A\", \"B\"],\n            },\n          },\n          flags: [\"flag1\", \"flag2\"],\n        })\n      );\n    }\n    return res(\n      ctx.json({\n        projectId: \"test\",\n        tests: {\n          test1: {\n            variants: [\"A\", \"B\", \"C\", \"D\"],\n          },\n          test2: {\n            variants: [\"A\", \"B\"],\n          },\n          test3: {\n            variants: [\"A\", \"B\", \"C\", \"D\"],\n          },\n        },\n        flags: [\"flag1\", \"flag2\", \"flag3\"],\n      })\n    );\n  }),\n  rest.put(`${ABBY_BASE_URL}api/v1/config/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json({ message: \"Config updated\" }));\n  }),\n];\n"
  },
  {
    "path": "packages/cli/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/cli/tests/setup.ts",
    "content": "import { afterEach } from \"vitest\";\n\nimport fetch from \"node-fetch\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n\nafterAll(() => server.close());\n\n// Clean up after the tests are finished.\nafterEach(() => {\n  // Reset any request handlers that we may add during the tests,\n  // so they don't affect other tests.\n  server.resetHandlers();\n});\n"
  },
  {
    "path": "packages/cli/tsconfig.json",
    "content": "{\n  \"extends\": \"tsconfig/base.json\",\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"es6\", \"es2015\", \"dom\"],\n    \"declaration\": true,\n    \"outDir\": \"dist\",\n    \"rootDir\": \"\",\n    \"strict\": true,\n    \"types\": [\"node\", \"vitest/globals\"],\n    \"esModuleInterop\": true,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true\n  }\n}\n"
  },
  {
    "path": "packages/cli/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  // we want to bundle the shared package because it's not published to npm\n  // it's hacky :)\n  clean: true,\n  sourcemap: true,\n  treeshake: true,\n  format: [\"cjs\", \"esm\"],\n});\n"
  },
  {
    "path": "packages/cli/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/core/.gitignore",
    "content": "dist"
  },
  {
    "path": "packages/core/CHANGELOG.md",
    "content": "# @tryabby/core\n\n## 7.0.1\n\n### Patch Changes\n\n- fix build\n\n## 7.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n## 6.0.0\n\n### Major Changes\n\n- use typescript 5\n\n## 5.4.0\n\n### Minor Changes\n\n- update ai command\n\n## 5.3.1\n\n### Patch Changes\n\n- d05cb9a: add feature flag removal command\n\n## 5.3.0\n\n### Minor Changes\n\n- 31d14b7: add cookie consent options\n\n## 5.2.0\n\n### Minor Changes\n\n- add helper to retrieve all flags/config variables\n\n## 5.1.4\n\n### Patch Changes\n\n- add experimentalCDN flag\n\n## 5.1.3\n\n### Patch Changes\n\n- add memory storage for tests\n\n## 5.1.2\n\n### Patch Changes\n\n- add esm packages\n\n## 5.1.1\n\n### Patch Changes\n\n- add option to use abby window data\n\n## 5.1.0\n\n### Minor Changes\n\n- add fallbackvalues to flags\n\n## 5.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n\n## 5.0.0\n\n### Major Changes\n\n- add remote config\n\n## 4.2.0\n\n### Minor Changes\n\n- add lookup object to useAbby and ab test value function\n\n## 4.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n## 4.0.1\n\n### Patch Changes\n\n- fix multi-project cookie hydratio\n\n## 4.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n## 3.4.1\n\n### Minor Changes\n\n- update abby base url\n\n## 3.4.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n## 3.3.1\n\n### Patch Changes\n\n- refactor shard package\n\n## 3.3.0\n\n### Minor Changes\n\n- use new .com domain as abby url\n\n## 3.2.0\n\n### Minor Changes\n\n- add option to force display the devtools even in non-dev environments\n\n## 3.1.0\n\n### Minor Changes\n\n- make devtools universal\n\n## 3.0.0\n\n### Major Changes\n\n- add server side flag dev support\n\n## 2.1.2\n\n### Patch Changes\n\n- add getVariants to core\n\n## 2.1.1\n\n### Patch Changes\n\n- add currentEnv note\n\n## 1.10.0\n\n### Minor Changes\n\n- use \\_\\_abby to get featureFlagValues synchronously\n\n## 1.9.1\n\n### Patch Changes\n\n- make getFeatureFlagValue async\n\n## 1.9.0\n\n### Minor Changes\n\n- prevent builds from failing when API is down\n\n## 1.8.0\n\n### Minor Changes\n\n- disable events on localhost to prevent overflowing analytics\n\n## 1.7.0\n\n### Minor Changes\n\n- remove enviroments config options\n\n## 1.6.0\n\n### Minor Changes\n\n- improve SSR for feature flags\n\n## 1.5.0\n\n### Minor Changes\n\n- improve types and devtools\n\n## 1.4.1\n\n### Patch Changes\n\n- add devtools\n\n## 1.4.0\n\n### Minor Changes\n\n- use core package\n"
  },
  {
    "path": "packages/core/package.json",
    "content": "{\n  \"name\": \"@tryabby/core\",\n  \"version\": \"7.0.1\",\n  \"description\": \"\",\n  \"main\": \"dist/index.js\",\n  \"files\": [\"dist\"],\n  \"exports\": {\n    \".\": {\n      \"require\": \"./dist/index.js\",\n      \"import\": \"./dist/index.mjs\",\n      \"types\": \"./dist/index.d.ts\"\n    },\n    \"./shared/\": {\n      \"require\": \"./dist/shared/index.js\",\n      \"import\": \"./dist/shared/index.js\",\n      \"types\": \"./dist/shared/index.d.ts\"\n    },\n    \"./config\": {\n      \"require\": \"./dist/defineConfig/index.js\",\n      \"import\": \"./dist/defineConfig/index.js\",\n      \"types\": \"./dist/defineConfig/index.d.ts\"\n    },\n    \"./validation\": {\n      \"require\": \"./dist/validation/index.js\",\n      \"import\": \"./dist/validation/index.js\",\n      \"types\": \"./dist/validation/index.d.ts\"\n    },\n    \"./schema\": {\n      \"require\": \"./dist/shared/schemas.js\",\n      \"import\": \"./dist/shared/schemas.js\",\n      \"types\": \"./dist/shared/schemas.d.ts\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsup src/\",\n    \"dev\": \"pnpm run build --watch\",\n    \"test\": \"vitest\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"msw\": \"^0.49.1\",\n    \"node-fetch\": \"^3.3.0\",\n    \"tsconfig\": \"workspace:*\",\n    \"tsup\": \"^6.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vitest\": \"2.0.5\",\n    \"zod\": \"^3.19.1\"\n  }\n}\n"
  },
  {
    "path": "packages/core/src/defineConfig.ts",
    "content": "import type { ABConfig, AbbyConfig, RemoteConfigValueString } from \".\";\nimport type { ValidatorType } from \"./validation\";\n\nexport const DYNAMIC_ABBY_CONFIG_KEYS = [\n  \"projectId\",\n  \"currentEnvironment\",\n  \"debug\",\n  \"apiUrl\",\n  \"__experimentalCdnUrl\",\n] as const satisfies readonly (keyof AbbyConfig)[];\n\nexport type DynamicConfigKeys = (typeof DYNAMIC_ABBY_CONFIG_KEYS)[number];\n\nexport function defineConfig<\n  const FlagName extends string,\n  const Tests extends Record<string, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n  const User extends Record<string, ValidatorType> = Record<\n    string,\n    ValidatorType\n  >,\n>(\n  dynamicConfig: Pick<\n    AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig, User>,\n    DynamicConfigKeys\n  >,\n  config: Omit<\n    AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig, User>,\n    DynamicConfigKeys\n  >\n) {\n  return { ...dynamicConfig, ...config };\n}\n"
  },
  {
    "path": "packages/core/src/helpers.ts",
    "content": "// taken from https://stackoverflow.com/questions/3393854/get-and-set-a-single-cookie-with-node-js-http-server\nexport function parseCookies(cookieHeader: string) {\n  const cookieRegexp = /([^;=\\s]*)=([^;]*)/g;\n  const cookies: Record<string, string> = {};\n  // biome-ignore lint/suspicious/noAssignInExpressions:>\n  // biome-ignore lint/suspicious/noImplicitAnyLet:>\n  for (let m; (m = cookieRegexp.exec(cookieHeader)); ) {\n    const [, cookieName, cookieValue] = m;\n    cookies[decodeURIComponent(cookieName)] = decodeURIComponent(cookieValue);\n  }\n\n  return cookies;\n}\n"
  },
  {
    "path": "packages/core/src/index.ts",
    "content": "import { parseCookies } from \"./helpers\";\nimport {\n  getVariantWithHeighestWeightOrFirst,\n  getWeightedRandomVariant,\n} from \"./mathHelpers\";\nimport { type FlagRuleSet, HttpService, type SubFlagRule } from \"./shared\";\nimport {\n  ABBY_AB_STORAGE_PREFIX,\n  ABBY_FF_STORAGE_PREFIX,\n  ABBY_RC_STORAGE_PREFIX,\n  ABBY_WINDOW_KEY,\n  type AbbyDataResponse,\n  DEFAULT_FEATURE_FLAG_VALUE,\n  type RemoteConfigValue,\n  type RemoteConfigValueString,\n  type RemoteConfigValueStringToType,\n  type StorageServiceOptions,\n  getDefaultRemoteConfigValue,\n  remoteConfigStringToType,\n  stringifyRemoteConfigValue,\n} from \"./shared/\";\nimport * as validation from \"./validation\";\n\nexport * from \"./shared/index\";\nexport {\n  defineConfig,\n  type DynamicConfigKeys,\n  DYNAMIC_ABBY_CONFIG_KEYS,\n} from \"./defineConfig\";\n\nexport type ABConfig<T extends string = string> = {\n  variants: ReadonlyArray<T>;\n};\n\ntype Settings<\n  FlagName extends string,\n  RemoteConfigName extends string = string,\n  RemoteConfig extends Record<\n    RemoteConfigName,\n    RemoteConfigValueString\n  > = Record<RemoteConfigName, RemoteConfigValueString>,\n> = {\n  flags?: {\n    defaultValue?: boolean;\n    devOverrides?: {\n      [K in FlagName]?: boolean;\n    };\n    fallbackValues?: {\n      [K in FlagName]?: boolean;\n    };\n  };\n  remoteConfig?: {\n    defaultValues?: {\n      [K in RemoteConfigValueString]?: RemoteConfigValueStringToType<K>;\n    };\n    devOverrides?: {\n      [K in keyof RemoteConfig]: RemoteConfigValueStringToType<RemoteConfig[K]>;\n    };\n    fallbackValues?: {\n      [K in keyof RemoteConfig]?: RemoteConfigValueStringToType<\n        RemoteConfig[K]\n      >;\n    };\n  };\n};\n\ntype LocalData<\n  FlagName extends string = string,\n  TestName extends string = string,\n  RemoteConfigName extends string = string,\n> = {\n  tests: Record<\n    TestName,\n    ABConfig & {\n      weights?: Array<number>;\n      selectedVariant?: string;\n    }\n  >;\n  flags: Record<FlagName, { value: boolean; ruleSet?: FlagRuleSet }>;\n  remoteConfig: Record<\n    RemoteConfigName,\n    { value: RemoteConfigValue; ruleSet?: FlagRuleSet }\n  >;\n};\n\ninterface PersistentStorage {\n  get: (key: string) => string | null;\n  set: (key: string, value: string, options?: StorageServiceOptions) => void;\n}\n\nexport type AbbyConfig<\n  FlagName extends string = string,\n  Tests extends Record<string, ABConfig> = Record<string, ABConfig>,\n  Environments extends Array<string> = Array<string>,\n  RemoteConfigName extends string = string,\n  RemoteConfig extends Record<\n    RemoteConfigName,\n    RemoteConfigValueString\n  > = Record<RemoteConfigName, RemoteConfigValueString>,\n  User extends Record<string, validation.ValidatorType> = Record<\n    string,\n    validation.ValidatorType\n  >,\n> = {\n  projectId: string;\n  apiUrl?: string;\n  currentEnvironment: Environments[number];\n  environments: Environments;\n  tests?: Tests;\n  flags?: FlagName[];\n  remoteConfig?: RemoteConfig;\n  settings?: Settings<FlagName, RemoteConfigName, RemoteConfig>;\n  debug?: boolean;\n  fetch?: (typeof globalThis)[\"fetch\"];\n  cookies?: {\n    disableByDefault?: boolean;\n    expiresInDays?: number;\n  };\n  __experimentalCdnUrl?: string;\n  user?: User;\n};\n\nexport class Abby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<string, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n  const Environments extends Array<string> = Array<string>,\n  const User extends Record<string, validation.ValidatorType> = Record<\n    string,\n    validation.ValidatorType\n  >,\n> {\n  private log = (...args: any[]) =>\n    this.config.debug ? console.log(\"core.Abby\", ...args) : () => {};\n\n  #data: LocalData<FlagName, TestName, RemoteConfigName> = {\n    tests: {} as any,\n    flags: {} as any,\n    remoteConfig: {} as any,\n  };\n\n  private listeners = new Set<\n    (newData: LocalData<FlagName, TestName>) => void\n  >();\n\n  private _cfg: AbbyConfig<FlagName, Tests>;\n\n  private dataInitialized = false;\n\n  private flagOverrides = new Map<string, boolean>();\n  private testOverrides: Map<\n    keyof Tests,\n    Tests[keyof Tests][\"variants\"][number]\n  > = new Map();\n  private remoteConfigOverrides = new Map<string, RemoteConfigValue>();\n\n  private COOKIE_CONSENT_KEY = \"$_abcc_$\";\n  private user = {} as {\n    -readonly [K in keyof User]: validation.Infer<User[K]>;\n  };\n\n  constructor(\n    private config: AbbyConfig<\n      FlagName,\n      Tests,\n      Environments,\n      RemoteConfigName,\n      RemoteConfig,\n      User\n    >,\n    private persistantTestStorage?: PersistentStorage,\n    private persistantFlagStorage?: PersistentStorage,\n    private persistentRemoteConfigStorage?: PersistentStorage\n  ) {\n    this._cfg = config as AbbyConfig<FlagName, Tests, Environments>;\n    this.#data.flags = Object.values(this._cfg.flags ?? {}).reduce(\n      (acc, flagName) => {\n        acc[flagName as FlagName] = {\n          value: DEFAULT_FEATURE_FLAG_VALUE,\n        };\n        return acc;\n      },\n      {} as LocalData[\"flags\"]\n    );\n    this.#data.tests = config.tests ?? ({} as any);\n    this.#data.remoteConfig = Object.keys(config.remoteConfig ?? {}).reduce(\n      (acc, remoteConfigName) => {\n        acc[remoteConfigName as RemoteConfigName] = {\n          value: this.getDefaultRemoteConfigValue(\n            remoteConfigName,\n            config.remoteConfig as any\n          ),\n        };\n\n        return acc;\n      },\n      {} as LocalData[\"remoteConfig\"]\n    );\n\n    if (persistantTestStorage) {\n      this.persistantTestStorage = {\n        get: (...args) => persistantTestStorage.get(...args),\n        set: (...args) => {\n          if (config.cookies?.disableByDefault) return;\n          const [key, value] = args;\n          persistantTestStorage.set(key, value, {\n            expiresInDays: config.cookies?.expiresInDays,\n          });\n        },\n      };\n    }\n  }\n\n  /**\n   * Helper function to load the projects data from the Abby API\n   * and init the local data\n   */\n  async loadProjectData() {\n    this.log(\"loadProjectData()\");\n    const start = Date.now();\n\n    // browser environments can load the abby data from the window object\n    // when the script is loaded from the server\n    if (\n      typeof window !== \"undefined\" &&\n      ABBY_WINDOW_KEY in window &&\n      window[ABBY_WINDOW_KEY] != null\n    ) {\n      this.log(\"loadProjectData() => using window data\");\n      return this.init(window[ABBY_WINDOW_KEY] as AbbyDataResponse);\n    }\n    const data = await HttpService.getProjectData({\n      projectId: this.config.projectId,\n      environment: this.config.currentEnvironment as string,\n      url: this.config.apiUrl,\n      fetch: this._cfg.fetch,\n      __experimentalCdnUrl: this._cfg.__experimentalCdnUrl\n        ? `${this._cfg.__experimentalCdnUrl}/${this.config.projectId}/${this.config.currentEnvironment}`\n        : undefined,\n    });\n    if (!data) {\n      this.log(\"loadProjectData() => no data\");\n      return;\n    }\n    this.log(\"loadProjectData() => finished. Elapsed: \", Date.now() - start);\n    return this.init(data);\n  }\n\n  async getProjectDataAsync(): Promise<\n    LocalData<FlagName, TestName, RemoteConfigName>\n  > {\n    this.log(\"getProjectDataAsync()\");\n\n    if (!this.dataInitialized) {\n      await this.loadProjectData();\n      this.dataInitialized = true;\n    }\n    return this.getProjectData();\n  }\n\n  /**\n   * Helper function to transform the data which is fetched from the server\n   * to the local data structure\n   */\n  private responseToLocalData<FlagName extends string, TestName extends string>(\n    data: AbbyDataResponse\n  ): LocalData<FlagName, TestName> {\n    return {\n      tests: data.tests.reduce(\n        (acc, { name, weights }) => {\n          if (!acc[name as keyof Tests]) {\n            return acc;\n          }\n\n          // assigned the fetched weights to the initial config\n          acc[name as keyof Tests] = {\n            ...acc[name as keyof Tests],\n            weights,\n          };\n          return acc;\n        },\n        (this.config.tests ?? {}) as any\n      ),\n      flags: data.flags.reduce(\n        (acc, { name, value, ruleSet }) => {\n          const evaluatedValue = ruleSet\n            ? this.evaluateUserProperties<typeof value>(ruleSet)\n            : value;\n          acc[name] = {\n            value: evaluatedValue ?? value,\n            ruleSet,\n          };\n          return acc;\n        },\n        {} as LocalData[\"flags\"]\n      ),\n      remoteConfig: (data.remoteConfig ?? []).reduce(\n        (acc, { name, value, ruleSet }) => {\n          const evaluatedValue = ruleSet\n            ? this.evaluateUserProperties<typeof value>(ruleSet)\n            : value;\n          acc[name] = {\n            value: evaluatedValue ?? value,\n            ruleSet,\n          };\n          return acc;\n        },\n        {} as LocalData[\"remoteConfig\"]\n      ),\n    };\n  }\n\n  /**\n   * Function to get the locally stored information about A/B tests, feature flags and remote config\n   * This also includes the overrides from the dev tools and the local overrides\n   * @returns the local data\n   */\n  getProjectData(): LocalData<FlagName, TestName, RemoteConfigName> {\n    this.log(\"getProjectData()\");\n\n    return {\n      tests: Object.entries(this.#data.tests).reduce(\n        (acc, [testName, test]) => {\n          acc[testName as TestName] = {\n            ...(test as Tests[TestName]),\n            selectedVariant: this.getTestVariant(testName as TestName),\n          };\n          return acc;\n        },\n        this.#data.tests\n      ),\n      flags: Object.keys(this.#data.flags).reduce((acc, flagName) => {\n        acc[flagName as FlagName] = {\n          value: this.getFeatureFlag(flagName as FlagName),\n          ruleSet: this.#data.flags[flagName as FlagName].ruleSet,\n        };\n        return acc;\n      }, this.#data.flags),\n      remoteConfig: Object.keys(this.#data.remoteConfig).reduce(\n        (acc, remoteConfigName) => {\n          acc[remoteConfigName as RemoteConfigName] = {\n            value: this.getRemoteConfig(remoteConfigName as RemoteConfigName),\n            ruleSet:\n              this.#data.remoteConfig[remoteConfigName as RemoteConfigName]\n                .ruleSet,\n          };\n          return acc;\n        },\n        this.#data.remoteConfig\n      ),\n    };\n  }\n\n  /**\n   * Function to init the local data with the data from the server as well as\n   * potentially setting the local overrides which are read from document.cookie if\n   * we are in a browser environment\n   * @param data\n   * @returns\n   */\n  init(data: AbbyDataResponse) {\n    this.log(\"init()\", data);\n\n    this.#data = this.responseToLocalData(data);\n    this.notifyListeners();\n\n    if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n      this.setLocalOverrides(document.cookie);\n    }\n\n    return this.getProjectData();\n  }\n\n  /**\n   * Function to get the value of a feature flag. This includes\n   * the overrides from the dev tools and the local overrides if in development mode\n   * otherwise it will return the value retrieved from the server\n   * @param key the name of the feature flag\n   * @returns the value of the feature flag\n   */\n  getFeatureFlag(key: FlagName): boolean {\n    this.log(\"getFeatureFlag()\", key);\n\n    const storedValue = this.#data.flags[key];\n\n    const localOverride = this.flagOverrides?.get(key as unknown as FlagName);\n\n    if (localOverride != null) {\n      return localOverride;\n    }\n\n    /**\n     * in development mode, we can override the flag values\n     * in the following priority\n     * 1. DevTools\n     * 2. DevOverrides from config\n     * 3. DevDefault from config\n     */\n    if (process.env.NODE_ENV === \"development\") {\n      const devOverride = (this.config.settings?.flags?.devOverrides as any)?.[\n        key\n      ];\n      if (devOverride != null) {\n        return devOverride;\n      }\n    }\n\n    const defaultValue = this._cfg.settings?.flags?.defaultValue;\n\n    if (storedValue !== undefined) {\n      this.log(\"getFeatureFlag() => storedValue:\", storedValue);\n\n      const evaluatedValue = storedValue.ruleSet\n        ? this.evaluateUserProperties<boolean>(storedValue.ruleSet)\n        : storedValue.value;\n\n      return evaluatedValue ?? storedValue.value;\n    }\n    // before we return the default value we check if there is a fallback value set\n    const hasFallbackValue =\n      key in (this._cfg.settings?.flags?.fallbackValues ?? {});\n\n    if (hasFallbackValue) {\n      const fallbackValue =\n        this._cfg.settings?.flags?.fallbackValues?.[key as FlagName];\n      if (fallbackValue !== undefined) {\n        if (typeof fallbackValue === \"boolean\") {\n          this.log(\"getFeatureFlag() => fallbackValue:\", fallbackValue);\n          return fallbackValue;\n        }\n        const envFallbackValue =\n          fallbackValue[this._cfg.currentEnvironment as string];\n\n        if (envFallbackValue !== undefined) {\n          this.log(\"getFeatureFlag() => envFallbackValue:\", envFallbackValue);\n          return envFallbackValue;\n        }\n      }\n    }\n\n    this.log(\"getFeatureFlag() => defaultValue:\", defaultValue ?? false);\n    return defaultValue ?? false;\n  }\n\n  /**\n   * Function to get the value of a remote config. This includes\n   * the overrides from the dev tools and the local overrides if in development mode\n   * otherwise it will return the value retrieved from the server\n   * @param key the name of the remote config\n   * @returns the value of the remote config\n   */\n  getRemoteConfig<\n    T extends RemoteConfigName,\n    Curr extends RemoteConfig[T] = RemoteConfig[T],\n  >(key: T): RemoteConfigValueStringToType<Curr> {\n    this.log(\"getRemoteConfig()\", key);\n\n    const storedValue = this.#data.remoteConfig[key];\n    const localOverride = this.remoteConfigOverrides?.get(key);\n\n    if (localOverride !== undefined) {\n      return localOverride as RemoteConfigValueStringToType<\n        RemoteConfig[RemoteConfigName]\n      >;\n    }\n\n    if (process.env.NODE_ENV === \"development\") {\n      const devOverride = (\n        this.config.settings?.remoteConfig?.devOverrides as any\n      )?.[key];\n      if (devOverride != null) {\n        return devOverride;\n      }\n    }\n\n    const defaultValue = this._cfg.remoteConfig?.[key]\n      ? this._cfg.settings?.remoteConfig?.defaultValues?.[\n          this._cfg.remoteConfig?.[key]\n        ]\n      : null;\n\n    if (storedValue === undefined) {\n      // before we return the default value we check if there is a fallback value set\n      const fallbackValue =\n        key in (this._cfg.settings?.remoteConfig?.fallbackValues ?? {});\n      if (fallbackValue) {\n        return this._cfg.settings?.remoteConfig?.fallbackValues?.[\n          key\n        ] as RemoteConfigValueStringToType<RemoteConfig[RemoteConfigName]>;\n      }\n\n      if (defaultValue != null) {\n        return defaultValue as RemoteConfigValueStringToType<\n          RemoteConfig[RemoteConfigName]\n        >;\n      }\n    }\n\n    this.log(\"getRemoteConfig() => storedValue:\", storedValue);\n\n    const evaluatedValue = storedValue.ruleSet\n      ? this.evaluateUserProperties<\n          RemoteConfigValueStringToType<RemoteConfig[RemoteConfigName]>\n        >(storedValue.ruleSet)\n      : (storedValue.value as RemoteConfigValueStringToType<\n          RemoteConfig[RemoteConfigName]\n        >);\n\n    return (\n      evaluatedValue ??\n      (storedValue.value as RemoteConfigValueStringToType<\n        RemoteConfig[RemoteConfigName]\n      >)\n    );\n  }\n\n  /**\n   * Function to get the value of a test variant. This includes\n   * the overrides from the dev tools and the local overrides if in development mode\n   * if there is no override or a stored variant we generate a new one and store it\n   * @param key The name of the test\n   * @returns the value of the test variant\n   */\n  getTestVariant<T extends keyof Tests>(key: T): Tests[T][\"variants\"][number] {\n    this.log(\"getTestVariant()\", key);\n\n    const { variants, weights } = (this.#data.tests as LocalData[\"tests\"])[\n      key as keyof LocalData[\"tests\"]\n    ];\n\n    const override = this.testOverrides.get(key);\n\n    if (process.env.NODE_ENV === \"development\" && override != null) {\n      return override;\n    }\n\n    const persistedValue = this.persistantTestStorage?.get(key as string);\n\n    if (persistedValue != null) {\n      this.log(\"getTestVariant() => persistedValue:\", persistedValue);\n\n      return persistedValue;\n    }\n    if (this.config.cookies?.disableByDefault) {\n      return getVariantWithHeighestWeightOrFirst(variants, weights);\n    }\n    const weightedVariant = getWeightedRandomVariant(variants, weights);\n    this.persistantTestStorage?.set(key as string, weightedVariant);\n\n    this.log(\"getTestVariant() => weightedVariant:\", weightedVariant);\n\n    return weightedVariant;\n  }\n\n  /**\n   * Helper function update the locally stored variant for a test\n   * @param key the name of the test\n   * @param override the value to override the test variant with\n   */\n  updateLocalVariant<T extends keyof Tests>(\n    key: T,\n    override: Tests[T][\"variants\"][number]\n  ) {\n    this.testOverrides.set(key, override);\n    this.persistantTestStorage?.set(key as string, override);\n\n    this.notifyListeners();\n  }\n\n  /**\n   * Helper function to update the locally stored value of a feature flag\n   * @param name the name of the feature flag\n   * @param value the value to override the feature flag with\n   */\n  updateFlag(name: FlagName, value: boolean) {\n    this.flagOverrides.set(name, value);\n    if (process.env.NODE_ENV === \"development\") {\n      this.persistantFlagStorage?.set(name, this.stringifiedValue(value));\n    }\n    this.notifyListeners();\n  }\n\n  /**\n   * Helper function to update the locally stored value of a remote config\n   * @param name the name of the remote config\n   * @param value the value to override the remote config with\n   */\n  updateRemoteConfig<T extends RemoteConfigName>(\n    name: RemoteConfigName,\n    value: RemoteConfigValueStringToType<RemoteConfig[T]>\n  ) {\n    this.remoteConfigOverrides.set(name, value);\n    if (process.env.NODE_ENV === \"development\") {\n      this.persistentRemoteConfigStorage?.set(\n        name,\n        this.stringifiedValue(value)\n      );\n    }\n    this.notifyListeners();\n  }\n\n  /**\n   * Function to subscribe to changes in the local data\n   * @param listener the function to call when the local data changes\n   * @returns the unsubscribe function\n   */\n  subscribe(listener: (newValue: LocalData<FlagName, TestName>) => void) {\n    this.listeners.add(listener);\n\n    return () => {\n      this.listeners.delete(listener);\n    };\n  }\n\n  /**\n   * Function to notify all listeners that the local data has changed\n   */\n  private notifyListeners() {\n    this.listeners.forEach((listener) => listener(this.getProjectData()));\n  }\n\n  /**\n   * Function to get the config passed to the Abby class\n   */\n  getConfig() {\n    return this.config;\n  }\n\n  /**\n   * Function to get all variants for a test\n   */\n  getVariants<T extends keyof Tests>(testName: T): Tests[T][\"variants\"] {\n    return this.#data.tests[testName as unknown as TestName].variants;\n  }\n\n  /**\n   * Function to initially set the local overrides from the cookies\n   * this can be either a cookie from `document.cookie` or a cookie header.\n   * This should be called after the init function\n   * @param cookies the cookie string\n   */\n  setLocalOverrides(cookies: string) {\n    const parsedCookies = parseCookies(cookies);\n\n    Object.entries(parsedCookies).forEach(([cookieName, cookieValue]) => {\n      // this happens if there are multiple abby instances. We only want to use the cookies for this instance\n      if (!cookieName.includes(`${this.config.projectId}_`)) {\n        return;\n      }\n\n      if (cookieName.startsWith(ABBY_AB_STORAGE_PREFIX)) {\n        // A/B testing cookie\n        const testName = cookieName.replace(\n          `${ABBY_AB_STORAGE_PREFIX}${this.config.projectId}_`,\n          \"\"\n        );\n\n        // special case for the cookie consent\n        if (testName === this.COOKIE_CONSENT_KEY) {\n          this.config.cookies ??= {};\n          this.config.cookies.disableByDefault = cookieValue !== \"true\";\n          return;\n        }\n\n        this.testOverrides.set(testName as TestName, cookieValue);\n        this.persistantTestStorage?.set(testName as TestName, cookieValue);\n      }\n      // FF testing cookie\n      if (cookieName.startsWith(ABBY_FF_STORAGE_PREFIX)) {\n        const flagName = cookieName.replace(\n          `${ABBY_FF_STORAGE_PREFIX}${this.config.projectId}_`,\n          \"\"\n        );\n\n        const flagValue = cookieValue === \"true\";\n        this.flagOverrides.set(flagName, flagValue);\n      }\n\n      if (\n        cookieName.startsWith(ABBY_RC_STORAGE_PREFIX) &&\n        this._cfg.remoteConfig\n      ) {\n        const remoteConfigName = cookieName.replace(\n          `${ABBY_RC_STORAGE_PREFIX}${this.config.projectId}_`,\n          \"\"\n        );\n\n        const remoteConfigValue = remoteConfigStringToType({\n          remoteConfigType: this._cfg.remoteConfig[remoteConfigName],\n          stringifiedValue: cookieValue,\n        });\n        this.remoteConfigOverrides.set(remoteConfigName, remoteConfigValue);\n      }\n    });\n  }\n\n  private getDefaultRemoteConfigValue<RemoteConfigName extends string>(\n    remoteConfigName: RemoteConfigName,\n    remoteConfig: RemoteConfig\n  ): RemoteConfigValue {\n    const remoteConfigType =\n      remoteConfig[remoteConfigName as unknown as keyof RemoteConfig];\n\n    const defaultValue =\n      this.config.settings?.remoteConfig?.defaultValues?.[remoteConfigType];\n\n    if (defaultValue !== undefined) {\n      return defaultValue as RemoteConfigValue;\n    }\n\n    return getDefaultRemoteConfigValue(remoteConfigType);\n  }\n\n  private stringifiedValue(value: RemoteConfigValue | boolean): string {\n    if (typeof value === \"boolean\") {\n      return value.toString();\n    }\n    return stringifyRemoteConfigValue(value);\n  }\n\n  /**\n   * Retruns an Array of all flags with their name and value\n   */\n  getFeatureFlags() {\n    return (Object.keys(this.#data.flags) as Array<FlagName>).map(\n      (flagName) => ({\n        name: flagName,\n        value: this.getFeatureFlag(flagName),\n      })\n    );\n  }\n\n  /**\n   * Retruns an Array of all remote config variables with their name and value\n   */\n  getRemoteConfigVariables() {\n    return (\n      Object.keys(this.#data.remoteConfig) as Array<RemoteConfigName>\n    ).map((configName) => ({\n      name: configName,\n      value: this.getRemoteConfig(configName),\n    })) as Array<{\n      name: RemoteConfigName;\n      value: RemoteConfigValueStringToType<RemoteConfig[RemoteConfigName]>;\n    }>;\n  }\n\n  /**\n   * Enables the usage of cookies for the storage of user data\n   * and also sets the cookies if possible\n   */\n  enableCookies() {\n    this.config.cookies ??= {};\n    this.config.cookies.disableByDefault = false;\n    this.persistantTestStorage?.set(this.COOKIE_CONSENT_KEY, \"true\");\n\n    Object.keys(this.#data.tests).forEach((testName) => {\n      this.persistantTestStorage?.set(\n        testName,\n        this.getTestVariant(testName as TestName)\n      );\n    });\n  }\n\n  /**\n   * Disables the usage of cookies for storage of user data\n   * and also removes all set cookies if possible\n   */\n  disableCookies() {\n    this.config.cookies ??= {};\n    this.config.cookies.disableByDefault = true;\n    this.persistantTestStorage?.set(this.COOKIE_CONSENT_KEY, \"false\");\n\n    Object.keys(this.#data.tests).forEach((testName) => {\n      this.persistantTestStorage?.set(\n        testName,\n        this.getTestVariant(testName as TestName)\n      );\n    });\n  }\n\n  updateUserProperties(\n    user: Partial<{\n      -readonly [K in keyof User]: validation.Infer<User[K]>;\n    }>\n  ) {\n    if (!this.config.user) {\n      throw new Error(\"User properties are not defined in the config\");\n    }\n\n    const validationErrors: validation.ValidationErrors = [];\n    // validate only the properties that are given as an argument\n    for (const [key, value] of Object.entries(user)) {\n      const validationErrorMessage = validation.validateProperty(\n        this.config.user[key],\n        value\n      );\n      if (validationErrorMessage) {\n        validationErrors.push({\n          property: key,\n          message: validationErrorMessage,\n        });\n      }\n    }\n    if (validationErrors.length > 0) {\n      throw new Error(\n        validationErrors.map((e) => `[${e.property}]: ${e.message}`).join(\", \")\n      );\n    }\n\n    const oldUser = { ...this.user };\n    this.user = {\n      ...this.user,\n      ...user,\n    };\n\n    // Only notify if user properties actually changed\n    if (JSON.stringify(oldUser) !== JSON.stringify(this.user)) {\n      this.log(\"updateUserProperties()\", this.user);\n      this.notifyListeners();\n    }\n  }\n\n  private evaluateUserProperties<T extends boolean | RemoteConfigValue>(\n    rules: FlagRuleSet\n  ): T | null {\n    const evaluateRule = <T extends SubFlagRule>(rule: T): T | null => {\n      if (!(rule.propertyName in this.user)) return null;\n\n      const userPropertyValue = this.user[rule.propertyName];\n      switch (rule.propertyType) {\n        case \"boolean\": {\n          if (typeof userPropertyValue !== \"boolean\") return null;\n          switch (rule.operator) {\n            case \"eq\": {\n              if (userPropertyValue === rule.value) {\n                return rule;\n              }\n              break;\n            }\n          }\n          break;\n        }\n        case \"string\": {\n          if (typeof userPropertyValue !== \"string\") return null;\n          switch (rule.operator) {\n            case \"eq\": {\n              if (userPropertyValue === rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"neq\": {\n              if (userPropertyValue !== rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"contains\": {\n              if (userPropertyValue.includes(rule.value)) {\n                return rule;\n              }\n              break;\n            }\n            case \"notContains\": {\n              if (!userPropertyValue.includes(rule.value)) {\n                return rule;\n              }\n              break;\n            }\n            case \"startsWith\": {\n              if (userPropertyValue.startsWith(rule.value)) {\n                return rule;\n              }\n              break;\n            }\n            case \"endsWith\": {\n              if (userPropertyValue.endsWith(rule.value)) {\n                return rule;\n              }\n              break;\n            }\n            case \"regex\": {\n              if (new RegExp(rule.value).test(userPropertyValue)) {\n                return rule;\n              }\n              break;\n            }\n          }\n          break;\n        }\n        case \"number\": {\n          if (typeof userPropertyValue !== \"number\") return null;\n          switch (rule.operator) {\n            case \"eq\": {\n              if (userPropertyValue === rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"neq\": {\n              if (userPropertyValue !== rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"gt\": {\n              if (userPropertyValue > rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"gte\": {\n              if (userPropertyValue >= rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"lt\": {\n              if (userPropertyValue < rule.value) {\n                return rule;\n              }\n              break;\n            }\n            case \"lte\": {\n              if (userPropertyValue <= rule.value) {\n                return rule;\n              }\n              break;\n            }\n          }\n          break;\n        }\n        default: {\n          throw new Error(\"Unsupported property type\");\n        }\n      }\n      return null;\n    };\n    for (const rule of rules) {\n      if (\"rules\" in rule) {\n        switch (rule.operator) {\n          // this means every rule in the array has to be true\n          case \"and\": {\n            let matches = true;\n            for (const subRule of rule.rules) {\n              if (!evaluateRule(subRule)) {\n                matches = false;\n                break;\n              }\n            }\n            if (matches) {\n              return rule.thenValue as T;\n            }\n            continue;\n          }\n          case \"or\": {\n            let matches = false;\n            for (const subRule of rule.rules) {\n              if (evaluateRule(subRule)) {\n                matches = true;\n                break;\n              }\n            }\n            if (matches) {\n              return rule.thenValue as T;\n            }\n            continue;\n          }\n        }\n      }\n      const result = evaluateRule(rule);\n      if (!result) continue;\n      return result.thenValue as T;\n    }\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/core/src/mathHelpers.ts",
    "content": "// taken from: https://stackoverflow.com/questions/18230217/javascript-generate-a-random-number-within-a-range-using-crypto-getrandomvalues\n// crypto.getRandomValues() is better than Math.random() because it's cryptographically secure\n// fallback to Math.random() if crypto.getRandomValues() is not available\nfunction getRandomDecimal() {\n  if (typeof window !== \"undefined\" && window.crypto) {\n    const randomBuffer = new Uint32Array(1);\n\n    window.crypto.getRandomValues(randomBuffer);\n\n    return randomBuffer[0] / (0xffffffff + 1);\n  }\n  return Math.random();\n}\n\nfunction getWeightedRandomNumber<T extends Record<string, number>>(\n  spec: T\n): keyof T {\n  let i: keyof T;\n  let sum = 0;\n  const r = getRandomDecimal();\n\n  for (i in spec) {\n    sum += spec[i];\n    if (r <= sum) break;\n  }\n\n  // biome-ignore lint/style/noNonNullAssertion:>\n  return i!;\n}\n\nfunction getDefaultWeights<Variants extends ReadonlyArray<string>>(\n  variants: Variants\n) {\n  return Array.from<number>({ length: variants.length }).fill(\n    1 / variants.length\n  );\n}\n\nexport function validateWeights<\n  Variants extends ReadonlyArray<string>,\n  Weights extends Array<number>,\n>(variants: Variants, weights?: Weights): Weights {\n  const sum = weights?.reduce((acc, weight) => acc + weight, 0);\n  return weights != null && sum === 1 && variants.length === weights.length\n    ? weights\n    : (getDefaultWeights(variants) as Weights);\n}\n\nexport function getWeightedRandomVariant<\n  Variants extends ReadonlyArray<string>,\n>(variants: Variants, weights?: Array<number>): Variants[number] {\n  const validatedWeights = validateWeights(variants, weights);\n  return getWeightedRandomNumber(\n    variants.reduce(\n      (acc, variant, index) => {\n        acc[variant as Variants[number]] = validatedWeights[index];\n        return acc;\n      },\n      {} as Record<Variants[number], number>\n    )\n  );\n}\n\nexport function getVariantWithHeighestWeightOrFirst<\n  Variants extends ReadonlyArray<string>,\n>(variants: Variants, weights?: Array<number>): Variants[number] {\n  const validatedWeights = validateWeights(variants, weights);\n  let variantWithHeighestWeight = variants[0];\n\n  for (let i = 1; i < variants.length; i++) {\n    if (validatedWeights[i] > validatedWeights[i - 1]) {\n      variantWithHeighestWeight = variants[i];\n    }\n  }\n\n  return variantWithHeighestWeight;\n}\n"
  },
  {
    "path": "packages/core/src/shared/constants.ts",
    "content": "export const DOCS_URL = \"https://docs.tryabby.com/\";\nexport const ABBY_BASE_URL = \"https://www.tryabby.com/\";\nexport const ABBY_AB_STORAGE_PREFIX = \"__abby__ab__\";\nexport const ABBY_FF_STORAGE_PREFIX = \"__abby__ff__\";\nexport const ABBY_RC_STORAGE_PREFIX = \"__abby__rc__\";\nexport const ABBY_INSTANCE_KEY = \"__abby_instance__\";\nexport const DEFAULT_FEATURE_FLAG_VALUE = false;\nexport const ABBY_WINDOW_KEY = \"__abby_data__\";\n"
  },
  {
    "path": "packages/core/src/shared/helpers.ts",
    "content": "import {\n  ABBY_AB_STORAGE_PREFIX,\n  ABBY_FF_STORAGE_PREFIX,\n  ABBY_RC_STORAGE_PREFIX,\n} from \"./constants\";\nimport type { RemoteConfigValue, RemoteConfigValueString } from \"./schemas\";\n\nexport function getABStorageKey(projectId: string, testName: string): string {\n  return `${ABBY_AB_STORAGE_PREFIX}${projectId}_${testName}`;\n}\n\nexport function getFFStorageKey(projectId: string, flagName: string): string {\n  return `${ABBY_FF_STORAGE_PREFIX}${projectId}_${flagName}`;\n}\n\nexport function getRCStorageKey(\n  projectId: string,\n  remoteConfigName: string\n): string {\n  return `${ABBY_RC_STORAGE_PREFIX}${projectId}_${remoteConfigName}`;\n}\n\nexport function assertUnreachable(_x: never): never {\n  throw new Error(\"Reached unreachable code\");\n}\n\nexport function remoteConfigStringToType({\n  stringifiedValue,\n  remoteConfigType,\n}: {\n  stringifiedValue: string;\n  remoteConfigType: RemoteConfigValueString;\n}): RemoteConfigValue {\n  switch (remoteConfigType) {\n    case \"String\":\n      return stringifiedValue;\n    case \"Number\":\n      return Number.parseInt(stringifiedValue, 10);\n    case \"JSON\":\n      return JSON.parse(stringifiedValue);\n    default:\n      assertUnreachable(remoteConfigType);\n  }\n}\n\nexport function getDefaultRemoteConfigValue(\n  remoteConfigType: RemoteConfigValueString\n): RemoteConfigValue {\n  switch (remoteConfigType) {\n    case \"String\":\n      return \"\";\n    case \"Number\":\n      return 0;\n    case \"JSON\":\n      return {};\n    default:\n      assertUnreachable(remoteConfigType);\n  }\n}\n\nexport function stringifyRemoteConfigValue(value: RemoteConfigValue) {\n  switch (typeof value) {\n    case \"number\":\n      return value.toString();\n    case \"string\":\n      return value;\n    case \"object\":\n      return JSON.stringify(value);\n    default:\n      assertUnreachable(value);\n  }\n}\n\nexport const getUseFeatureFlagRegex = (flagName: string) =>\n  new RegExp(`useFeatureFlag\\\\s*\\\\(\\\\s*['\"\\`]${flagName}['\"\\`]\\\\s*\\\\)`);\n"
  },
  {
    "path": "packages/core/src/shared/http.ts",
    "content": "import { ABBY_BASE_URL } from \"./constants\";\nimport type { AbbyDataResponse, AbbyEvent, AbbyEventType } from \"./index\";\n\nexport abstract class HttpService {\n  static async getProjectData({\n    projectId,\n    environment,\n    url,\n    fetch = globalThis.fetch,\n    __experimentalCdnUrl,\n  }: {\n    projectId: string;\n    environment?: string;\n    url?: string;\n    __experimentalCdnUrl?: string;\n    fetch?: (typeof globalThis)[\"fetch\"];\n  }) {\n    try {\n      const res = await fetch(\n        __experimentalCdnUrl ??\n          `${url ?? ABBY_BASE_URL}api/v2/data/${projectId}${\n            environment ? `?environment=${environment}` : \"\"\n          }`\n      );\n\n      if (!res.ok) return null;\n      const data = (await res.json()) as AbbyDataResponse;\n      return data;\n    } catch (_err) {\n      console.error(\n        \"[ABBY]: failed to load project data, falling back to defaults\"\n      );\n      return null;\n    }\n  }\n\n  static sendData({\n    url,\n    type,\n    data,\n  }: {\n    url?: string;\n    type: AbbyEventType;\n    data: Omit<AbbyEvent, \"type\">;\n  }) {\n    if (\n      typeof window === \"undefined\" ||\n      window.location.hostname === \"localhost\"\n    ) {\n      // don't send data in development\n      return;\n    }\n    return fetch(`${url ?? ABBY_BASE_URL}api/data`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({ type, ...data }),\n      // catch error and forget about them for now\n      // TODO: add error debugging\n    }).catch(() => {});\n  }\n}\n"
  },
  {
    "path": "packages/core/src/shared/index.ts",
    "content": "export * from \"./types\";\nexport * from \"./schemas\";\nexport * from \"./constants\";\nexport * from \"./helpers\";\nexport * from \"./http\";\nexport * from \"./interfaces\";\n"
  },
  {
    "path": "packages/core/src/shared/interfaces.ts",
    "content": "export interface StorageServiceOptions {\n  expiresInDays?: number;\n}\n\nexport interface IStorageService {\n  get(projectId: string, key: string): string | null;\n  set(\n    projectId: string,\n    key: string,\n    value: string,\n    options?: StorageServiceOptions\n  ): void;\n  remove(projectId: string, key: string): void;\n}\n"
  },
  {
    "path": "packages/core/src/shared/schemas.ts",
    "content": "import { z } from \"zod\";\nimport type { AbbyConfig } from \"..\";\nimport { AbbyEventType } from \"./types\";\n\nexport const abbyEventSchema = z.object({\n  type: z.nativeEnum(AbbyEventType),\n  projectId: z.string(),\n  testName: z.string(),\n  selectedVariant: z.string(),\n});\n\nexport type AbbyEvent = z.infer<typeof abbyEventSchema>;\n\nexport const remoteConfigValue = z.union([\n  z.string(),\n  z.number(),\n  z.record(z.string(), z.unknown()),\n]);\n\nexport const remoteConfigValueStringSchema = z.union([\n  z.literal(\"String\"),\n  z.literal(\"Number\"),\n  z.literal(\"JSON\"),\n]);\n\nconst validatorType = z.object({\n  type: z.union([\n    z.literal(\"string\"),\n    z.literal(\"number\"),\n    z.literal(\"boolean\"),\n  ]),\n  optional: z.boolean().optional(),\n});\n\nexport type ValidatorType = z.infer<typeof validatorType>;\n\nexport const abbyConfigSchema = z.object({\n  projectId: z.string(),\n  apiUrl: z.string().optional(),\n  currentEnvironment: z.string(),\n  environments: z.array(z.string()),\n  tests: z\n    .record(\n      z.object({\n        variants: z.array(z.string()),\n      })\n    )\n    .optional(),\n  flags: z.array(z.string()).optional(),\n  remoteConfig: z.record(remoteConfigValueStringSchema).optional(),\n  settings: z\n    .object({\n      flags: z\n        .object({\n          defaultValue: z.boolean().optional(),\n          devOverrides: z.record(z.string(), z.boolean()).optional(),\n        })\n        .optional(),\n      remoteConfig: z\n        .object({\n          defaultValues: z\n            .object({\n              String: z.string(),\n              Number: z.number(),\n              JSON: z.record(z.string(), z.unknown()),\n            })\n            .partial(),\n          devOverrides: z.record(z.string(), remoteConfigValue).optional(),\n        })\n        .optional(),\n    })\n    .optional(),\n  debug: z.boolean().optional(),\n  cookies: z\n    .object({\n      disableByDefault: z.boolean().optional(),\n      expiresInDays: z.number().optional(),\n    })\n    .optional(),\n  __experimentalCdnUrl: z.string().optional(),\n  user: z.record(z.string(), validatorType).optional(),\n}) satisfies z.ZodType<AbbyConfig>;\n\nexport type AbbyConfigFile = z.infer<typeof abbyConfigSchema>;\n\nexport type PullAbbyConfigResponse = Pick<\n  AbbyConfigFile,\n  \"environments\" | \"flags\" | \"tests\" | \"remoteConfig\"\n>;\n\nexport type RemoteConfigValue = z.infer<typeof remoteConfigValue>;\n\nexport type RemoteConfigValueString = z.infer<\n  typeof remoteConfigValueStringSchema\n>;\n\nexport type RemoteConfigValueStringToType<T extends RemoteConfigValueString> =\n  T extends \"String\"\n    ? string\n    : T extends \"Number\"\n      ? number\n      : T extends \"JSON\"\n        ? Record<string, unknown>\n        : never;\n\nconst flagValueSchema = z.union([\n  z.string(),\n  z.boolean(),\n  z.number(),\n  z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])),\n]);\n\nconst stringFlagRuleSchema = z.object({\n  propertyName: z.string().min(1),\n  propertyType: z.literal(\"string\"),\n  operator: z.union([\n    z.literal(\"eq\"),\n    z.literal(\"neq\"),\n    z.literal(\"contains\"),\n    z.literal(\"notContains\"),\n    z.literal(\"startsWith\"),\n    z.literal(\"endsWith\"),\n    z.literal(\"regex\"),\n  ]),\n  value: z.string(),\n  thenValue: flagValueSchema,\n});\n\nconst numberFlagRuleSchema = z.object({\n  propertyName: z.string().min(1),\n  propertyType: z.literal(\"number\"),\n  operator: z.union([\n    z.literal(\"eq\"),\n    z.literal(\"neq\"),\n    z.literal(\"gt\"),\n    z.literal(\"gte\"),\n    z.literal(\"lt\"),\n    z.literal(\"lte\"),\n  ]),\n  value: z.number(),\n  thenValue: flagValueSchema,\n});\n\nconst booleanFlagRuleSchema = z.object({\n  propertyName: z.string().min(1),\n  propertyType: z.literal(\"boolean\"),\n  operator: z.literal(\"eq\"),\n  value: z.boolean(),\n  thenValue: flagValueSchema,\n});\n\nexport const flagRuleSchema = z.discriminatedUnion(\"propertyType\", [\n  stringFlagRuleSchema,\n  numberFlagRuleSchema,\n  booleanFlagRuleSchema,\n]);\n\nexport const subFlagRuleSchema = z.discriminatedUnion(\"propertyType\", [\n  stringFlagRuleSchema.omit({ thenValue: true }),\n  numberFlagRuleSchema.omit({ thenValue: true }),\n  booleanFlagRuleSchema.omit({ thenValue: true }),\n]);\n\nexport const flagRulesSetSchema = z.array(\n  flagRuleSchema.or(\n    z.object({\n      operator: z.union([z.literal(\"and\"), z.literal(\"or\")]),\n      rules: z.array(subFlagRuleSchema).min(1),\n      thenValue: flagValueSchema,\n    })\n  )\n);\n\nexport type FlagRuleSet = z.infer<typeof flagRulesSetSchema>;\nexport type FlagRule = z.infer<typeof flagRuleSchema>;\nexport type SubFlagRule = z.infer<typeof subFlagRuleSchema>;\ntype StringFlagRule = z.infer<typeof stringFlagRuleSchema>;\ntype NumberFlagRule = z.infer<typeof numberFlagRuleSchema>;\ntype BooleanFlagRule = z.infer<typeof booleanFlagRuleSchema>;\n\nexport const getOperatorsForType = (type: FlagRule[\"propertyType\"]) => {\n  switch (type) {\n    case \"string\":\n      return [\n        \"eq\",\n        \"neq\",\n        \"contains\",\n        \"notContains\",\n        \"startsWith\",\n        \"endsWith\",\n        \"regex\",\n      ] satisfies Array<StringFlagRule[\"operator\"]>;\n    case \"number\":\n      return [\"eq\", \"neq\", \"gt\", \"gte\", \"lt\", \"lte\"] satisfies Array<\n        NumberFlagRule[\"operator\"]\n      >;\n    case \"boolean\":\n      return [\"eq\"] satisfies Array<BooleanFlagRule[\"operator\"]>;\n    default: {\n      return [];\n    }\n  }\n};\n\nexport const getDisplayNameForOperator = (operator: FlagRule[\"operator\"]) => {\n  switch (operator) {\n    case \"eq\":\n      return \"equals\";\n    case \"neq\":\n      return \"does not equal\";\n    case \"contains\":\n      return \"contains\";\n    case \"notContains\":\n      return \"does not contain\";\n    case \"startsWith\":\n      return \"starts with\";\n    case \"endsWith\":\n      return \"ends with\";\n    case \"regex\":\n      return \"matches regex\";\n    case \"gt\":\n      return \"greater than\";\n    case \"gte\":\n      return \"greater than or equal to\";\n    case \"lt\":\n      return \"less than\";\n    case \"lte\":\n      return \"less than or equal to\";\n    default: {\n      return operator;\n    }\n  }\n};\n"
  },
  {
    "path": "packages/core/src/shared/types.ts",
    "content": "import type { ABConfig, FlagRuleSet, RemoteConfigValue } from \"..\";\n\nexport enum AbbyEventType {\n  PING = 0,\n  ACT = 1,\n}\n\nexport type AbbyDataResponse = {\n  tests: Array<{\n    name: string;\n    weights: number[];\n  }>;\n  flags: Array<{\n    name: string;\n    value: boolean;\n    ruleSet?: FlagRuleSet;\n  }>;\n  remoteConfig: Array<{\n    name: string;\n    value: RemoteConfigValue;\n    ruleSet?: FlagRuleSet;\n  }>;\n};\n\nexport type LegacyAbbyDataResponse = {\n  tests: Array<{\n    name: string;\n    weights: number[];\n  }>;\n  flags: Array<{ name: string; isEnabled: boolean }>;\n};\n\nexport type ExtractVariants<\n  TestName extends string,\n  Tests extends Record<TestName, ABConfig>,\n> = Tests[TestName][\"variants\"][number];\n"
  },
  {
    "path": "packages/core/src/validation/index.ts",
    "content": "import type { ValidatorType } from \"../shared/schemas\";\nexport type { ValidatorType };\n\ntype StringValidatorType = { type: \"string\" };\ntype NumberValidatorType = { type: \"number\" };\ntype BooleanValidatorType = { type: \"boolean\" };\n\nexport const string = () => ({ type: \"string\" }) as StringValidatorType;\nexport const number = () => ({ type: \"number\" }) as NumberValidatorType;\nexport const boolean = () => ({ type: \"boolean\" }) as BooleanValidatorType;\n\nexport const optional = <\n  T extends StringValidatorType | NumberValidatorType | BooleanValidatorType,\n>(\n  type: T\n) => ({ ...type, optional: true }) as const;\n\nexport type Infer<T> = T extends StringValidatorType\n  ? T extends { optional: true }\n    ? string | null | undefined\n    : string\n  : T extends NumberValidatorType\n    ? T extends { optional: true }\n      ? number | null | undefined\n      : number\n    : T extends BooleanValidatorType\n      ? T extends { optional: true }\n        ? boolean | null | undefined\n        : boolean\n      : never;\n\nexport type ValidationErrors = Array<{\n  property: string;\n  message: string;\n}>;\n\nexport function validateProperty<T extends ValidatorType>(\n  property: T,\n  value: unknown\n): string | undefined {\n  if (value === undefined && \"optional\" in property) {\n    return;\n  }\n\n  if (property.type === \"string\" && typeof value !== \"string\") {\n    return `Expected string but got ${typeof value}`;\n  }\n\n  if (property.type === \"number\" && typeof value !== \"number\") {\n    return `Expected number but got ${typeof value}`;\n  }\n\n  if (property.type === \"boolean\" && typeof value !== \"boolean\") {\n    return `Expected boolean but got ${typeof value}`;\n  }\n}\n\nexport function validate<T extends Record<string, ValidatorType>>(\n  userValidator: T,\n  user: Record<string, unknown>\n):\n  | {\n      errors: ValidationErrors;\n      value?: never;\n    }\n  | {\n      errors?: never;\n      value: {\n        [key in keyof T]: Infer<T[keyof T]>;\n      };\n    } {\n  const returnObject: {\n    [key in keyof T]: Infer<T[keyof T]>;\n  } = {} as any;\n  const errors: ValidationErrors = [];\n  for (const key in userValidator) {\n    const validator = userValidator[key];\n    const value = user[key];\n\n    const error = validateProperty(validator, value);\n    if (error) {\n      errors.push({\n        property: key,\n        message: error,\n      });\n      continue;\n    }\n\n    returnObject[key] = value as Infer<T[typeof key]>;\n  }\n  if (errors.length > 0) {\n    return { errors };\n  }\n  return { value: returnObject };\n}\n"
  },
  {
    "path": "packages/core/tests/base.test.ts",
    "content": "import { Abby } from \"../src/index\";\nimport * as validation from \"../src/validation\";\n\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"Abby\", () => {\n  it(\"gets a variant\", () => {\n    const variants = [\"variant1\", \"variant2\"];\n\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      tests: {\n        a: { variants },\n        b: {\n          variants: [\"test\"],\n        },\n      },\n    });\n    const variant = abby.getTestVariant(\"a\");\n    expect(variant.includes(variant)).toBe(true);\n  });\n\n  it(\"gets correct weigthed variant\", () => {\n    const variants = [\"variant1\", \"variant2\"];\n\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      tests: {\n        a: { variants },\n      },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [{ name: \"a\", weights: [0, 1] }],\n      remoteConfig: [],\n    });\n    // const variant = abby.getTestVariant(\"a\");\n    expect(abby.getTestVariant(\"a\")).toBe(variants[1]);\n  });\n\n  it(\"gets a feature flag\", async () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"abc\",\n      flags: [\"flag1\"],\n    });\n\n    await abby.loadProjectData();\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n  });\n\n  it(\"gets a remote config\", async () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"foo\",\n      remoteConfig: { remoteConfig1: \"String\" },\n    });\n\n    await abby.loadProjectData();\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"asdf\");\n  });\n\n  it(\"uses the devOverrides\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      settings: {\n        flags: {\n          devOverrides: {\n            flag1: false,\n          },\n        },\n        remoteConfig: {\n          devOverrides: {\n            remoteConfig1: \"foobar\",\n          },\n        },\n      },\n    });\n\n    abby.init({\n      flags: [{ name: \"flag1\", value: true }],\n      tests: [],\n      remoteConfig: [{ name: \"remoteConfig1\", value: \"asdf\" }],\n    });\n\n    process.env.NODE_ENV = \"development\";\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"foobar\");\n\n    process.env.NODE_ENV = \"production\";\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"asdf\");\n  });\n\n  it(\"uses fallbacks\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      remoteConfig: {\n        config1: \"String\",\n        config2: \"String\",\n      },\n      flags: [\"flag1\", \"flag2\"],\n      settings: {\n        flags: {\n          fallbackValues: {\n            flag1: false,\n            flag2: true,\n          },\n        },\n        remoteConfig: {\n          fallbackValues: {\n            config1: \"fallback1\",\n          },\n          defaultValues: {\n            String: \"default\",\n          },\n        },\n      },\n    });\n\n    abby.init({ flags: [], tests: [], remoteConfig: [] });\n\n    expect(abby.getRemoteConfig(\"config1\")).toBe(\"fallback1\");\n\n    expect(abby.getRemoteConfig(\"config2\")).toBe(\"default\");\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n\n    expect(abby.getFeatureFlag(\"flag2\")).toBe(true);\n  });\n\n  it(\"uses env specific fallbacks\", () => {\n    let abby = new Abby({\n      environments: [\"development\", \"test\"],\n      projectId: \"\",\n      currentEnvironment: \"development\",\n      remoteConfig: {\n        config1: \"String\",\n        config2: \"String\",\n      },\n      flags: [\"flag1\", \"flag2\"],\n      settings: {\n        flags: {\n          fallbackValues: {\n            flag1: false,\n            flag2: true,\n          },\n        },\n        remoteConfig: {\n          fallbackValues: {\n            config1: \"fallback1\",\n          },\n          defaultValues: {\n            String: \"default\",\n          },\n        },\n      },\n    });\n\n    abby.init({ flags: [], tests: [], remoteConfig: [] });\n\n    expect(abby.getRemoteConfig(\"config1\")).toBe(\"fallback1\");\n\n    expect(abby.getRemoteConfig(\"config2\")).toBe(\"default\");\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n\n    expect(abby.getFeatureFlag(\"flag2\")).toBe(true);\n\n    abby = new Abby({\n      environments: [\"development\", \"test\"],\n      projectId: \"\",\n      currentEnvironment: \"test\",\n      remoteConfig: {\n        config1: \"String\",\n        config2: \"String\",\n      },\n      flags: [\"flag1\", \"flag2\"],\n      settings: {\n        flags: {\n          fallbackValues: {\n            flag1: false,\n            flag2: true,\n          },\n        },\n        remoteConfig: {\n          fallbackValues: {\n            config1: \"fallback1\",\n          },\n          defaultValues: {\n            String: \"default\",\n          },\n        },\n      },\n    });\n    abby.init({ flags: [], tests: [], remoteConfig: [] });\n\n    expect(abby.getFeatureFlag(\"flag2\")).toBe(true);\n  });\n\n  it(\"updates a local variant in dev mode\", () => {\n    process.env.NODE_ENV = \"development\";\n\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      tests: {\n        a: { variants: [\"variant1\", \"variant2\"] },\n        b: {\n          variants: [\"test\"],\n        },\n      },\n    });\n\n    abby.updateLocalVariant(\"a\", \"variant2\");\n    expect(abby.getTestVariant(\"a\")).toBe(\"variant2\");\n\n    abby.updateLocalVariant(\"a\", \"variant1\");\n    expect(abby.getTestVariant(\"a\")).toBe(\"variant1\");\n  });\n\n  it(\"updates local feature flag\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n    });\n\n    abby.init({\n      flags: [{ name: \"flag1\", value: true }],\n      tests: [],\n      remoteConfig: [],\n    });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n\n    abby.updateFlag(\"flag1\", false);\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n  });\n\n  it(\"updates local remote config\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      remoteConfig: { remoteConfig1: \"String\" },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [],\n      remoteConfig: [{ name: \"remoteConfig1\", value: \"foo\" }],\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"foo\");\n\n    abby.updateRemoteConfig(\"remoteConfig1\", \"bar\");\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"bar\");\n  });\n\n  it(\"returns the correct list of all flags\", () => {\n    const flagInit = [\n      {\n        name: \"a\",\n        value: true,\n      },\n      {\n        name: \"b\",\n        value: true,\n      },\n      {\n        name: \"c\",\n        value: false,\n      },\n    ];\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      flags: [\"a\", \"b\", \"c\"],\n    });\n\n    abby.init({\n      flags: flagInit,\n      tests: [],\n      remoteConfig: [],\n    });\n    expect(abby.getFeatureFlags()).toEqual(flagInit);\n  });\n\n  it(\"returns the correct list of all remote config variables\", () => {\n    const configInit = [\n      {\n        name: \"a\",\n        value: \"test\",\n      },\n      {\n        name: \"b\",\n        value: 123,\n      },\n      {\n        name: \"c\",\n        value: { a: true },\n      },\n    ];\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      remoteConfig: {\n        a: \"String\",\n        b: \"Number\",\n        c: \"JSON\",\n      },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [],\n      remoteConfig: configInit,\n    });\n    expect(abby.getRemoteConfigVariables()).toEqual(configInit);\n\n    const _d = abby.getRemoteConfigVariables();\n  });\n\n  it(\"validates the user properties\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n      user: {\n        test: validation.string(),\n      },\n    });\n\n    expect(() => abby.updateUserProperties({ test: 123 as any })).toThrowError(\n      \"[test]: Expected string but got number\"\n    );\n  });\n\n  it(\"uses the user rules with AND rule sets\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n      user: {\n        test: validation.string(),\n        isTest: validation.boolean(),\n      },\n    });\n\n    abby.init({\n      flags: [\n        {\n          name: \"flag1\",\n          value: true,\n          ruleSet: [\n            {\n              operator: \"and\",\n              rules: [\n                {\n                  propertyName: \"test\",\n                  propertyType: \"string\",\n                  operator: \"eq\",\n                  value: \"test\",\n                },\n                {\n                  propertyName: \"isTest\",\n                  propertyType: \"boolean\",\n                  operator: \"eq\",\n                  value: true,\n                },\n              ],\n              thenValue: false,\n            },\n          ],\n        },\n      ],\n      tests: [],\n      remoteConfig: [],\n    });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n\n    abby.updateUserProperties({ test: \"test\", isTest: true });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n\n    abby.updateUserProperties({ test: \"test2\", isTest: true });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n\n    abby.updateUserProperties({ test: \"test1\", isTest: false });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n  });\n\n  it(\"uses the user rules with OR rule sets\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n      user: {\n        test: validation.string(),\n        isTest: validation.boolean(),\n      },\n    });\n\n    abby.init({\n      flags: [\n        {\n          name: \"flag1\",\n          value: true,\n          ruleSet: [\n            {\n              operator: \"or\",\n              rules: [\n                {\n                  propertyName: \"test\",\n                  propertyType: \"string\",\n                  operator: \"eq\",\n                  value: \"test\",\n                },\n                {\n                  propertyName: \"isTest\",\n                  propertyType: \"boolean\",\n                  operator: \"eq\",\n                  value: true,\n                },\n              ],\n              thenValue: false,\n            },\n          ],\n        },\n      ],\n      tests: [],\n      remoteConfig: [],\n    });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n\n    abby.updateUserProperties({ test: \"test\" });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n\n    abby.updateUserProperties({ test: \"test2\", isTest: true });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n\n    abby.updateUserProperties({ test: \"test\", isTest: false });\n\n    expect(abby.getFeatureFlag(\"flag1\")).toBe(false);\n  });\n\n  it(\"uses the user rules with complex rule sets\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      user: {\n        test: validation.string(),\n        isTest: validation.boolean(),\n      },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [],\n      remoteConfig: [\n        {\n          name: \"remoteConfig1\",\n          value: \"defaultremoteConfig1\",\n          ruleSet: [\n            {\n              propertyName: \"test\",\n              propertyType: \"string\",\n              operator: \"eq\",\n              value: \"test\",\n              thenValue: \"isTest\",\n            },\n            {\n              propertyName: \"test\",\n              propertyType: \"string\",\n              operator: \"contains\",\n              value: \"es\",\n              thenValue: \"containsES\",\n            },\n          ],\n        },\n      ],\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"defaultremoteConfig1\");\n\n    abby.updateUserProperties({\n      test: \"test\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"isTest\");\n\n    abby.updateUserProperties({\n      test: \"es\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"containsES\");\n  });\n\n  it(\"uses the user rules with complex rule sets and respects the rule order\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      user: {\n        test: validation.string(),\n        isTest: validation.boolean(),\n      },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [],\n      remoteConfig: [\n        {\n          name: \"remoteConfig1\",\n          value: \"asdf\",\n          ruleSet: [\n            {\n              propertyName: \"test\",\n              propertyType: \"string\",\n              operator: \"contains\",\n              value: \"es\",\n              thenValue: \"containsES\",\n            },\n            {\n              propertyName: \"test\",\n              propertyType: \"string\",\n              operator: \"eq\",\n              value: \"test\",\n              thenValue: \"isTest\",\n            },\n          ],\n        },\n      ],\n    });\n\n    abby.updateUserProperties({\n      test: \"test\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"containsES\");\n\n    // this means neither of the rules were applied so the default value should be returned\n    abby.updateUserProperties({\n      test: \"abc\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"asdf\");\n  });\n\n  it(\"works with stacked rulesets\", () => {\n    const abby = new Abby({\n      environments: [\"test\"],\n      currentEnvironment: \"test\",\n      projectId: \"\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      user: {\n        test: validation.string(),\n        isTest: validation.boolean(),\n      },\n    });\n\n    abby.init({\n      flags: [],\n      tests: [],\n      remoteConfig: [\n        {\n          name: \"remoteConfig1\",\n          value: \"defaultremoteConfig1\",\n          ruleSet: [\n            {\n              propertyName: \"test\",\n              propertyType: \"string\",\n              operator: \"eq\",\n              value: \"AB\",\n              thenValue: \"ABmatched\",\n            },\n            {\n              operator: \"and\",\n              rules: [\n                {\n                  propertyName: \"test\",\n                  propertyType: \"string\",\n                  operator: \"startsWith\",\n                  value: \"AA\",\n                },\n                {\n                  propertyName: \"test\",\n                  propertyType: \"string\",\n                  operator: \"endsWith\",\n                  value: \"BB\",\n                },\n              ],\n              thenValue: \"andMatched\",\n            },\n          ],\n        },\n      ],\n    });\n\n    abby.updateUserProperties({\n      test: \"AB\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"ABmatched\");\n\n    abby.updateUserProperties({\n      test: \"AABB\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"andMatched\");\n\n    // this means neither of the rules were applied so the default value should be returned\n    abby.updateUserProperties({\n      test: \"abc\",\n    });\n\n    expect(abby.getRemoteConfig(\"remoteConfig1\")).toBe(\"defaultremoteConfig1\");\n  });\n});\n"
  },
  {
    "path": "packages/core/tests/defineConfig.test.ts",
    "content": "import { Abby } from \"../src\";\nimport { defineConfig } from \"../src/defineConfig\";\nimport * as validation from \"../src/validation\";\n\ndescribe(\"defineConfig\", () => {\n  const cfg = defineConfig(\n    { projectId: \"xd\", currentEnvironment: \"development\" },\n    {\n      environments: [\"development\", \"production\"],\n      flags: [\"a\"],\n      remoteConfig: {\n        b: \"String\",\n        c: \"Number\",\n        d: \"JSON\",\n      },\n      tests: {\n        abTest: {\n          variants: [\"true\", \"false\"],\n        },\n      },\n      user: {\n        name: validation.string(),\n        age: validation.number(),\n        isDeveloper: validation.boolean(),\n      },\n    }\n  );\n\n  const abby = new Abby(cfg);\n\n  it(\"produces proper types\", () => {\n    expectTypeOf(abby.getFeatureFlag).parameter(0).toEqualTypeOf<\"a\">();\n    expectTypeOf(abby.getFeatureFlag(\"a\")).toEqualTypeOf<boolean>();\n    expectTypeOf(abby.getRemoteConfig(\"b\")).toEqualTypeOf<string>();\n    expectTypeOf(abby.getRemoteConfig(\"c\")).toEqualTypeOf<number>();\n    expectTypeOf(abby.getRemoteConfig(\"d\")).toEqualTypeOf<\n      Record<string, unknown>\n    >();\n\n    expectTypeOf(abby.getVariants).parameter(0).toEqualTypeOf<\"abTest\">();\n    expectTypeOf(abby.updateUserProperties).parameter(0).toEqualTypeOf<{\n      name?: string;\n      age?: number;\n      isDeveloper?: boolean;\n    }>();\n  });\n});\n"
  },
  {
    "path": "packages/core/tests/math.test.ts",
    "content": "import { getWeightedRandomVariant, validateWeights } from \"../src/mathHelpers\";\n\ndescribe(\"Math helpers\", () => {\n  it(\"validates weight\", () => {\n    const variants = [\"variant1\", \"variant2\"];\n    const weight = [0.25, 0.75];\n\n    const validatedWeights1 = validateWeights(variants, weight);\n    expect(validatedWeights1).toEqual([0.25, 0.75]);\n\n    const validatedWeights2 = validateWeights(variants);\n    expect(validatedWeights2).toEqual([0.5, 0.5]);\n\n    expect(validateWeights([\"a\", \"b\", \"c\"], [0.3, 0.3, 0.3])).toEqual([\n      1 / 3,\n      1 / 3,\n      1 / 3,\n    ]);\n  });\n\n  it(\"gets proper variants\", () => {\n    const variants = [\"a\", \"b\", \"c\"];\n    expect(getWeightedRandomVariant(variants, [0.3, 0.3, 0.3])).oneOf(variants);\n  });\n\n  it(\"produces roughly equal distribution for equal weights\", () => {\n    const variants = [\"a\", \"b\", \"c\"] as const;\n    type Variant = (typeof variants)[number];\n    const weights = [1 / 3, 1 / 3, 1 / 3];\n    const iterations = 10_000;\n    const counts: Record<Variant, number> = { a: 0, b: 0, c: 0 };\n\n    // Run many iterations to get a statistically significant sample\n    for (let i = 0; i < iterations; i++) {\n      const result = getWeightedRandomVariant(variants, weights);\n      counts[result as Variant]++;\n    }\n\n    // Check that each variant appears roughly 1/3 of the time (within 5% margin)\n    const expectedCount = iterations / 3;\n    const marginOfError = 0.05 * iterations; // 5% margin of error\n\n    Object.values(counts).forEach((count) => {\n      expect(count).toBeGreaterThan(expectedCount - marginOfError);\n      expect(count).toBeLessThan(expectedCount + marginOfError);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/tests/mocks/handlers.ts",
    "content": "import { rest } from \"msw\";\nimport { ABBY_BASE_URL, type AbbyDataResponse } from \"../../src/shared\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n  ],\n  remoteConfig: [{ name: \"remoteConfig1\", value: \"asdf\" }],\n};\n\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/core/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/core/tests/setup.ts",
    "content": "import { afterEach } from \"vitest\";\n\nimport fetch from \"node-fetch\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n// Reset any request handlers that we may add during the tests,\n// so they don't affect other tests.\nafterEach(() => server.resetHandlers());\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n"
  },
  {
    "path": "packages/core/tests/types.test.ts",
    "content": "import type { RemoteConfigValueStringToType } from \"../dist\";\nimport { Abby, type AbbyConfig } from \"../src/index\";\nimport * as validation from \"../src/validation\";\n\ndescribe(\"types\", () => {\n  it(\"produces proper types\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      flags: [\"flag1\"],\n      tests: {\n        test1: {\n          variants: [\"firstVariant\", \"secondVariant\"],\n        },\n        test2: {\n          variants: [\"some-random-string\", \"abc\"],\n        },\n      },\n      remoteConfig: { remoteConfig1: \"String\" },\n    });\n\n    assertType<boolean>(abby.getFeatureFlag(\"flag1\"));\n    assertType<string>(abby.getRemoteConfig(\"remoteConfig1\"));\n    expectTypeOf(abby.getFeatureFlag).parameter(0).toEqualTypeOf<\"flag1\">();\n    expectTypeOf(abby.getRemoteConfig)\n      .parameter(0)\n      .toEqualTypeOf<\"remoteConfig1\">();\n\n    assertType<\"firstVariant\" | \"secondVariant\">(abby.getTestVariant(\"test1\"));\n\n    expectTypeOf(abby.getTestVariant)\n      .parameter(0)\n      .toEqualTypeOf<\"test1\" | \"test2\">();\n\n    // This is the potential type of the devOverrides\n    type DevOverrides = NonNullable<\n      NonNullable<\n        NonNullable<AbbyConfig<\"flag1\", {}, [\"flag1\"]>[\"settings\"]>[\"flags\"]\n      >[\"devOverrides\"]\n    >;\n\n    expectTypeOf<DevOverrides>().toEqualTypeOf<{\n      flag1?: boolean;\n    }>();\n  });\n});\n\ndescribe(\"user types\", () => {\n  it(\"produces proper types\", () => {\n    const abby = new Abby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"\",\n      user: {\n        name: validation.string(),\n        age: validation.number(),\n        isDeveloper: validation.boolean(),\n      },\n    });\n\n    expectTypeOf(abby.updateUserProperties).parameter(0).toEqualTypeOf<{\n      name?: string;\n      age?: number;\n      isDeveloper?: boolean;\n    }>();\n  });\n});\n\ndescribe(\"Type Helpers\", () => {\n  it(\"converts the strings properly\", () => {\n    expectTypeOf<\n      RemoteConfigValueStringToType<\"String\">\n    >().toEqualTypeOf<string>();\n    expectTypeOf<RemoteConfigValueStringToType<\"JSON\">>().toEqualTypeOf<\n      Record<string, unknown>\n    >();\n    expectTypeOf<\n      RemoteConfigValueStringToType<\"Number\">\n    >().toEqualTypeOf<number>();\n  });\n});\n"
  },
  {
    "path": "packages/core/tests/validation.test.ts",
    "content": "import * as validation from \"../src/validation\";\n\ndescribe(\"validation\", () => {\n  it(\"produces proper types\", () => {\n    const booleanValidation = validation.boolean();\n    expectTypeOf<\n      validation.Infer<typeof booleanValidation>\n    >().toEqualTypeOf<boolean>();\n\n    const stringValidation = validation.string();\n    expectTypeOf<\n      validation.Infer<typeof stringValidation>\n    >().toEqualTypeOf<string>();\n\n    const numberValidation = validation.number();\n    expectTypeOf<\n      validation.Infer<typeof numberValidation>\n    >().toEqualTypeOf<number>();\n\n    const optionalNumberValidation = validation.optional(validation.number());\n\n    expectTypeOf<\n      validation.Infer<typeof optionalNumberValidation>\n    >().toEqualTypeOf<number | undefined | null>();\n\n    const optionalStringValidation = validation.optional(validation.string());\n\n    expectTypeOf<\n      validation.Infer<typeof optionalStringValidation>\n    >().toEqualTypeOf<string | undefined | null>();\n\n    const optionalBooleanValidation = validation.optional(validation.boolean());\n\n    expectTypeOf<\n      validation.Infer<typeof optionalBooleanValidation>\n    >().toEqualTypeOf<boolean | undefined | null>();\n  });\n\n  it(\"validates properly\", () => {\n    const userValidator = {\n      name: validation.string(),\n      age: validation.number(),\n      isDeveloper: validation.boolean(),\n    };\n\n    const user = {\n      name: \"John\",\n      age: 25,\n      isDeveloper: true,\n    };\n    expect(validation.validate(userValidator, user)).toEqual({\n      value: user,\n    });\n  });\n\n  it(\"validates properly with optional fields\", () => {\n    const userValidator = {\n      name: validation.string(),\n      age: validation.optional(validation.number()),\n      isDeveloper: validation.boolean(),\n    };\n    const user = {\n      name: \"John\",\n      isDeveloper: true,\n    };\n    expect(validation.validate(userValidator, user)).toEqual({\n      value: user,\n    });\n  });\n\n  it(\"shows errors properly\", () => {\n    const userValidator = {\n      name: validation.string(),\n      age: validation.number(),\n      isDeveloper: validation.boolean(),\n    };\n    const user = {\n      name: \"John\",\n      age: \"25\",\n      isDeveloper: true,\n    };\n    expect(validation.validate(userValidator, user)).toEqual({\n      errors: [\n        {\n          property: \"age\",\n          message: \"Expected number but got string\",\n        },\n      ],\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/tsconfig.json",
    "content": "{\n    \"extends\": \"tsconfig/react-library.json\",\n    \"compilerOptions\": {\n        \"lib\": [\"ESNext\", \"DOM\"],\n        \"types\": [\"vitest/globals\"]\n    }\n}"
  },
  {
    "path": "packages/core/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  clean: true,\n  sourcemap: true,\n  treeshake: true,\n  format: [\"cjs\", \"esm\"],\n});\n"
  },
  {
    "path": "packages/core/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/devtools/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/devtools/.storybook/main.ts",
    "content": "import type { StorybookConfig } from \"@storybook/svelte-vite\";\nconst config: StorybookConfig = {\n  core: {\n    disableTelemetry: true,\n  },\n  stories: [\"../src/**/*.mdx\", \"../src/**/*.stories.@(js|jsx|ts|tsx|svelte)\"],\n  addons: [\n    \"@storybook/addon-links\",\n    \"@storybook/addon-essentials\",\n    \"@storybook/addon-interactions\",\n  ],\n  framework: {\n    name: \"@storybook/svelte-vite\",\n    options: {},\n  },\n  docs: {\n    autodocs: \"tag\",\n  },\n};\nexport default config;\n"
  },
  {
    "path": "packages/devtools/.storybook/preview.ts",
    "content": "import type { Preview } from \"@storybook/svelte\";\n\nconst preview: Preview = {\n  parameters: {\n    actions: { argTypesRegex: \"^on[A-Z].*\" },\n    controls: {\n      matchers: {\n        color: /(background|color)$/i,\n        date: /Date$/,\n      },\n    },\n  },\n};\n\nexport default preview;\n"
  },
  {
    "path": "packages/devtools/.vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\"svelte.svelte-vscode\"]\n}\n"
  },
  {
    "path": "packages/devtools/CHANGELOG.md",
    "content": "# @tryabby/devtools\n\n## 8.0.2\n\n### Patch Changes\n\n- improve ui/ux\n\n## 8.0.1\n\n### Patch Changes\n\n- fix build\n\n## 8.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n## 7.0.0\n\n### Major Changes\n\n- use typescript 5\n\n## 6.0.0\n\n### Major Changes\n\n- use typescript 5 and remove ts-toolbelt\n\n## 5.0.1\n\n### Patch Changes\n\n- reduce bundle size\n\n## 5.0.0\n\n### Major Changes\n\n- add remote config\n\n## 4.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n## 4.0.2\n\n### Patch Changes\n\n- add postmessage call on flag and test change\n\n## 4.0.1\n\n### Patch Changes\n\n- adapt to new ci colors\n\n## 4.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n## 3.3.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n## 3.2.2\n\n### Patch Changes\n\n- refactor shard package\n\n## 3.2.1\n\n### Patch Changes\n\n- unmount devtools on component unmount\n\n## 3.2.0\n\n### Minor Changes\n\n- add option to force display the devtools even in non-dev environments\n\n## 3.1.4\n\n### Patch Changes\n\n- improve design\n\n## 3.1.3\n\n### Patch Changes\n\n- fix version\n\n## 3.1.2\n\n### Patch Changes\n\n- update design\n\n## 3.1.1\n\n### Patch Changes\n\n- fix not persisting\n\n## 3.1.0\n\n### Minor Changes\n\n- make devtools universal\n"
  },
  {
    "path": "packages/devtools/README.md",
    "content": "# Svelte + TS + Vite\n\nThis template should help get you started developing with Svelte and TypeScript in Vite.\n\n## Recommended IDE Setup\n\n[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).\n\n## Need an official Svelte framework?\n\nCheck out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.\n\n## Technical considerations\n\n**Why use this over SvelteKit?**\n\n- It brings its own routing solution which might not be preferable for some users.\n- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.\n\nThis template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.\n\nShould you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.\n\n**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**\n\nSetting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.\n\n**Why include `.vscode/extensions.json`?**\n\nOther templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.\n\n**Why enable `allowJs` in the TS template?**\n\nWhile `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.\n\n**Why is HMR not preserving my local component state?**\n\nHMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).\n\nIf you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.\n\n```ts\n// store.ts\n// An extremely simple external store\nimport { writable } from \"svelte/store\";\nexport default writable(0);\n```\n"
  },
  {
    "path": "packages/devtools/package.json",
    "content": "{\n  \"name\": \"@tryabby/devtools\",\n  \"version\": \"8.0.2\",\n  \"type\": \"module\",\n  \"files\": [\"dist\"],\n  \"main\": \"dist/index.umd.cjs\",\n  \"module\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.umd.cjs\",\n      \"types\": \"./dist/index.d.ts\"\n    }\n  },\n  \"scripts\": {\n    \"dev\": \"vite build --watch\",\n    \"build\": \"vite build\",\n    \"check\": \"svelte-check --tsconfig ./tsconfig.json\",\n    \"storybook\": \"STORYBOOK=1 storybook dev -p 6006\",\n    \"build-storybook\": \"storybook build\"\n  },\n  \"devDependencies\": {\n    \"@storybook/addon-essentials\": \"^7.0.5\",\n    \"@storybook/addon-interactions\": \"^7.0.5\",\n    \"@storybook/addon-links\": \"^7.0.5\",\n    \"@storybook/blocks\": \"^7.0.5\",\n    \"@storybook/svelte\": \"^7.0.5\",\n    \"@storybook/svelte-vite\": \"^7.0.5\",\n    \"@storybook/testing-library\": \"^0.0.14-next.2\",\n    \"@sveltejs/vite-plugin-svelte\": \"^2.0.3\",\n    \"@tryabby/core\": \"workspace:^\",\n    \"@tsconfig/svelte\": \"^3.0.0\",\n    \"@types/mousetrap\": \"^1.6.11\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"storybook\": \"^7.0.5\",\n    \"svelte\": \"^3.55.1\",\n    \"svelte-check\": \"^2.10.3\",\n    \"tslib\": \"^2.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vite-plugin-dts\": \"3.9.0\"\n  },\n  \"dependencies\": {\n    \"@melt-ui/svelte\": \"^0.17.0\",\n    \"@monaco-editor/loader\": \"^1.3.3\",\n    \"monaco-editor\": \"^0.39.0\",\n    \"mousetrap\": \"^1.6.5\"\n  }\n}\n"
  },
  {
    "path": "packages/devtools/src/Devtools.stories.ts",
    "content": "import type { Meta, StoryObj } from \"@storybook/svelte\";\n\nimport Devtools from \"./Devtools.svelte\";\n\nconst abbyMock = {\n  getConfig: () => ({\n    currentEnvironment: \"Super Long Environment Name\",\n  }),\n  subscribe: () => () => {},\n  getProjectData: () => ({\n    flags: {\n      \"flag-1\": { value: true },\n      \"flag-2\": { value: false },\n    },\n    remoteConfig: {\n      \"config-1\": { value: \"string-value\" },\n      \"config-2\": { value: 42 },\n      \"config-3\": { value: { type: \"object/json\" } },\n    },\n    tests: {\n      \"test-1\": { selectedVariant: \"A\", variants: [\"A\", \"B\"] },\n      \"test-2\": { selectedVariant: \"B\", variants: [\"A\", \"B\"] },\n    },\n  }),\n} as any;\n\n// More on how to set up stories at: https://storybook.js.org/docs/svelte/writing-stories/introduction\nconst meta = {\n  title: \"Devtools\",\n  component: Devtools,\n  // tags: [\"autodocs\"],\n  argTypes: {\n    position: {\n      control: { type: \"select\" },\n      options: [\"top-right\", \"top-left\", \"bottom-right\", \"bottom-left\"],\n      defaultValue: \"bottom-right\",\n    },\n  },\n} satisfies Meta<Devtools>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// More on writing stories with args: https://storybook.js.org/docs/svelte/writing-stories/args\nexport const Primary: Story = {\n  args: {\n    abby: abbyMock,\n    defaultShow: true,\n  },\n};\n"
  },
  {
    "path": "packages/devtools/src/Devtools.svelte",
    "content": "<script lang=\"ts\">\n  import type { Abby } from \"@tryabby/core\";\n  import Mousetrap from \"mousetrap\";\n  import { onDestroy, onMount } from \"svelte\";\n  import CloseIcon from \"./components/CloseIcon.svelte\";\n  import Select from \"./components/Select.svelte\";\n  import Switch from \"./components/Switch.svelte\";\n  import type { Shortcut } from \"./lib/types\";\n\n  import { quintInOut } from \"svelte/easing\";\n  import { crossfade } from \"svelte/transition\";\n  import { slide } from \"svelte/transition\";\n  import Input from \"./components/Input.svelte\";\n  import Modal from \"./components/Modal.svelte\";\n  import {\n    getSections,\n    getShowDevtools,\n    setShowDevtools,\n    setSections,\n  } from \"./lib/storage\";\n  import ChevronIcon from \"./components/ChevronIcon.svelte\";\n\n  export let position:\n    | \"top-left\"\n    | \"top-right\"\n    | \"bottom-left\"\n    | \"bottom-right\" = \"bottom-right\";\n\n  export let defaultShow = false;\n\n  export let shortcut: Shortcut | Array<Shortcut> = [\"command+.\", \"ctrl+.\"];\n\n  export let abby: Abby<any, any, any, any, any>;\n\n  let show = false;\n  // Track open/closed state of each section\n  let openSections = {\n    flags: true,\n    remoteConfig: true,\n    tests: true,\n  };\n\n  const toggleSection = (section) => {\n    openSections[section] = !openSections[section];\n    setSections(openSections);\n  };\n\n  const onToggleVisibility = () => {\n    show = !show;\n    setShowDevtools(show);\n  };\n\n  const onMessage = (event: MessageEvent) => {\n    if (event.data === \"abby:toggle-devtools\") {\n      onToggleVisibility();\n    }\n    if (event.data === \"abby:close-devtools\") {\n      show = false;\n      setShowDevtools(show);\n    }\n    if (event.data === \"abby:open-devtools\") {\n      show = true;\n      setShowDevtools(show);\n    }\n  };\n\n  // hacky way to sync props <> state\n  onMount(async () => {\n    const { hasStoredValue, showDevtools } = getShowDevtools();\n    const savedSections = getSections();\n\n    openSections = savedSections;\n\n    if (hasStoredValue) {\n      show = showDevtools;\n    } else {\n      show = defaultShow;\n    }\n\n    Mousetrap.bind(shortcut, onToggleVisibility);\n    window.addEventListener(\"message\", onMessage);\n  });\n\n  onDestroy(() => {\n    Mousetrap.unbind(shortcut);\n    window.removeEventListener(\"message\", onMessage);\n  });\n\n  const { flags, tests, remoteConfig } = abby?.getProjectData() ?? {};\n\n  const [send, receive] = crossfade({\n    duration: 300,\n    easing: quintInOut,\n  });\n\n  const key = \"devtools\";\n\n  const flagsEntries = Object.entries(flags || {});\n  const remoteConfigEntries = Object.entries(remoteConfig || {});\n  const testsEntries = Object.entries(tests || {});\n\n  $: {\n    console.log(remoteConfigEntries);\n  }\n</script>\n\n{#if show}\n  <div\n    in:send={{ key }}\n    out:receive={{ key }}\n    id=\"abby-devtools\"\n    style:--right={position === \"top-right\" || position === \"bottom-right\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--bottom={position === \"bottom-left\" || position === \"bottom-right\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--left={position === \"top-left\" || position === \"bottom-left\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--top={position === \"top-left\" || position === \"top-right\"\n      ? \"1rem\"\n      : \"auto\"}\n  >\n    <div class=\"header\">\n      <h1 class=\"logo\">Abby Devtools</h1>\n      <button\n        on:click={onToggleVisibility}\n        class=\"close-btn\"\n        aria-label=\"Close\"\n      >\n        <CloseIcon />\n      </button>\n    </div>\n    <div class=\"env-tag\">\n      <span>Environment:</span>\n      <span class=\"env-value\">{abby.getConfig().currentEnvironment}</span>\n    </div>\n    <hr />\n    <div class=\"content\">\n      <div class=\"section\">\n        <button\n          class=\"section-header\"\n          on:click={() => toggleSection(\"flags\")}\n          aria-expanded={openSections.flags}\n        >\n          <h2>Feature Flags</h2>\n          <ChevronIcon open={openSections.flags} />\n        </button>\n\n        {#if openSections.flags}\n          <div class=\"section-content\" transition:slide={{ duration: 200 }}>\n            <div class=\"controls-grid\">\n              {#if flagsEntries.length > 0}\n                {#each flagsEntries as [flagName, flagValue]}\n                  <Switch\n                    id={flagName}\n                    label={flagName}\n                    checked={flagValue.value}\n                    onChange={(newValue) => {\n                      window.postMessage(\n                        { type: \"abby:update-flag\", flagName, newValue },\n                        \"*\"\n                      );\n                      abby.updateFlag(flagName, newValue);\n                    }}\n                  />\n                {/each}\n              {:else}\n                <div class=\"section-empty-state\">\n                  <p>No feature flags found</p>\n                  <p class=\"hint\">\n                    Add feature flags in your Abby configuration\n                  </p>\n                </div>\n              {/if}\n            </div>\n          </div>\n        {/if}\n      </div>\n      <hr />\n\n      <div class=\"section\">\n        <button\n          class=\"section-header\"\n          on:click={() => toggleSection(\"remoteConfig\")}\n          aria-expanded={openSections.remoteConfig}\n        >\n          <h2>Remote Config</h2>\n          <ChevronIcon open={openSections.remoteConfig} />\n        </button>\n\n        {#if openSections.remoteConfig}\n          <div class=\"section-content\" transition:slide={{ duration: 200 }}>\n            <div class=\"controls-grid\">\n              {#if remoteConfigEntries.length > 0}\n                {#each remoteConfigEntries as [remoteConfigName, remoteConfigValue]}\n                  {#if typeof remoteConfigValue.value === \"string\" || typeof remoteConfigValue.value === \"number\"}\n                    <Input\n                      id={remoteConfigName}\n                      label={remoteConfigName}\n                      type={typeof remoteConfigValue.value === \"string\"\n                        ? \"text\"\n                        : \"number\"}\n                      value={remoteConfigValue.value}\n                      onChange={(newValue) => {\n                        window.postMessage(\n                          {\n                            type: \"abby:update-flag\",\n                            remoteConfigName,\n                            newValue,\n                          },\n                          \"*\"\n                        );\n                        abby.updateRemoteConfig(remoteConfigName, newValue);\n                      }}\n                    />\n                  {:else if typeof remoteConfigValue.value === \"object\"}\n                    <div class=\"config-object\">\n                      <p class=\"config-label\">{remoteConfigName}</p>\n                      <Modal\n                        value={remoteConfigValue.value}\n                        onChange={(newValue) => {\n                          window.postMessage(\n                            {\n                              type: \"abby:update-flag\",\n                              remoteConfigName,\n                              newValue,\n                            },\n                            \"*\"\n                          );\n                          abby.updateRemoteConfig(remoteConfigName, newValue);\n                        }}\n                      />\n                    </div>\n                  {/if}\n                {/each}\n              {:else}\n                <div class=\"section-empty-state\">\n                  <p>No remote configs found</p>\n                  <p class=\"hint\">\n                    Add remote configs in your Abby configuration\n                  </p>\n                </div>\n              {/if}\n            </div>\n          </div>\n        {/if}\n      </div>\n      <hr />\n\n      <div class=\"section\">\n        <button\n          class=\"section-header\"\n          on:click={() => toggleSection(\"tests\")}\n          aria-expanded={openSections.tests}\n        >\n          <h2>A/B Tests</h2>\n          <ChevronIcon open={openSections.tests} />\n        </button>\n\n        {#if openSections.tests}\n          <div class=\"section-content\" transition:slide={{ duration: 200 }}>\n            <div class=\"controls-grid\">\n              {#if testsEntries.length > 0}\n                {#each testsEntries as [testName, { selectedVariant, variants }]}\n                  <Select\n                    label={testName}\n                    value={selectedVariant}\n                    options={variants.map((v) => ({\n                      label: v,\n                      value: v,\n                    }))}\n                    onChange={(newValue) => {\n                      window.postMessage(\n                        { type: \"abby:select-variant\", testName, newValue },\n                        \"*\"\n                      );\n                      abby.updateLocalVariant(testName, newValue);\n                    }}\n                  />\n                {/each}\n              {:else}\n                <div class=\"section-empty-state\">\n                  <p>No A/B tests found</p>\n                  <p class=\"hint\">Add A/B tests in your Abby configuration</p>\n                </div>\n              {/if}\n            </div>\n          </div>\n        {/if}\n      </div>\n\n      {#if flagsEntries.length === 0 && remoteConfigEntries.length === 0 && testsEntries.length === 0}\n        <hr />\n        <div class=\"empty-state\">\n          <p>No flags, remote configs, or A/B tests found.</p>\n          <p class=\"hint\">\n            Make sure you have defined them in your Abby configuration.\n          </p>\n        </div>\n      {/if}\n    </div>\n  </div>\n{:else}\n  <button\n    class=\"toggle-btn\"\n    in:send={{ key }}\n    out:receive={{ key }}\n    on:click={onToggleVisibility}\n    id=\"abby-devtools-collapsed\"\n    style:--right={position === \"top-right\" || position === \"bottom-right\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--bottom={position === \"bottom-left\" || position === \"bottom-right\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--left={position === \"top-left\" || position === \"bottom-left\"\n      ? \"1rem\"\n      : \"auto\"}\n    style:--top={position === \"top-left\" || position === \"top-right\"\n      ? \"1rem\"\n      : \"auto\"}\n  >\n    <span>Ab</span>\n  </button>\n{/if}\n\n<style lang=\"scss\">\n  :root {\n    --abby-accent: rgb(249, 168, 212);\n    --abby-accent-light: rgba(249, 168, 212, 0.2);\n    --abby-bg: #121929;\n    --abby-text: hsl(213 31% 91%);\n    --abby-border: rgba(255, 255, 255, 0.12);\n    --abby-section-bg: rgba(255, 255, 255, 0.03);\n    --abby-radius: 10px;\n    --abby-radius-sm: 6px;\n    --abby-shadow:\n      0 10px 25px -5px rgba(0, 0, 0, 0.2), 0 10px 10px -5px rgba(0, 0, 0, 0.1);\n  }\n\n  #abby-devtools-collapsed {\n    position: fixed;\n    z-index: 9999;\n    bottom: var(--bottom);\n    right: var(--right);\n    left: var(--left);\n    top: var(--top);\n    color: var(--abby-accent);\n    font-weight: bold;\n    font-size: 18px;\n    background: var(--abby-bg);\n    font-family:\n      ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas,\n      \"DejaVu Sans Mono\", monospace;\n    width: 48px;\n    height: 48px;\n    border-radius: var(--abby-radius);\n    border: 2px solid var(--abby-accent);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: var(--abby-shadow);\n    cursor: pointer;\n    transition: all 0.2s ease-in-out;\n    padding: 0;\n\n    &:hover {\n      transform: scale(1.05);\n      background: #1a2437;\n    }\n  }\n\n  .toggle-btn {\n    all: unset;\n    width: 100%;\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n\n    span {\n      position: relative;\n      top: -1px;\n    }\n  }\n\n  #abby-devtools {\n    font-family:\n      ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas,\n      \"DejaVu Sans Mono\", monospace;\n    position: fixed;\n    bottom: var(--bottom);\n    right: var(--right);\n    left: var(--left);\n    top: var(--top);\n    background: var(--abby-bg);\n    z-index: 9999;\n    border-radius: var(--abby-radius);\n    border: 1px solid var(--abby-border);\n    font-size: 14px;\n    color: var(--abby-text);\n    min-width: 350px;\n    max-width: 450px;\n    display: flex;\n    flex-direction: column;\n    max-height: calc(100vh - 3rem);\n    box-shadow: var(--abby-shadow);\n    overflow: hidden;\n\n    .logo {\n      font-family: \"Martian Mono\", inherit;\n      margin: 0;\n      padding: 0;\n    }\n\n    hr {\n      margin: 0.75rem 0;\n      border: none;\n      height: 1px;\n      background: var(--abby-border);\n    }\n\n    .env-tag {\n      display: flex;\n      align-items: center;\n      gap: 0.5rem;\n      margin-top: 0.5rem;\n      padding: 0 1rem;\n      font-size: 0.85rem;\n\n      .env-value {\n        color: var(--abby-accent);\n        font-weight: 500;\n        background: var(--abby-accent-light);\n        padding: 0.25rem 0.5rem;\n        border-radius: 12px;\n      }\n    }\n\n    .header {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 0.75rem 1rem;\n      background: rgba(0, 0, 0, 0.15);\n      border-bottom: 1px solid var(--abby-border);\n\n      h1 {\n        font-size: 1.25rem;\n        color: var(--abby-accent);\n        letter-spacing: -0.5px;\n      }\n\n      .close-btn {\n        all: unset;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        cursor: pointer;\n        padding: 0.25rem;\n        border-radius: 4px;\n        transition: background 0.2s ease;\n\n        &:hover {\n          background: rgba(255, 255, 255, 0.1);\n        }\n      }\n    }\n\n    .content {\n      padding: 0 1rem 1rem;\n      overflow-y: auto;\n      flex: 1;\n\n      &::-webkit-scrollbar {\n        width: 8px;\n      }\n      &::-webkit-scrollbar-track {\n        background-color: transparent;\n      }\n      &::-webkit-scrollbar-thumb {\n        background-color: rgba(255, 255, 255, 0.2);\n        border-radius: 4px;\n        &:hover {\n          background-color: rgba(255, 255, 255, 0.3);\n        }\n      }\n\n      .section {\n        padding: 0;\n\n        .section-header {\n          all: unset;\n          display: flex;\n          width: 100%;\n          align-items: center;\n          justify-content: space-between;\n          cursor: pointer;\n          padding: 0.75rem 0;\n          border-radius: var(--abby-radius-sm);\n          transition: background 0.15s ease;\n\n          &:hover {\n            background: rgba(255, 255, 255, 0.03);\n          }\n\n          &:focus-visible {\n            outline: 2px solid var(--abby-accent);\n            outline-offset: 2px;\n          }\n        }\n\n        .section-content {\n          padding: 0 0 0.75rem 0;\n        }\n      }\n\n      .controls-grid {\n        display: grid;\n        gap: 0.75rem;\n      }\n\n      .config-object {\n        display: flex;\n        flex-direction: column;\n        margin: 0.5rem 0;\n\n        .config-label {\n          margin-bottom: 0.25rem;\n          font-weight: medium;\n        }\n      }\n\n      .empty-state {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        padding: 2rem 1rem;\n        text-align: center;\n        color: var(--abby-text);\n        opacity: 0.7;\n\n        p {\n          margin: 0.25rem 0;\n        }\n\n        .hint {\n          font-size: 0.85rem;\n          opacity: 0.7;\n        }\n      }\n\n      .section-empty-state {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        justify-content: center;\n        padding: 1rem;\n        text-align: center;\n        color: var(--abby-text);\n        opacity: 0.7;\n        background: var(--abby-section-bg);\n        border-radius: var(--abby-radius-sm);\n        p {\n          margin: 0.25rem 0;\n          max-width: 250px;\n        }\n\n        .hint {\n          font-size: 0.85rem;\n          opacity: 0.7;\n        }\n      }\n    }\n\n    h2 {\n      all: unset;\n      color: var(--abby-accent);\n      font-size: 1rem;\n      font-weight: 600;\n      display: block;\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/ChevronIcon.svelte",
    "content": "<script lang=\"ts\">\n  export let open = false;\n</script>\n\n<div class=\"chevron\" class:open>\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    stroke-width=\"2\"\n    stroke-linecap=\"round\"\n    stroke-linejoin=\"round\"\n  >\n    <polyline points=\"6 9 12 15 18 9\"></polyline>\n  </svg>\n</div>\n\n<style>\n  .chevron {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--abby-accent);\n    transition: transform 0.2s ease;\n\n    &.open {\n      transform: rotate(180deg);\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/CloseIcon.svelte",
    "content": "<svg\n  xmlns=\"http://www.w3.org/2000/svg\"\n  width=\"20\"\n  height=\"20\"\n  viewBox=\"0 0 24 24\"\n  fill=\"none\"\n  stroke=\"white\"\n  stroke-width=\"2\"\n  stroke-linecap=\"round\"\n  stroke-linejoin=\"round\"\n  class=\"lucide lucide-x\"\n  ><line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\" /><line\n    x1=\"6\"\n    x2=\"18\"\n    y1=\"6\"\n    y2=\"18\"\n  /></svg\n>\n"
  },
  {
    "path": "packages/devtools/src/components/Input.svelte",
    "content": "<script lang=\"ts\">\n  export let type: HTMLInputElement[\"type\"] = \"text\";\n  export let onChange: (newValue: string | number) => void;\n  export let value: string | number;\n  export let label: string;\n  export let id: string;\n</script>\n\n<div class=\"input-container\">\n  <label class=\"input-label\" for={id}>\n    {label}\n    <span class=\"input-label__type\"\n      >{type === \"number\" ? \"Number\" : \"String\"}</span\n    >\n  </label>\n  <input\n    {id}\n    {type}\n    {value}\n    on:change={(e) => {\n      if (type === \"number\") {\n        onChange(e.currentTarget.valueAsNumber);\n        return;\n      }\n      onChange(e.currentTarget.value);\n    }}\n  />\n</div>\n\n<style lang=\"scss\">\n  .input-container {\n    padding: 0.5rem;\n    border-radius: 6px;\n    background: rgba(255, 255, 255, 0.03);\n    transition: background 0.2s ease;\n\n    display: flex;\n    flex-direction: column;\n    gap: 0.5rem;\n\n    &:hover {\n      background: rgba(255, 255, 255, 0.06);\n    }\n  }\n\n  .input-label {\n    font-size: 0.875rem;\n\n    &__type {\n      font-size: 0.75rem;\n      color: rgba(255, 255, 255, 0.4);\n      margin-left: 0.5rem;\n    }\n  }\n\n  input {\n    padding: 0.5rem 0.75rem;\n    border-radius: 6px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(0, 0, 0, 0.2);\n    color: white;\n    font-family: inherit;\n    font-size: 0.875rem;\n    transition: all 0.2s ease;\n\n    &:focus {\n      outline: none;\n      border-color: rgb(249, 168, 212);\n      box-shadow: 0 0 0 1px rgba(249, 168, 212, 0.4);\n    }\n\n    &::placeholder {\n      color: rgba(255, 255, 255, 0.4);\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/JsonEditor.svelte",
    "content": "<script lang=\"ts\">\n  import loader from \"@monaco-editor/loader\";\n  import { onDestroy, onMount } from \"svelte\";\n  import type * as Monaco from \"monaco-editor/esm/vs/editor/editor.api\";\n\n  import { createEventDispatcher } from \"svelte\";\n\n  const dispatch = createEventDispatcher<{\n    change: Record<string, unknown>;\n  }>();\n  let editor: Monaco.editor.IStandaloneCodeEditor;\n  let monaco: typeof Monaco;\n  let editorContainer: HTMLElement;\n\n  let isMounted = false;\n\n  export let value: Record<string, unknown> = {};\n\n  onMount(async () => {\n    // Remove the next two lines to load the monaco editor from a CDN\n    // see https://www.npmjs.com/package/@monaco-editor/loader#config\n    const monacoEditor = await import(\"monaco-editor/esm/vs/editor/editor.api\");\n    loader.config({\n      monaco: monacoEditor.default,\n    });\n\n    monaco = await loader.init();\n    isMounted = true;\n\n    // Your monaco instance is ready, let's display some code!\n    const editor = monaco.editor.create(editorContainer, {\n      theme: \"vs-dark\",\n      language: \"json\",\n      minimap: { enabled: false },\n      padding: { top: 10 },\n    });\n\n    const model = monaco.editor.createModel(JSON.stringify(value, null, 2), \"json\");\n    editor.setModel(model);\n\n    model.onDidChangeContent(() => {\n      dispatch(\"change\", JSON.parse(model.getValue()));\n    });\n  });\n\n  onDestroy(() => {\n    monaco?.editor.getModels().forEach((model) => model.dispose());\n  });\n</script>\n\n<div class=\"container\" bind:this={editorContainer}>\n  {#if !isMounted}\n    <p class=\"loading-text\">Loading...</p>\n  {/if}\n</div>\n\n<style>\n  .loading-text {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n  }\n  .container {\n    height: 100%;\n    width: 100%;\n    position: relative;\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/Modal.svelte",
    "content": "<script lang=\"ts\">\n  import { createDialog } from \"@melt-ui/svelte\";\n  import { scale, fade } from \"svelte/transition\";\n  import JsonEditor from \"./JsonEditor.svelte\";\n\n  export let onChange = (value: Record<string, unknown>) => {};\n  export let value: Record<string, unknown> = {};\n\n  const { trigger, portal, overlay, content, title, description, close, open } =\n    createDialog();\n</script>\n\n<div>\n  <button {...$trigger} use:trigger.action class=\"trigger\">Edit JSON</button>\n  <div use:portal>\n    {#if $open}\n      <div {...$overlay} class=\"backdrop\" transition:fade={{ duration: 200 }} />\n      <div\n        transition:scale={{ duration: 200, start: 0.95 }}\n        {...$content}\n        use:content.action\n        class=\"content\"\n      >\n        <div class=\"modal-header\">\n          <h3>JSON Editor</h3>\n          <button use:close.action class=\"close-btn\" aria-label=\"Close\">\n            <svg\n              xmlns=\"http://www.w3.org/2000/svg\"\n              width=\"18\"\n              height=\"18\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            >\n              <line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\"></line>\n              <line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\"></line>\n            </svg>\n          </button>\n        </div>\n        <div class=\"editor-container\">\n          <JsonEditor\n            on:change={(e) => {\n              value = e.detail;\n            }}\n            {value}\n          />\n        </div>\n        <div class=\"buttons\">\n          <button use:close.action class=\"cancel\">Cancel</button>\n          <button\n            class=\"save\"\n            use:close.action\n            on:click={() => {\n              onChange(value);\n            }}\n          >\n            Save Changes\n          </button>\n        </div>\n      </div>\n    {/if}\n  </div>\n</div>\n\n<style lang=\"scss\">\n  .trigger {\n    all: unset;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 6px;\n    background-color: rgba(249, 168, 212, 0.2);\n    color: rgb(249, 168, 212);\n    padding: 0.5rem 0.75rem;\n    font-size: 0.875rem;\n    cursor: pointer;\n    transition: all 0.15s ease;\n    border: 1px solid rgba(249, 168, 212, 0.3);\n\n    &:hover {\n      background-color: rgba(249, 168, 212, 0.3);\n    }\n\n    &:focus {\n      box-shadow: 0 0 0 2px rgba(249, 168, 212, 0.4);\n      outline: none;\n    }\n  }\n\n  .backdrop {\n    position: fixed;\n    top: 0;\n    left: 0;\n    z-index: 9998;\n    background: rgba(0, 0, 0, 0.7);\n    width: 100vw;\n    height: 100vh;\n    backdrop-filter: blur(4px);\n  }\n\n  .content {\n    z-index: 9999;\n    position: fixed;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    background-color: #121929;\n    border-radius: 12px;\n    width: 90vw;\n    max-width: 800px;\n    max-height: 90vh;\n    height: auto;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.4);\n  }\n  .content,\n  .buttons button {\n    font-family:\n      \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\",\n      monospace;\n  }\n\n  .modal-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 1rem;\n    background-color: rgba(0, 0, 0, 0.2);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n\n    h3 {\n      margin: 0;\n      font-size: 1rem;\n      font-weight: 600;\n      color: rgb(249, 168, 212);\n    }\n\n    .close-btn {\n      all: unset;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 28px;\n      height: 28px;\n      border-radius: 6px;\n      color: rgba(255, 255, 255, 0.7);\n      cursor: pointer;\n      transition: all 0.2s ease;\n      font-family: inherit;\n\n      &:hover {\n        background-color: rgba(255, 255, 255, 0.1);\n        color: white;\n      }\n    }\n  }\n\n  .editor-container {\n    height: 300px;\n    width: 100%;\n    overflow: auto;\n  }\n\n  .buttons {\n    display: flex;\n    justify-content: flex-end;\n    gap: 0.75rem;\n    padding: 1rem;\n    background-color: rgba(0, 0, 0, 0.1);\n    border-top: 1px solid rgba(255, 255, 255, 0.08);\n\n    button {\n      border: none;\n      border-radius: 6px;\n      padding: 0.6rem 1rem;\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      transition: all 0.2s ease;\n    }\n\n    .cancel {\n      background-color: rgba(255, 255, 255, 0.1);\n      color: rgba(255, 255, 255, 0.9);\n\n      &:hover {\n        background-color: rgba(255, 255, 255, 0.15);\n      }\n    }\n\n    .save {\n      background-color: rgb(249, 168, 212);\n      color: #121212;\n      font-weight: 600;\n\n      &:hover {\n        filter: brightness(1.1);\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/Select.svelte",
    "content": "<script lang=\"ts\">\n  export let options: Array<{ label: string; value: string }> = [];\n  export let value: string;\n  export let label: string;\n  export let onChange: (newValue: string) => void;\n</script>\n\n<div class=\"select-container\">\n  <label class=\"select-label\">\n    {label}\n    <div class=\"select-wrapper\">\n      <select\n        bind:value\n        on:change={(e) => {\n          onChange(e.currentTarget.value);\n        }}\n      >\n        {#each options as option}\n          <option value={option.value}>{option.label}</option>\n        {/each}\n      </select>\n      <div class=\"select-icon\">\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        >\n          <polyline points=\"6 9 12 15 18 9\"></polyline>\n        </svg>\n      </div>\n    </div>\n  </label>\n</div>\n\n<style lang=\"scss\">\n  .select-container {\n    padding: 0.5rem;\n    border-radius: 6px;\n    background: rgba(255, 255, 255, 0.03);\n    transition: background 0.2s ease;\n\n    &:hover {\n      background: rgba(255, 255, 255, 0.06);\n    }\n  }\n\n  .select-label {\n    display: flex;\n    flex-direction: column;\n    font-size: 0.875rem;\n    width: 100%;\n  }\n\n  .select-wrapper {\n    position: relative;\n    margin-top: 0.5rem;\n    width: 100%;\n  }\n\n  .select-icon {\n    position: absolute;\n    right: 10px;\n    top: 50%;\n    transform: translateY(-50%);\n    pointer-events: none;\n    color: rgb(249, 168, 212);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  select {\n    -webkit-appearance: none;\n    appearance: none;\n    width: 100%;\n    padding: 0.5rem 2.25rem 0.5rem 0.75rem;\n    border-radius: 6px;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(0, 0, 0, 0.2);\n    color: white;\n    font-family: inherit;\n    font-size: 0.875rem;\n    cursor: pointer;\n    transition: all 0.2s ease;\n\n    &:focus {\n      outline: none;\n      border-color: rgb(249, 168, 212);\n      box-shadow: 0 0 0 1px rgb(249, 168, 212, 0.4);\n    }\n\n    option {\n      background-color: #121929;\n      color: white;\n      padding: 0.5rem;\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/components/Switch.svelte",
    "content": "<script lang=\"ts\">\n  export let id: string;\n  export let label: string;\n  export let checked = false;\n  export let onChange: (newValue: boolean) => void;\n</script>\n\n<div class=\"switch-container\">\n  <div class=\"switch-wrapper\">\n    <input\n      type=\"checkbox\"\n      class=\"abby-switch\"\n      bind:checked\n      {id}\n      on:change={(e) => {\n        onChange(e.currentTarget.checked);\n      }}\n    />\n    <label class=\"abby-label\" for={id}>\n      <div class=\"toggle-track\">\n        <div class=\"toggle-thumb\"></div>\n      </div>\n    </label>\n  </div>\n  <label class=\"switch-label\" for={id}>{label}</label>\n</div>\n\n<style lang=\"scss\">\n  .switch-container {\n    display: flex;\n    align-items: center;\n    padding: 0.5rem;\n    border-radius: 6px;\n    background: rgba(255, 255, 255, 0.03);\n    transition: background 0.2s ease;\n\n    &:hover {\n      background: rgba(255, 255, 255, 0.06);\n    }\n  }\n\n  .switch-wrapper {\n    position: relative;\n    display: flex;\n    align-items: center;\n  }\n\n  .switch-label {\n    margin-left: 0.75rem;\n    font-size: 0.875rem;\n    cursor: pointer;\n    user-select: none;\n    line-height: 1.2;\n    flex: 1;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  .abby-switch {\n    position: absolute;\n    opacity: 0;\n    height: 0;\n    width: 0;\n    margin: 0;\n  }\n\n  .abby-label {\n    display: inline-block;\n    cursor: pointer;\n  }\n\n  .toggle-track {\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n    width: 36px;\n    height: 20px;\n    background-color: rgba(255, 255, 255, 0.2);\n    border-radius: 34px;\n    padding: 2px;\n    transition: all 0.2s ease;\n  }\n\n  .toggle-thumb {\n    width: 16px;\n    height: 16px;\n    background-color: white;\n    border-radius: 50%;\n    transition: all 0.2s ease;\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n  }\n\n  .abby-switch:checked + .abby-label .toggle-track {\n    background-color: rgb(249, 168, 212);\n  }\n\n  .abby-switch:checked + .abby-label .toggle-thumb {\n    transform: translateX(16px);\n  }\n\n  .abby-switch:focus + .abby-label .toggle-track {\n    box-shadow: 0 0 0 2px rgba(249, 168, 212, 0.25);\n  }\n</style>\n"
  },
  {
    "path": "packages/devtools/src/index.ts",
    "content": "import type { ComponentProps } from \"svelte\";\nimport DevtoolsComponent from \"./Devtools.svelte\";\n\nexport class DevtoolsFactory {\n  create(props: AbbyDevtoolProps) {\n    const component = new DevtoolsComponent({\n      target: document.body,\n      props,\n    });\n\n    return () => {\n      component?.$destroy();\n    };\n  }\n}\n\nexport default new DevtoolsFactory();\n\nexport type AbbyDevtoolProps = ComponentProps<DevtoolsComponent>;\n"
  },
  {
    "path": "packages/devtools/src/lib/storage.ts",
    "content": "const DEVTOOLS_KEY = \"abbyy-devtools\";\n\nexport function getShowDevtools() {\n  const storedValue = localStorage.getItem(DEVTOOLS_KEY);\n  return {\n    hasStoredValue: !!storedValue,\n    showDevtools: localStorage.getItem(DEVTOOLS_KEY) === \"true\",\n  };\n}\n\nexport function setShowDevtools(value: boolean) {\n  localStorage.setItem(DEVTOOLS_KEY, JSON.stringify(value));\n}\n\ntype Sections = {\n  flags: boolean;\n  remoteConfig: boolean;\n  tests: boolean;\n};\n\nexport function getSections(): Sections {\n  try {\n    const storedValue = localStorage.getItem(\"sections\");\n    return storedValue\n      ? JSON.parse(storedValue)\n      : ({ flags: true, remoteConfig: true, tests: true } satisfies Sections);\n  } catch (error) {\n    console.error(\"Error retrieving sections from localStorage:\", error);\n    return { flags: true, remoteConfig: true, tests: true };\n  }\n}\n\nexport function setSections(sections: Sections) {\n  try {\n    localStorage.setItem(\"sections\", JSON.stringify(sections));\n  } catch (error) {\n    console.error(\"Error saving sections to localStorage:\", error);\n  }\n}\n"
  },
  {
    "path": "packages/devtools/src/lib/types.ts",
    "content": "type Modifier = \"command\" | \"ctrl\" | \"alt\" | \"shift\" | \"option\" | \"meta\";\ntype Char =\n  | \"a\"\n  | \"b\"\n  | \"c\"\n  | \"d\"\n  | \"e\"\n  | \"f\"\n  | \"g\"\n  | \"h\"\n  | \"i\"\n  | \"j\"\n  | \"k\"\n  | \"l\"\n  | \"m\"\n  | \"n\"\n  | \"o\"\n  | \"p\"\n  | \"q\"\n  | \"r\"\n  | \"s\"\n  | \"t\"\n  | \"u\"\n  | \"v\"\n  | \"w\"\n  | \"x\"\n  | \"y\"\n  | \"z\";\ntype SpecialKey =\n  | \".\"\n  | \",\"\n  | \"/\"\n  | \";\"\n  | \"'\"\n  | \"[\"\n  | \"]\"\n  | \"-\"\n  | \"=\"\n  | \"enter\"\n  | \"space\"\n  | \"tab\"\n  | \"backspace\"\n  | \"delete\"\n  | \"escape\"\n  | \"up\"\n  | \"down\"\n  | \"left\"\n  | \"right\"\n  | \"pageup\"\n  | \"pagedown\"\n  | \"home\"\n  | \"end\";\n\ntype Key = Char | SpecialKey;\n\nexport type Shortcut =\n  | `${Modifier}+${Key}`\n  | Key\n  | `${Key} ${Key}`\n  | (string & []);\n"
  },
  {
    "path": "packages/devtools/src/vite-env.d.ts",
    "content": "/// <reference types=\"svelte\" />\n/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/devtools/svelte.config.js",
    "content": "import { vitePreprocess } from \"@sveltejs/vite-plugin-svelte\";\n\nexport default {\n  // Consult https://svelte.dev/docs#compile-time-svelte-preprocess\n  // for more information about preprocessors\n  preprocess: vitePreprocess({}),\n};\n"
  },
  {
    "path": "packages/devtools/tsconfig.json",
    "content": "{\n  \"extends\": \"@tsconfig/svelte/tsconfig.json\",\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"module\": \"ESNext\",\n    \"resolveJsonModule\": true,\n    /**\n     * Typecheck JS in `.svelte` and `.js` files by default.\n     * Disable checkJs if you'd like to use dynamic types in JS.\n     * Note that setting allowJs false does not prevent the use\n     * of JS in `.svelte` files.\n     */\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"isolatedModules\": true,\n    \"rootDir\": \"src\"\n  },\n  \"include\": [\"src/**/*.d.ts\", \"src/**/*.ts\", \"src/**/*.js\", \"src/**/*.svelte\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "packages/devtools/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/devtools/vite.config.ts",
    "content": "import { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport { defineConfig } from \"vite\";\nimport dts from \"vite-plugin-dts\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  build: {\n    lib: {\n      entry: [\"src/index.ts\"],\n      formats: [\"umd\", \"es\"],\n      fileName: \"index\",\n      name: \"abbyDevtools\",\n    },\n  },\n  plugins: [\n    dts(),\n    svelte({\n      include: [\"src/**/*.svelte\"],\n      emitCss: false,\n      prebundleSvelteLibraries: true,\n    }),\n  ],\n});\n"
  },
  {
    "path": "packages/next/.gitignore",
    "content": "dist"
  },
  {
    "path": "packages/next/CHANGELOG.md",
    "content": "# @tryabby/next\n\n## 7.0.1\n\n### Patch Changes\n\n- fix build\n- Updated dependencies\n  - @tryabby/react@7.0.1\n\n## 7.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@7.0.0\n\n## 6.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@6.0.0\n\n## 5.1.3\n\n### Patch Changes\n\n- @tryabby/react@5.2.2\n\n## 5.1.2\n\n### Patch Changes\n\n- @tryabby/react@5.2.1\n\n## 5.1.1\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/react@5.2.0\n\n## 5.1.0\n\n### Minor Changes\n\n- add helper to retrieve all flags/config variables\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@5.1.0\n\n## 5.0.6\n\n### Patch Changes\n\n- @tryabby/react@5.0.6\n\n## 5.0.5\n\n### Patch Changes\n\n- @tryabby/react@5.0.5\n\n## 5.0.4\n\n### Patch Changes\n\n- add esm packages\n- Updated dependencies\n  - @tryabby/react@5.0.4\n\n## 5.0.3\n\n### Patch Changes\n\n- @tryabby/react@5.0.3\n\n## 5.0.2\n\n### Patch Changes\n\n- @tryabby/react@5.0.2\n\n## 5.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n- Updated dependencies\n  - @tryabby/react@5.0.1\n\n## 5.0.0\n\n### Major Changes\n\n- add remote config\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@5.0.0\n\n## 4.1.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.2.0\n\n## 4.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.1.0\n\n## 4.0.1\n\n### Patch Changes\n\n- @tryabby/react@4.0.1\n\n## 4.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.0.0\n\n## 3.4.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.4.0\n\n## 3.3.1\n\n### Patch Changes\n\n- refactor shard package\n- Updated dependencies\n  - @tryabby/react@3.3.1\n\n## 3.3.0\n\n### Minor Changes\n\n- use new .com domain as abby url\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.3.0\n\n## 3.2.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.2.1\n\n## 3.2.0\n\n### Minor Changes\n\n- add option to force display the devtools even in non-dev environments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.2.0\n\n## 3.1.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.2\n\n## 3.1.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.1\n\n## 3.1.0\n\n### Minor Changes\n\n- make devtools universal\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.0\n\n## 3.0.1\n\n### Patch Changes\n\n- add readme\n- Updated dependencies\n  - @tryabby/react@3.0.1\n\n## 3.0.0\n\n### Major Changes\n\n- add server side flag dev support\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.0.0\n\n## 2.4.3\n\n### Patch Changes\n\n- add getVariants to core\n- Updated dependencies\n  - @tryabby/react@2.3.3\n\n## 2.4.2\n\n### Patch Changes\n\n- add getVariants helper function\n- Updated dependencies\n  - @tryabby/react@2.3.2\n\n## 2.4.1\n\n### Patch Changes\n\n- add reset helper functions\n- Updated dependencies\n  - @tryabby/react@2.3.1\n\n## 2.4.0\n\n### Minor Changes\n\n- add edge/api function helpers and non-react a/b test function\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@2.3.0\n\n## 2.3.0\n\n### Minor Changes\n\n- add edge function compat\n\n## 2.2.2\n\n### Patch Changes\n\n- add request cache\n\n## 2.2.1\n\n### Patch Changes\n\n- @tryabby/react@2.2.1\n\n## 2.2.0\n\n### Minor Changes\n\n- extract DevTools\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@2.2.0\n\n## 1.9.0\n\n### Minor Changes\n\n- use \\_\\_abby to get featureFlagValues synchronously\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.12.0\n\n## 1.8.1\n\n### Patch Changes\n\n- make getFeatureFlagValue async\n- Updated dependencies\n  - @tryabby/react@1.11.1\n\n## 1.8.0\n\n### Minor Changes\n\n- revert AbbyProvider wrapping\n\n## 1.7.0\n\n### Minor Changes\n\n- add `getFeatureFlagValue` to next\n\n## 1.6.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.11.0\n\n## 1.6.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.10.0\n\n## 1.6.0\n\n### Minor Changes\n\n- disable events on localhost to prevent overflowing analytics\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.9.0\n\n## 1.5.0\n\n### Minor Changes\n\n- remove enviroments config options\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.8.0\n\n## 1.4.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.7.0\n\n## 1.4.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.6.0\n\n## 1.4.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.5.0\n\n## 1.4.1\n\n### Patch Changes\n\n- add devtools\n- Updated dependencies\n  - @tryabby/react@1.4.1\n\n## 1.4.0\n\n### Minor Changes\n\n- use core package\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.4.0\n\n## 1.3.10\n\n### Patch Changes\n\n- fix API calls\n- Updated dependencies\n  - @tryabby/react@1.3.6\n\n## 1.3.9\n\n### Patch Changes\n\n- fix API URL\n- Updated dependencies\n  - @tryabby/react@1.3.5\n\n## 1.3.8\n\n### Patch Changes\n\n- fix config types\n\n## 1.3.7\n\n### Patch Changes\n\n- fix types\n- Updated dependencies\n  - @tryabby/react@1.3.4\n\n## 1.3.6\n\n### Patch Changes\n\n- fix types\n\n## 1.3.5\n\n### Patch Changes\n\n- fix typings\n\n## 1.3.4\n\n### Patch Changes\n\n- fix types\n- Updated dependencies\n  - @tryabby/react@1.3.3\n\n## 1.3.3\n\n### Patch Changes\n\n- fix types\n\n## 1.3.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.3.2\n\n## 1.3.1\n\n### Patch Changes\n\n- fix base url\n- Updated dependencies\n  - @tryabby/react@1.3.1\n\n## 1.3.0\n\n### Minor Changes\n\n- 6df8a62: add feature flags\n\n### Patch Changes\n\n- fix typings\n- Updated dependencies\n- Updated dependencies [6df8a62]\n  - @tryabby/react@1.3.0\n"
  },
  {
    "path": "packages/next/README.md",
    "content": "# @tryabby/next\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                             | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                          | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application             | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests             | -                     |\n| flags              | `object` |          | An array containing your defined Feature Flags          | -                     |\n| settings           | `object` |          | An object with additional settings for Abby             | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: { \"test-flag\": \"Boolean\" },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValues`: Allows you to set a general default value for each flag type. The keys of the object represent the types of the flags.\n  The default value is the following:\n\n  ```json\n  {\n    \"Boolean\": false,\n    \"String\": \"\",\n    \"Number\": 0,\n    \"JSON\": {}\n  }\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the flag. This means if your flag is a `String` flag, this needs to be a `string`.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `string`: The name of the test or flag, needs to be one of the defined tests.\n\n##### Return Values\n\n- `variant` : The variant of the test\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Return Values\n\nThe variant of the test.\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### withAbby\n\nA higher-order component that enables Server Side Rendering within Next.js.\nIf you wrap your \\_app component with this, all occurances of `useFeatureFlag` will be SSR'd\n\n##### Example\n\n```jsx\n// _app.tsx (or _app.js)\nimport { withAbby } from \"lib/abby\";\n\nfunction MyApp({ Component, pageProps }) {\n  return <Component {...pageProps} />;\n}\n\nexport default withAbby(MyApp);\n```\n\n#### withAbbyEdge\n\nA higher-order function that can be wrapped around any vercel edge function (like the `middleware.ts`).\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour edge function\n\n##### Example\n\n```ts\n// middleware.ts\nimport { withAbbyEdge } from \"lib/abby\";\nimport { NextResponse } from \"next/server\";\n\nexport default withAbbyEdge((req) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    const res = NextResponse.redirect(\"/beta\");\n\n    // update the user's cookie\n    setCookie(res);\n    return res;\n  }\n\n  return NextResponse.next();\n});\n```\n\n#### withAbbyApiHandler\n\nA higher-order function that can be wrapped around any api route.\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour api route handler\n\n##### Example\n\n```ts\n// /api/test.ts\nimport { withAbbyApiHandler } from \"lib/abby\";\n\nexport default withAbbyApiHandler((req, res) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    // update the user's cookie\n    setCookie(res);\n    return res.status(200).end();\n  }\n\n  res.status(404).end();\n});\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n#### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n#### Example\n\n```tsx\nimport { getABResetFunction } from \"lib/abby\";\nimport { useRouter } from \"next/router\";\n\nexport default function SomePage() {\n  const router = useRouter();\n\n  const onReset = () => {\n    const resetCookie = getABResetFunction(\"SignupButton\");\n    resetCookie();\n    router.reload();\n  };\n\n  return (\n    <div>\n      <h1>Hello World</h1>\n      <button onClick={onReset}>Reset Cookie</button>\n    </div>\n  );\n}\n```\n"
  },
  {
    "path": "packages/next/package.json",
    "content": "{\n  \"name\": \"@tryabby/next\",\n  \"version\": \"7.0.1\",\n  \"description\": \"\",\n  \"main\": \"dist/index.js\",\n  \"files\": [\"dist\"],\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \".\": {\n    \"types\": \"./dist/index.d.ts\",\n    \"import\": \"./dist/index.mjs\",\n    \"require\": \"./dist/index.js\"\n  },\n  \"scripts\": {\n    \"build\": \"tsup src/index.tsx\",\n    \"dev\": \"pnpm run build --watch\",\n    \"test\": \"vitest\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"homepage\": \"https://docs.tryabby.com\",\n  \"devDependencies\": {\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/react-hooks\": \"^8.0.1\",\n    \"@tryabby/core\": \"workspace:*\",\n    \"@tryabby/devtools\": \"workspace:^\",\n    \"@types/js-cookie\": \"^3.0.3\",\n    \"@types/react\": \"^18.0.26\",\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"jsdom\": \"^20.0.3\",\n    \"msw\": \"^0.49.1\",\n    \"next\": \">=13\",\n    \"node-fetch\": \"^3.3.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"tsconfig\": \"workspace:*\",\n    \"tsup\": \"^6.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"peerDependencies\": {\n    \"next\": \">=13\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"dependencies\": {\n    \"@tryabby/react\": \"workspace:*\",\n    \"js-cookie\": \"^3.0.1\"\n  }\n}\n"
  },
  {
    "path": "packages/next/src/cache.ts",
    "content": "export class PromiseCache<T> {\n  private ttl: number;\n  private cache: Map<string, { storedAt: number; value: Promise<T> }> =\n    new Map();\n\n  constructor(ttl = 1000 * 60) {\n    this.ttl = ttl;\n  }\n\n  public async get(key: string, fn: () => Promise<T>): Promise<T> {\n    const cached = this.cache.get(key);\n    if (cached && Date.now() - cached.storedAt < this.ttl) {\n      return cached.value;\n    }\n\n    const promise = fn();\n    this.cache.set(key, { value: promise, storedAt: Date.now() });\n    return promise;\n  }\n}\n"
  },
  {
    "path": "packages/next/src/helpers.ts",
    "content": "import Cookies from \"js-cookie\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type {\n  RequestCookie,\n  RequestCookies,\n} from \"next/dist/server/web/spec-extension/cookies\";\nimport type { NextRequest, NextResponse } from \"next/server\";\n\nexport function getIsomorphicCookies<\n  RequestType extends NextRequest | NextApiRequest | undefined = undefined,\n>(req: RequestType) {\n  if (!req && typeof window === \"undefined\") {\n    throw new Error(\n      \"You must pass a request object to getABTestValue on the server\"\n    );\n  }\n\n  let cookies: {\n    get: (key: string) => string | RequestCookie | undefined;\n    set: (key: string, value: string) => void;\n    delete: (key: string) => void;\n  };\n\n  if (req) {\n    if (req.cookies && \"get\" in req.cookies) {\n      cookies = req.cookies as RequestCookies;\n    } else {\n      cookies = new Map(Object.entries(req.cookies));\n    }\n  } else {\n    cookies = {\n      get: Cookies.get,\n      set: Cookies.set,\n      delete: Cookies.remove,\n    };\n  }\n  return cookies;\n}\n\nexport function isEdgeFunction(\n  res: NextResponse | NextApiResponse\n): res is NextResponse {\n  return \"cookies\" in res;\n}\n\nexport function isBrowser(\n  res?: NextResponse | NextApiResponse\n): res is undefined {\n  return typeof window !== \"undefined\";\n}\n"
  },
  {
    "path": "packages/next/src/index.tsx",
    "content": "import {\n  type AbbyDataResponse,\n  type RemoteConfigValueString,\n  type ValidatorType,\n  getABStorageKey,\n} from \"@tryabby/core\";\nimport { HttpService } from \"@tryabby/core\";\nimport {\n  type ABConfig,\n  type AbbyConfig,\n  createAbby as baseCreateAbby,\n  type withDevtoolsFunction,\n} from \"@tryabby/react\";\nimport Cookie from \"js-cookie\";\nimport type { NextApiHandler, NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextMiddleware, NextRequest, NextResponse } from \"next/server\";\nimport { getIsomorphicCookies, isBrowser, isEdgeFunction } from \"./helpers\";\nimport { ABBY_DATA_KEY, withAbby } from \"./withAbby\";\n\nexport { defineConfig } from \"@tryabby/core\";\n\n// TODO: figure out how to prevent re-typing of the same types\nexport function createAbby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<string, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n  const User extends Record<string, ValidatorType> = Record<\n    string,\n    ValidatorType\n  >,\n>(\n  config: AbbyConfig<\n    FlagName,\n    Tests,\n    string[],\n    RemoteConfigName,\n    RemoteConfig,\n    User\n  >\n) {\n  const {\n    AbbyProvider,\n    useAbby,\n    useFeatureFlag,\n    getFeatureFlagValue,\n    useRemoteConfig,\n    getRemoteConfig,\n    __abby__,\n    getVariants,\n    withDevtools,\n    useFeatureFlags,\n    useRemoteConfigVariables,\n    updateUserProperties,\n  } = baseCreateAbby<\n    FlagName,\n    TestName,\n    Tests,\n    RemoteConfig,\n    RemoteConfigName,\n    User\n  >(config);\n\n  const abbyApiHandler =\n    <HandlerType extends NextApiHandler | NextMiddleware>(\n      handler: HandlerType\n    ) =>\n    async (...args: Parameters<HandlerType>) => {\n      const data = await HttpService.getProjectData({\n        projectId: config.projectId,\n        environment: config.currentEnvironment,\n        url: config.apiUrl,\n      });\n      if (data) {\n        __abby__.init(data);\n      }\n      return (handler as any)(...args) as ReturnType<HandlerType>;\n    };\n\n  return {\n    AbbyProvider,\n    useAbby,\n    useFeatureFlag,\n    withAbby: withAbby(config as AbbyConfig<FlagName, Tests>, __abby__),\n    getFeatureFlagValue,\n    useRemoteConfig,\n    useFeatureFlags,\n    useRemoteConfigVariables,\n    getRemoteConfig,\n    __abby__,\n    getVariants,\n    withDevtools: withDevtools as withDevtoolsFunction,\n    withAbbyEdge: abbyApiHandler<NextMiddleware>,\n    withAbbyApiHandler: abbyApiHandler<NextApiHandler>,\n    updateUserProperties,\n    /**\n     * Isomorphic function to get the value of an A/B test\n     * if the value is not set yet it will set it and return the new value\n     * otherwise it will return the stored value\n     * @param name the name of the test\n     * @param req the NextRequest, must be passed on the server and omitted on the client\n     * @returns the value of the test and a function to set the cookie\n     */\n    getABTestValue<\n      T extends keyof Tests,\n      TestVariant extends Tests[T][\"variants\"][number],\n      LookupValue,\n      const Lookup extends\n        | Record<TestVariant, LookupValue>\n        | undefined = undefined,\n      RequestType extends NextRequest | NextApiRequest | undefined = undefined,\n      ResponseType extends\n        | NextResponse\n        | NextApiResponse = RequestType extends NextRequest\n        ? NextResponse\n        : RequestType extends NextApiRequest\n          ? NextApiResponse\n          : never,\n    >(\n      name: T,\n      req?: RequestType,\n      lookupObject?: Lookup\n    ): [\n      Lookup extends undefined\n        ? TestVariant\n        : TestVariant extends keyof Lookup\n          ? Lookup[TestVariant]\n          : never,\n      RequestType extends NextRequest | NextApiRequest\n        ? (res: ResponseType) => void\n        : () => void,\n    ] {\n      const cookies = getIsomorphicCookies(req);\n\n      const storedValue = cookies.get(\n        getABStorageKey(config.projectId, name as string)\n      );\n\n      const cookieKey = getABStorageKey(config.projectId, name as string);\n\n      if (storedValue) {\n        const storedVariant =\n          typeof storedValue === \"string\" ? storedValue : storedValue.value;\n\n        return [\n          lookupObject\n            ? lookupObject[storedVariant as TestVariant]\n            : storedVariant,\n          () => {},\n        ];\n      }\n\n      const newValue = __abby__.getTestVariant(name);\n\n      const setCookieFunc = (res?: ResponseType) => {\n        if (!res && typeof window === \"undefined\")\n          throw new Error(\n            \"You must pass a response object to setABTestValue on the server\"\n          );\n\n        if (isBrowser(res)) {\n          Cookie.set(cookieKey, newValue, {\n            httpOnly: false,\n          });\n          return;\n        }\n\n        if (isEdgeFunction(res)) {\n          res.cookies.set(cookieKey, newValue, {\n            httpOnly: false,\n          });\n          return;\n        }\n\n        res.setHeader(\"Set-Cookie\", `${cookieKey}=${newValue};`);\n      };\n\n      return [\n        lookupObject\n          ? (lookupObject[newValue as TestVariant] as any)\n          : newValue,\n        setCookieFunc,\n      ];\n    },\n    /**\n     * Isomorphic function to reset the value of an A/B test\n     * if called on the server (edge function or API route) you will need to pass in the request object\n     * @param name the name of the test\n     * @param req the NextRequest, must be passed on the server and omitted on the client\n     */\n    getABResetFunction: <\n      T extends keyof Tests,\n      RequestType extends NextRequest | NextApiRequest | undefined = undefined,\n      ResponseType extends\n        | NextResponse\n        | NextApiResponse = RequestType extends NextRequest\n        ? NextResponse\n        : RequestType extends NextApiRequest\n          ? NextApiResponse\n          : never,\n    >(\n      name: T,\n      req?: RequestType\n    ): RequestType extends NextRequest | NextApiRequest\n      ? (res: ResponseType) => void\n      : () => void => {\n      const cookies = getIsomorphicCookies(req);\n\n      const cookieKey = getABStorageKey(config.projectId, name as string);\n\n      return (res?: ResponseType) => {\n        if (!res && typeof window === \"undefined\")\n          throw new Error(\n            \"You must pass a response object to setABTestValue on the server\"\n          );\n\n        if (isBrowser(res)) {\n          cookies.delete(cookieKey);\n          return;\n        }\n\n        if (isEdgeFunction(res)) {\n          res.cookies.delete(cookieKey);\n          return;\n        }\n        res.setHeader(\"Set-Cookie\", `${cookieKey}=d; Max-Age=0`);\n      };\n    },\n    // TODO: make leaner preloads\n    // preloadData: async ({\n    //   flags,\n    //   tests,\n    // }: {\n    //   flags?: FlagName[];\n    //   tests?: O.NonNullableKeys<Tests>[];\n    // }) => {\n    //   const data = await HttpService.getProjectData({\n    //     projectId: config.projectId,\n    //     environment: config.currentEnvironment,\n    //     url: config.apiUrl,\n    //   });\n    //   if (!data) return {};\n    //   __abby__.init(data);\n    //   return {\n    //     [ABBY_DATA_KEY]: data,\n    //   };\n    // },\n  };\n}\n\nexport { ABBY_DATA_KEY };\n\nexport type WithAbbyProps = {\n  [key in typeof ABBY_DATA_KEY]: AbbyDataResponse;\n} & {\n  [key: string]: any;\n};\n"
  },
  {
    "path": "packages/next/src/withAbby.tsx",
    "content": "import { HttpService } from \"@tryabby/core\";\nimport type { Abby } from \"@tryabby/core\";\nimport type { AbbyDataResponse } from \"@tryabby/core\";\nimport type { AbbyConfig } from \"@tryabby/react\";\nimport type {\n  AppContextType,\n  AppPropsType,\n  NextComponentType,\n} from \"next/dist/shared/lib/utils\";\nimport type { NextRouter } from \"next/router\";\nimport { PromiseCache } from \"./cache\";\n\nexport const ABBY_DATA_KEY = \"__ABBY_PROJECT_DATA__\";\n\nexport function withAbby<\n  Config extends Pick<\n    AbbyConfig,\n    \"apiUrl\" | \"projectId\" | \"currentEnvironment\"\n  >,\n>(\n  { apiUrl, projectId, currentEnvironment }: Config,\n  abbyInstance: Abby<any, any, any, any, any>,\n  preloadAll = true\n) {\n  const promiseCache = new PromiseCache<AbbyDataResponse | null>();\n\n  return (AppOrPage: NextComponentType<any, any, any>): NextComponentType => {\n    const WithAbby = (props: AppPropsType<NextRouter, any>) => {\n      return <AppOrPage {...props} />;\n    };\n\n    WithAbby.getInitialProps = async (appOrPageCtx: AppContextType) => {\n      // Determine if we are wrapping an App component or a Page component.\n      const isApp = !!appOrPageCtx.Component;\n\n      let pageProps: Record<string, any> = {};\n\n      if (preloadAll && isApp) {\n        const abbyData = await promiseCache.get(\"abbyData\", () =>\n          HttpService.getProjectData({\n            projectId,\n            environment: currentEnvironment,\n            url: apiUrl,\n          })\n        );\n\n        if (abbyData) {\n          abbyInstance.init(abbyData);\n        }\n\n        pageProps[ABBY_DATA_KEY] = abbyData;\n      }\n\n      abbyInstance.setLocalOverrides(\n        appOrPageCtx.ctx.req?.headers.cookie ?? \"\"\n      );\n\n      // Run the wrapped component's getInitialProps function.\n      if (AppOrPage.getInitialProps) {\n        const originalProps = await AppOrPage.getInitialProps(\n          appOrPageCtx as any\n        );\n        const originalPageProps = isApp\n          ? (originalProps.pageProps ?? {})\n          : originalProps;\n\n        pageProps = {\n          ...originalPageProps,\n          ...pageProps,\n        };\n      }\n\n      const getAppTreeProps = (props: Record<string, unknown>) =>\n        isApp ? { pageProps: props } : props;\n\n      return getAppTreeProps(pageProps);\n    };\n\n    const displayName = AppOrPage.displayName || AppOrPage.name || \"Component\";\n    WithAbby.displayName = `withAbby(${displayName})`;\n\n    return WithAbby as any;\n  };\n}\n"
  },
  {
    "path": "packages/next/tests/cache.test.ts",
    "content": "import { PromiseCache } from \"../src/cache\";\n\ndescribe(\"PromiseCache\", () => {\n  beforeEach(() => {\n    vi.useFakeTimers();\n  });\n  afterEach(() => {\n    vi.restoreAllMocks();\n  });\n\n  it(\"should cache the result of a function\", async () => {\n    const cache = new PromiseCache();\n    const fn = vi.fn(async () => 1);\n    let result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    // The function should not be called again\n    result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    expect(fn).toHaveBeenCalledTimes(1);\n  });\n\n  it(\"should not cache the result of a function if the ttl has expired\", async () => {\n    const cache = new PromiseCache(1000);\n    const fn = vi.fn(async () => 1);\n    let result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    // The function should not be called again\n    result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    // Fast forward 1 second\n    vi.advanceTimersByTime(1001);\n\n    result = await cache.get(\"key\", fn);\n    expect(result).toBe(1);\n\n    expect(fn).toHaveBeenCalledTimes(2);\n  });\n});\n"
  },
  {
    "path": "packages/next/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL, type AbbyDataResponse } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n    {\n      name: \"flag2\",\n      value: false,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"remoteConfig1\",\n      value: \"FooBar\",\n    },\n  ],\n};\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/next/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/next/tests/setup.ts",
    "content": "/// @ts-ignore it doesn't have types\nimport matchers from \"@testing-library/jest-dom/matchers\";\nimport { cleanup } from \"@testing-library/react\";\nimport fetch from \"node-fetch\";\nimport { afterEach, expect } from \"vitest\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n// Reset any request handlers that we may add during the tests,\n// so they don't affect other tests.\nafterEach(() => server.resetHandlers());\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n\n// extends Vitest's expect method with methods from react-testing-library\nexpect.extend(matchers);\n\n// runs a cleanup after each test case (e.g. clearing jsdom)\nafterEach(() => {\n  cleanup();\n});\n"
  },
  {
    "path": "packages/next/tests/types.test.tsx",
    "content": "import { renderHook } from \"@testing-library/react\";\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextFetchEvent, NextRequest, NextResponse } from \"next/server\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\n\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct types\", () => {\n    const test2Variants = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ] as const;\n\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"ONLY_ONE_VARIANT\"] },\n        test2: {\n          variants: test2Variants,\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: test1Result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    assertType<\"ONLY_ONE_VARIANT\">(test1Result.current.variant);\n\n    expect(test1Result.current.variant).toBeDefined();\n\n    const { result: test2Result } = renderHook(() => useAbby(\"test2\"), {\n      wrapper,\n    });\n\n    assertType<(typeof test2Variants)[number]>(test2Result.current.variant);\n\n    expect(test2Result.current.variant).toBeDefined();\n  });\n});\n\ndescribe(\"useFeatureFlag\", () => {\n  it(\"returns the correct types\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      flags: [\"test\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    renderHook(() => useFeatureFlag(\"test\"), {\n      wrapper,\n    });\n  });\n\n  // TODO: the types don't work for this yet\n  it.skip(\"has the correct type for devOverrides\", () => {\n    createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"test\",\n      flags: [\"test\"],\n      tests: {\n        a: {\n          variants: [\"a1\", \"a2\"],\n        },\n      },\n      settings: {\n        flags: {\n          devOverrides: {\n            test: true,\n          },\n        },\n      },\n    });\n  });\n\n  // we only need typesafety here\n  it.skip(\"has the correct types for getABTestValue\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"test\",\n      flags: [\"test\"],\n      tests: {\n        a: {\n          variants: [\"a1\", \"a2\"],\n        },\n      },\n    });\n\n    const [variants, setCookie] = getABTestValue(\"a\");\n\n    expectTypeOf(variants).toEqualTypeOf<\"a1\" | \"a2\">();\n\n    expectTypeOf(setCookie).toEqualTypeOf<() => void>();\n\n    // on client -> no request thereforen no res\n    const [, setCookieOnClient] = getABTestValue(\"a\");\n\n    expectTypeOf(setCookieOnClient).toEqualTypeOf<() => void>();\n\n    // on edge -> res is NextResponse\n    const [, setCookieOnEdge] = getABTestValue(\"a\", {} as NextRequest);\n\n    expectTypeOf(setCookieOnEdge).toEqualTypeOf<(res: NextResponse) => void>();\n\n    // on server -> res is NextApiResponse\n    const [, setCookieOnServer] = getABTestValue(\"a\", {} as NextApiRequest);\n\n    expectTypeOf(setCookieOnServer).toEqualTypeOf<\n      (res: NextApiResponse) => void\n    >();\n  });\n\n  // we only need typesafety here\n  it.skip(\"has the correct values for withAbbyEdge\", async () => {\n    const { withAbbyEdge, withAbbyApiHandler } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"test\",\n    });\n\n    const edgeHandler = withAbbyEdge((_req) => {});\n\n    expectTypeOf(edgeHandler).parameters.toEqualTypeOf<\n      [NextRequest, NextFetchEvent]\n    >();\n\n    const apiHandler = withAbbyApiHandler((_req, _res) => {});\n\n    expectTypeOf(apiHandler).parameters.toEqualTypeOf<\n      [NextApiRequest, NextApiResponse]\n    >();\n  });\n});\n\ndescribe(\"useRemoteConfig\", () => {\n  it.skip(\"has the correct typings\", () => {\n    const { AbbyProvider, useRemoteConfig } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      remoteConfig: {\n        stringRc: \"String\",\n        numberRc: \"Number\",\n        jsonRc: \"JSON\",\n      },\n    });\n\n    expectTypeOf(useRemoteConfig)\n      .parameter(0)\n      .toEqualTypeOf<\"stringRc\" | \"numberRc\" | \"jsonRc\">();\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: stringRcResult } = renderHook(\n      () => useRemoteConfig(\"stringRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: numberRcResult } = renderHook(\n      () => useRemoteConfig(\"numberRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: jsonRcResult } = renderHook(\n      () => useRemoteConfig(\"jsonRc\"),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(stringRcResult.current).toEqualTypeOf<string>();\n    expectTypeOf(numberRcResult.current).toEqualTypeOf<number>();\n    expectTypeOf(jsonRcResult.current).toEqualTypeOf<Record<string, unknown>>();\n  });\n});\n"
  },
  {
    "path": "packages/next/tests/useAbby.test.tsx",
    "content": "import { renderHook } from \"@testing-library/react\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct amount of options\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    expect(result.current.variant).toBeDefined();\n  });\n\n  it(\"has the correct types\", () => {\n    const { AbbyProvider, useAbby, useFeatureFlag } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n      flags: [\"flag1\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    expectTypeOf(useAbby).parameter(0).toEqualTypeOf<\"test\" | \"test2\">();\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    expectTypeOf(result.current.variant).toEqualTypeOf<\n      \"OldFooter\" | \"NewFooter\"\n    >();\n\n    expectTypeOf(useFeatureFlag).parameters.toEqualTypeOf<[\"flag1\"]>();\n\n    const { result: ffResult } = renderHook(() => useFeatureFlag(\"flag1\"), {\n      wrapper,\n    });\n\n    expectTypeOf(ffResult.current).toEqualTypeOf<boolean>();\n  });\n\n  it(\"uses lookup object when retrieving AB test variant\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const lookupMap = {\n      SimonsText: \"a\",\n      MatthiasText: \"b\",\n      TomsText: \"c\",\n      TimsText: \"d\",\n    };\n\n    const activeVariant = getABTestValue(\"test2\")[0];\n    const value = getABTestValue(\"test2\", undefined, lookupMap)[0];\n\n    expect(value).toBe(lookupMap[activeVariant]);\n  });\n\n  it(\"produces proper types with a lookup objects\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const [activeVariant] = getABTestValue(\"test\", undefined, {\n      A: \"Hello\",\n      B: \"Bonjour\",\n      C: \"Hola\",\n    });\n\n    expectTypeOf(activeVariant).toEqualTypeOf<\"Hello\" | \"Bonjour\" | \"Hola\">();\n  });\n\n  it(\"produces proper types with a a lookup object in the hook\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(\n      () =>\n        useAbby(\"test\", {\n          A: \"Hello\",\n          B: \"Bonjour\",\n          C: \"Hola\",\n        }),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(result.current.variant).toEqualTypeOf<\n      \"Hello\" | \"Bonjour\" | \"Hola\"\n    >();\n  });\n});\n"
  },
  {
    "path": "packages/next/tests/withAbby.test.tsx",
    "content": "import { render } from \"@testing-library/react\";\nimport { ABBY_FF_STORAGE_PREFIX } from \"@tryabby/core\";\nimport { createAbby } from \"../src\";\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"withAbby\", () => {\n  it(\"works properly\", async () => {\n    const { getFeatureFlagValue, withAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {},\n      flags: [\"flag1\"],\n    });\n\n    const Component = withAbby(() => <></>);\n\n    // emulate the getInitialProps call\n    const props = await (Component as any).getInitialProps({\n      Component: () => {},\n      ctx: {\n        req: {\n          headers: {},\n        },\n      },\n    });\n\n    render(<Component {...props} />);\n    expect(getFeatureFlagValue(\"flag1\")).toBe(true);\n  });\n\n  it(\"seeds the flags in development with the cookies\", async () => {\n    /// @ts-ignore\n    process.env.NODE_ENV = \"development\";\n    const { getFeatureFlagValue, withAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {},\n      flags: [\"flag1\"],\n    });\n\n    const Component = withAbby(() => <></>);\n\n    // emulate the getInitialProps call\n    const props = await (Component as any).getInitialProps({\n      Component: () => {},\n      ctx: {\n        req: {\n          headers: {\n            cookie: `${ABBY_FF_STORAGE_PREFIX}123_flag1=false;`,\n          },\n        },\n      },\n    });\n\n    render(<Component {...props} />);\n    expect(getFeatureFlagValue(\"flag1\")).toBe(false);\n  });\n\n  it(\"returns correct value for remoteConfig\", async () => {\n    const { withAbby, getRemoteConfig } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n    });\n    const Component = withAbby(() => <></>);\n\n    const props = await (Component as any).getInitialProps({\n      Component: () => {},\n      ctx: {\n        req: {\n          headers: {},\n        },\n      },\n    });\n\n    render(<Component {...props} />);\n    expect(getRemoteConfig(\"remoteConfig1\")).toBe(\"FooBar\");\n  });\n});\n"
  },
  {
    "path": "packages/next/tsconfig.json",
    "content": "{\n    \"extends\": \"tsconfig/react-library.json\",\n    \"compilerOptions\": {\n        \"lib\": [\"ESNext\", \"DOM\"],\n        \"types\": [\"vitest/globals\"]\n    }\n}"
  },
  {
    "path": "packages/next/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  // we want to bundle the shared package because it's not published to npm\n  // it's hacky :)\n  noExternal: [\"shared/src/types\"],\n  clean: true,\n  format: [\"cjs\", \"esm\"],\n  sourcemap: true,\n  treeshake: true,\n});\n"
  },
  {
    "path": "packages/next/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [react()],\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/node/.gitignore",
    "content": "dist"
  },
  {
    "path": "packages/node/CHANGELOG.md",
    "content": "# @tryabby/node\n\n## 7.0.1\n\n### Patch Changes\n\n- fix build\n- Updated dependencies\n  - @tryabby/core@7.0.1\n\n## 7.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.0\n\n## 6.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@6.0.0\n\n## 5.1.8\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.4.0\n\n## 5.1.7\n\n### Patch Changes\n\n- Updated dependencies [d05cb9a]\n  - @tryabby/core@5.3.1\n\n## 5.1.6\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/core@5.3.0\n\n## 5.1.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.2.0\n\n## 5.1.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.4\n\n## 5.1.3\n\n### Patch Changes\n\n- add memory storage for tests\n- Updated dependencies\n  - @tryabby/core@5.1.3\n"
  },
  {
    "path": "packages/node/fix-exports.js",
    "content": "const pkg = require(\"./package.json\");\nconst fs = require(\"node:fs\");\n\nconst basePkgJson = {\n  main: \"index.js\",\n  types: \"index.d.ts\",\n};\n\nfunction main() {\n  Object.keys(pkg.exports).forEach((key) => {\n    if (key === \".\") {\n      return;\n    }\n\n    const newPath = key.replace(\"./\", \"dist/\");\n\n    fs.writeFileSync(\n      `./${newPath}/package.json`,\n      JSON.stringify(basePkgJson, null, 2)\n    );\n  });\n}\n\nmain();\n"
  },
  {
    "path": "packages/node/package.json",
    "content": "{\n  \"name\": \"@tryabby/node\",\n  \"version\": \"7.0.1\",\n  \"description\": \"\",\n  \"main\": \"dist/index.js\",\n  \"files\": [\"dist\"],\n  \"exports\": {\n    \".\": {\n      \"require\": \"./dist/index.js\",\n      \"import\": \"./dist/index.mjs\",\n      \"types\": \"./dist/index.d.ts\"\n    },\n    \"./express\": {\n      \"require\": \"./dist/express/index.js\",\n      \"import\": \"./dist/express/index.mjs\",\n      \"types\": \"./dist/express/index.d.ts\"\n    },\n    \"./koa\": {\n      \"require\": \"./dist/express/index.js\",\n      \"import\": \"./dist/express/index.mjs\",\n      \"types\": \"./dist/express/index.d.ts\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsup src/ && node fix-exports.js\",\n    \"dev\": \"pnpm run build --watch\",\n    \"test\": \"vitest\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@types/express\": \"^4.17.17\",\n    \"@types/koa\": \"^2.13.12\",\n    \"@types/supertest\": \"^2.0.16\",\n    \"express\": \"^4.19.2\",\n    \"get-port\": \"^7.1.0\",\n    \"koa\": \"^2.14.2\",\n    \"msw\": \"^0.49.1\",\n    \"node-fetch\": \"^3.3.0\",\n    \"supertest\": \"^6.3.3\",\n    \"tsconfig\": \"workspace:*\",\n    \"tsup\": \"^6.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"dependencies\": {\n    \"@tryabby/core\": \"workspace:*\"\n  }\n}\n"
  },
  {
    "path": "packages/node/src/express/index.ts",
    "content": "import type {\n  ABConfig,\n  Abby,\n  AbbyConfig,\n  RemoteConfigValueString,\n} from \"@tryabby/core\";\nimport type { NextFunction, Request, Response } from \"express\";\nimport { createAbby } from \"../index\";\n\nconst instanceMap = new Map<string, Abby<any, any, any, any, any>>();\nconst initializedProjects = new Set<string>();\n\nexport function createAbbyMiddleWare<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n>(\n  config: AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig>\n) {\n  let abbyInstance = instanceMap.get(config.projectId);\n\n  if (!abbyInstance) {\n    abbyInstance = createAbby(config);\n    instanceMap.set(config.projectId, abbyInstance);\n  }\n\n  const middleware = async (\n    req: Request,\n    _res: Response,\n    next: NextFunction\n  ) => {\n    if (!abbyInstance) {\n      throw new Error(\"Abby is undefined\");\n    }\n    await abbyInstance.loadProjectData();\n    if (req.headers.cookie) {\n      abbyInstance.setLocalOverrides(req.headers.cookie);\n    }\n    initializedProjects.add(config.projectId);\n    next();\n  };\n\n  return {\n    middleware,\n    abby: abbyInstance as Abby<\n      FlagName,\n      TestName,\n      Tests,\n      RemoteConfig,\n      RemoteConfigName,\n      any\n    >,\n  };\n}\n"
  },
  {
    "path": "packages/node/src/index.ts",
    "content": "import {\n  type ABConfig,\n  Abby,\n  type AbbyConfig,\n  type RemoteConfigValueString,\n} from \"@tryabby/core\";\nexport { defineConfig } from \"@tryabby/core\";\nimport { InMemoryStorageService } from \"./utils/MemoryStorage\";\n\nexport function createAbby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n>(\n  config: AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig>\n) {\n  const testStorage = new InMemoryStorageService();\n  return new Abby(config, testStorage);\n}\n"
  },
  {
    "path": "packages/node/src/koa/index.ts",
    "content": "import type {\n  ABConfig,\n  Abby,\n  AbbyConfig,\n  RemoteConfigValueString,\n} from \"@tryabby/core\";\nimport type { Context, Next } from \"koa\";\nimport { createAbby } from \"../index\";\n\nconst instanceMap = new WeakMap<any, Abby<any, any, any, any, any>>();\n\nexport function createAbbyMiddleWare<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n>(\n  config: AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig>\n) {\n  let abbyInstance = instanceMap.get(config);\n\n  if (!abbyInstance) {\n    abbyInstance = createAbby(config);\n    instanceMap.set(config, abbyInstance);\n  }\n\n  const middleware = async (ctx: Context, next: Next) => {\n    if (!abbyInstance) {\n      throw new Error(\"Abby is undefined\");\n    }\n    await abbyInstance.loadProjectData();\n    if (ctx.headers.cookie) {\n      abbyInstance.setLocalOverrides(ctx.headers.cookie);\n    }\n\n    next();\n  };\n\n  return {\n    middleware,\n    abby: abbyInstance as Abby<\n      FlagName,\n      TestName,\n      Tests,\n      RemoteConfig,\n      RemoteConfigName,\n      any\n    >,\n  };\n}\n"
  },
  {
    "path": "packages/node/src/utils/MemoryStorage.ts",
    "content": "import type { IStorageService } from \"@tryabby/core\";\n\nexport class InMemoryStorageService implements IStorageService {\n  cache: Map<string, string>;\n  constructor() {\n    this.cache = new Map();\n  }\n  get(key: string): string | null {\n    return this.cache.get(key) ?? null;\n  }\n  set(key: string, value: string): void {\n    this.cache.set(key, value);\n  }\n  remove(key: string): void {\n    this.cache.delete(key);\n  }\n}\n"
  },
  {
    "path": "packages/node/tests/express.test.ts",
    "content": "import { ABBY_AB_STORAGE_PREFIX } from \"@tryabby/core\";\nimport express from \"express\";\nimport request from \"supertest\";\nimport { createAbbyMiddleWare } from \"../src/express\";\n\nconst app = express();\n\nconst testVariants = [\"OldFooter\", \"NewFooter\"] as const;\nconst test2Variants = [\n  \"SimonsText\",\n  \"MatthiasText\",\n  \"TomsText\",\n  \"TimsText\",\n] as const;\n\nconst { middleware, abby } = createAbbyMiddleWare({\n  currentEnvironment: \"development\",\n  environments: [],\n  projectId: \"123\",\n  tests: {\n    test: { variants: testVariants },\n    test2: {\n      variants: test2Variants,\n    },\n  },\n  flags: [\"flag1\", \"flag2\"],\n});\n\napp.get(\"/\", middleware, (_req, res) => {\n  const flag1 = abby.getFeatureFlag(\"flag1\");\n  const flag2 = abby.getFeatureFlag(\"flag2\");\n  res.json({\n    flag1,\n    flag2,\n  });\n});\n\napp.get(\"/fail\", (_req, res) => {\n  const flag1 = abby.getFeatureFlag(\"flag1\");\n  const flag2 = abby.getFeatureFlag(\"flag2\");\n  res.json({\n    flag1,\n    flag2,\n  });\n});\n\napp.get(\"/test\", middleware, (_req, res) => {\n  const test = abby.getTestVariant(\"test\");\n  const test2 = abby.getTestVariant(\"test2\");\n  res.json({\n    test,\n    test2,\n  });\n});\n\nit.skip(\"should work with feature flags\", async () => {\n  const res = await request(app).get(\"/\");\n  expect(res.body).toEqual({\n    flag1: true,\n    flag2: false,\n  });\n});\n\nit(\"should work with A/B tests\", async () => {\n  const res = await request(app).get(\"/test\");\n  expect(res.body.test).to.be.oneOf(testVariants);\n  expect(res.body.test2).to.be.oneOf(test2Variants);\n});\n\nit(\"should work with a cookie seed\", async () => {\n  const res = await request(app)\n    .get(\"/test\")\n    .set(\n      \"Cookie\",\n      `${ABBY_AB_STORAGE_PREFIX}${abby.getConfig().projectId}_test=${\n        testVariants[0]\n      };${ABBY_AB_STORAGE_PREFIX}${abby.getConfig().projectId}_test2=${test2Variants[2]}`\n    );\n\n  expect(res.body.test).toEqual(testVariants[0]);\n  expect(res.body.test2).toEqual(test2Variants[2]);\n});\n"
  },
  {
    "path": "packages/node/tests/koa.test.ts",
    "content": "import type { Server } from \"node:http\";\nimport { ABBY_AB_STORAGE_PREFIX } from \"@tryabby/core\";\nimport getPort from \"get-port\";\nimport Koa from \"koa\";\nimport fetch from \"node-fetch\";\nimport { createAbbyMiddleWare } from \"../src/koa\";\n\nconst app = new Koa();\nlet SERVER_URL = \"http://localhost:\";\n\nlet server: Server | undefined = undefined;\n\nconst testVariants = [\"OldFooter\", \"NewFooter\"] as const;\nconst test2Variants = [\n  \"SimonsText\",\n  \"MatthiasText\",\n  \"TomsText\",\n  \"TimsText\",\n] as const;\n\nconst { middleware, abby } = createAbbyMiddleWare({\n  currentEnvironment: \"development\",\n  environments: [],\n  projectId: \"123\",\n  tests: {\n    test: { variants: testVariants },\n    test2: {\n      variants: test2Variants,\n    },\n  },\n  flags: [\"flag1\", \"flag2\"],\n});\n\napp.use(middleware);\n\napp.use((ctx) => {\n  if (ctx.method === \"GET\" && ctx.path === \"/\") {\n    const flag1 = abby.getFeatureFlag(\"flag1\");\n    const flag2 = abby.getFeatureFlag(\"flag2\");\n    ctx.res.setHeader(\"Content-Type\", \"application/json\");\n    ctx.body = JSON.stringify({\n      flag1,\n      flag2,\n    });\n  }\n  if (ctx.method === \"GET\" && ctx.path === \"/test\") {\n    const test = abby.getTestVariant(\"test\");\n    const test2 = abby.getTestVariant(\"test2\");\n    ctx.res.setHeader(\"Content-Type\", \"application/json\");\n    ctx.body = JSON.stringify({\n      test,\n      test2,\n    });\n  }\n});\n\nbeforeAll(async () => {\n  const PORT = await getPort();\n  server = app.listen(PORT);\n  SERVER_URL += PORT;\n});\n\nafterAll(() => {\n  server?.close();\n});\n\nit.skip(\"should work with feature flags\", async () => {\n  const data = await fetch(`${SERVER_URL}`).then((r) => r.json());\n  expect(data).toEqual({\n    flag1: true,\n    flag2: false,\n  });\n});\n\nit(\"should work with A/B tests\", async () => {\n  const data = (await fetch(`${SERVER_URL}/test`).then((r) => r.json())) as {\n    test: string;\n    test2: string;\n  };\n\n  expect(data.test).to.be.oneOf(testVariants);\n  expect(data.test2).to.be.oneOf(test2Variants);\n});\n\nit(\"should work with a cookie seed\", async () => {\n  const data = (await fetch(`${SERVER_URL}/test`, {\n    headers: {\n      cookie: `${ABBY_AB_STORAGE_PREFIX}${abby.getConfig().projectId}_test=${\n        testVariants[0]\n      };${ABBY_AB_STORAGE_PREFIX}${abby.getConfig().projectId}_test2=${test2Variants[2]}`,\n    },\n  }).then((r) => r.json())) as {\n    test: string;\n    test2: string;\n  };\n\n  expect(data.test).toEqual(testVariants[0]);\n  expect(data.test2).toEqual(test2Variants[2]);\n});\n"
  },
  {
    "path": "packages/node/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL, type AbbyDataResponse } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n    {\n      name: \"flag2\",\n      value: false,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"remoteConfig1\",\n      value: \"FooBar\",\n    },\n  ],\n};\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/node/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/node/tests/node.test.ts",
    "content": "import { createAbby } from \"../src/index\";\n\nconst testVariants = [\"OldFooter\", \"NewFooter\"] as const;\nconst test2Variants = [\n  \"SimonsText\",\n  \"MatthiasText\",\n  \"TomsText\",\n  \"TimsText\",\n] as const;\n\nit(\"should work properly\", async () => {\n  const abby = createAbby({\n    environments: [],\n    currentEnvironment: \"development\",\n    projectId: \"123\",\n    tests: {\n      test: { variants: testVariants },\n      test2: {\n        variants: test2Variants,\n      },\n    },\n    flags: [\"flag1\", \"flag2\"],\n  });\n\n  await abby.loadProjectData();\n\n  // expect(abby.getFeatureFlag(\"flag1\")).toBe(true);\n  // expect(abby.getFeatureFlag(\"flag2\")).toBe(false);\n  expect(abby.getTestVariant(\"test\")).to.be.oneOf(testVariants);\n  expect(abby.getTestVariant(\"test2\")).to.be.oneOf(test2Variants);\n});\n"
  },
  {
    "path": "packages/node/tests/setup.ts",
    "content": "import { afterEach } from \"vitest\";\n\nimport fetch from \"node-fetch\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n// Reset any request handlers that we may add during the tests,\n// so they don't affect other tests.\nafterEach(() => server.resetHandlers());\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n"
  },
  {
    "path": "packages/node/tsconfig.json",
    "content": "{\n    \"extends\": \"tsconfig/react-library.json\",\n    \"compilerOptions\": {\n        \"lib\": [\"ESNext\", \"DOM\"],\n        \"types\": [\"vitest/globals\"]\n    }\n}"
  },
  {
    "path": "packages/node/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  sourcemap: true,\n  treeshake: true,\n  format: [\"cjs\", \"esm\"],\n});\n"
  },
  {
    "path": "packages/node/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/react/.gitignore",
    "content": "dist"
  },
  {
    "path": "packages/react/CHANGELOG.md",
    "content": "# @tryabby/react\n\n## 7.0.1\n\n### Patch Changes\n\n- fix build\n- Updated dependencies\n  - @tryabby/core@7.0.1\n\n## 7.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.0\n\n## 6.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@6.0.0\n\n## 5.2.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.4.0\n\n## 5.2.1\n\n### Patch Changes\n\n- Updated dependencies [d05cb9a]\n  - @tryabby/core@5.3.1\n\n## 5.2.0\n\n### Minor Changes\n\n- 31d14b7: add cookie consent options\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/core@5.3.0\n\n## 5.1.0\n\n### Minor Changes\n\n- add helper to retrieve all flags/config variables\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.2.0\n\n## 5.0.6\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.4\n\n## 5.0.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.3\n\n## 5.0.4\n\n### Patch Changes\n\n- add esm packages\n- Updated dependencies\n  - @tryabby/core@5.1.2\n\n## 5.0.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.1\n\n## 5.0.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.0\n\n## 5.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n- Updated dependencies\n  - @tryabby/core@5.0.1\n\n## 5.0.0\n\n### Major Changes\n\n- add remote config\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.0.0\n\n## 4.2.0\n\n### Minor Changes\n\n- add lookup object to useAbby and ab test value function\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.2.0\n\n## 4.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.1.0\n\n## 4.0.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.1\n\n## 4.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.0\n\n## 3.4.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.4.0\n\n## 3.3.1\n\n### Patch Changes\n\n- refactor shard package\n- Updated dependencies\n  - @tryabby/core@3.3.1\n\n## 3.3.0\n\n### Minor Changes\n\n- use new .com domain as abby url\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.3.0\n\n## 3.2.1\n\n### Patch Changes\n\n- unmount devtools on component unmount\n\n## 3.2.0\n\n### Minor Changes\n\n- add option to force display the devtools even in non-dev environments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.2.0\n\n## 3.1.2\n\n### Patch Changes\n\n- improve design\n\n## 3.1.1\n\n### Patch Changes\n\n- dont bundle devtools in production\n\n## 3.1.0\n\n### Minor Changes\n\n- make devtools universal\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.1.0\n\n## 3.0.1\n\n### Patch Changes\n\n- add readme\n\n## 3.0.0\n\n### Major Changes\n\n- add server side flag dev support\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.0.0\n\n## 2.3.3\n\n### Patch Changes\n\n- add getVariants to core\n- Updated dependencies\n  - @tryabby/core@2.1.2\n\n## 2.3.2\n\n### Patch Changes\n\n- add getVariants helper function\n\n## 2.3.1\n\n### Patch Changes\n\n- add reset helper functions\n\n## 2.3.0\n\n### Minor Changes\n\n- add edge/api function helpers and non-react a/b test function\n\n### Patch Changes\n\n- @tryabby/core@2.1.1\n\n## 2.2.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@2.1.1\n\n## 2.2.0\n\n### Minor Changes\n\n- extract DevTools\n\n## 1.12.0\n\n### Minor Changes\n\n- use \\_\\_abby to get featureFlagValues synchronously\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@1.10.0\n\n## 1.11.1\n\n### Patch Changes\n\n- make getFeatureFlagValue async\n- Updated dependencies\n  - @tryabby/core@1.9.1\n\n## 1.11.0\n\n### Minor Changes\n\n- add getFeatureFlagValue function\n\n## 1.10.0\n\n### Minor Changes\n\n- prevent builds from failing when API is down\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@1.9.0\n\n## 1.9.0\n\n### Minor Changes\n\n- disable events on localhost to prevent overflowing analytics\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@1.8.0\n\n## 1.8.0\n\n### Minor Changes\n\n- remove enviroments config options\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@1.7.0\n\n## 1.7.0\n\n### Minor Changes\n\n- improve SSR for feature flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@1.6.0\n\n## 1.6.0\n\n### Minor Changes\n\n- add core package as dep\n\n## 1.5.0\n\n### Minor Changes\n\n- improve types and devtools\n\n## 1.4.1\n\n### Patch Changes\n\n- add devtools\n\n## 1.4.0\n\n### Minor Changes\n\n- use core package\n\n## 1.3.6\n\n### Patch Changes\n\n- fix API calls\n\n## 1.3.5\n\n### Patch Changes\n\n- fix API URL\n\n## 1.3.4\n\n### Patch Changes\n\n- fix types\n\n## 1.3.3\n\n### Patch Changes\n\n- fix types\n\n## 1.3.2\n\n### Patch Changes\n\n- add devOverrides\n\n## 1.3.1\n\n### Patch Changes\n\n- fix base url\n\n## 1.3.0\n\n### Minor Changes\n\n- 6df8a62: add feature flags\n\n### Patch Changes\n\n- fix typings\n"
  },
  {
    "path": "packages/react/README.md",
    "content": "# @tryabby/react\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                             | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                          | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application             | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests             | -                     |\n| flags              | `object` |          | An array containing your defined Feature Flags          | -                     |\n| settings           | `object` |          | An object with additional settings for Abby             | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: { \"test-flag\": \"Boolean\" },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValues`: Allows you to set a general default value for each flag type. The keys of the object represent the types of the flags.\n  The default value is the following:\n\n  ```json\n  {\n    \"Boolean\": false,\n    \"String\": \"\",\n    \"Number\": 0,\n    \"JSON\": {}\n  }\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the flag. This means if your flag is a `String` flag, this needs to be a `string`.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `string`: The name of the test or flag, needs to be one of the defined tests.\n\n##### Return Values\n\n- `variant` : The variant of the test\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Return Values\n\nThe variant of the test.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n#### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n#### Example\n\n```tsx\nimport { getABResetFunction } from \"lib/abby\";\n\nexport default function SomePage() {\n  const onReset = () => {\n    const resetCookie = getABResetFunction(\"SignupButton\");\n    resetCookie();\n    window.reload();\n  };\n\n  return (\n    <div>\n      <h1>Hello World</h1>\n      <button onClick={onReset}>Reset Cookie</button>\n    </div>\n  );\n}\n```\n"
  },
  {
    "path": "packages/react/package.json",
    "content": "{\n  \"name\": \"@tryabby/react\",\n  \"version\": \"7.0.1\",\n  \"description\": \"\",\n  \"main\": \"dist/index.js\",\n  \"files\": [\"dist\"],\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \".\": {\n    \"types\": \"./dist/index.d.ts\",\n    \"import\": \"./dist/index.mjs\",\n    \"require\": \"./dist/index.js\"\n  },\n  \"scripts\": {\n    \"build\": \"tsup src/\",\n    \"dev\": \"pnpm run build --watch\",\n    \"test\": \"vitest\"\n  },\n  \"homepage\": \"https://docs.tryabby.com\",\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/react-hooks\": \"^8.0.1\",\n    \"@tryabby/devtools\": \"workspace:*\",\n    \"@types/js-cookie\": \"^3.0.3\",\n    \"@types/react\": \"^18.0.26\",\n    \"@types/react-dom\": \"^18.0.5\",\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"jsdom\": \"^20.0.3\",\n    \"msw\": \"^0.49.1\",\n    \"node-fetch\": \"^3.3.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"tsconfig\": \"workspace:*\",\n    \"tsup\": \"^6.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"18.2.0\"\n  },\n  \"dependencies\": {\n    \"@tryabby/core\": \"workspace:*\",\n    \"js-cookie\": \"^3.0.1\"\n  }\n}\n"
  },
  {
    "path": "packages/react/src/StorageService.ts",
    "content": "import {\n  type IStorageService,\n  type StorageServiceOptions,\n  getABStorageKey,\n  getFFStorageKey,\n  getRCStorageKey,\n} from \"@tryabby/core\";\nimport Cookie from \"js-cookie\";\n\nconst DEFAULT_COOKIE_AGE = 365;\n\nclass ABStorageService implements IStorageService {\n  get(projectId: string, testName: string): string | null {\n    const retrievedValue = Cookie.get(getABStorageKey(projectId, testName));\n    if (!retrievedValue) return null;\n\n    return retrievedValue;\n  }\n\n  set(\n    projectId: string,\n    testName: string,\n    value: string,\n    options?: StorageServiceOptions\n  ): void {\n    Cookie.set(getABStorageKey(projectId, testName), value, {\n      expires: options?.expiresInDays\n        ? options.expiresInDays\n        : DEFAULT_COOKIE_AGE,\n    });\n  }\n\n  remove(projectId: string, testName: string): void {\n    Cookie.remove(getABStorageKey(projectId, testName));\n  }\n}\n\nclass FFStorageService implements IStorageService {\n  get(projectId: string, flagName: string): string | null {\n    const retrievedValue = Cookie.get(getFFStorageKey(projectId, flagName));\n    if (!retrievedValue) return null;\n\n    return retrievedValue;\n  }\n\n  set(projectId: string, flagName: string, value: string): void {\n    Cookie.set(getFFStorageKey(projectId, flagName), value, {\n      expires: DEFAULT_COOKIE_AGE,\n    });\n  }\n\n  remove(projectId: string, flagName: string): void {\n    Cookie.remove(getFFStorageKey(projectId, flagName));\n  }\n}\n\nclass RCStorageService implements IStorageService {\n  get(projectId: string, key: string): string | null {\n    const retrievedValue = Cookie.get(getRCStorageKey(projectId, key));\n    return retrievedValue ?? null;\n  }\n\n  set(projectId: string, key: string, value: string): void {\n    Cookie.set(getRCStorageKey(projectId, key), value, {\n      expires: DEFAULT_COOKIE_AGE,\n    });\n  }\n\n  remove(projectId: string, key: string): void {\n    Cookie.remove(getRCStorageKey(projectId, key));\n  }\n}\n\nexport const TestStorageService = new ABStorageService();\nexport const FlagStorageService = new FFStorageService();\nexport const RemoteConfigStorageService = new RCStorageService();\n"
  },
  {
    "path": "packages/react/src/context.tsx",
    "content": "import {\n  type ABConfig,\n  Abby,\n  type AbbyConfig,\n  type RemoteConfigValueString,\n  type RemoteConfigValueStringToType,\n  type ValidatorType,\n} from \"@tryabby/core\";\nimport { HttpService } from \"@tryabby/core\";\nimport { type AbbyDataResponse, AbbyEventType } from \"@tryabby/core\";\nimport type { Infer } from \"@tryabby/core/validation\";\nimport type { AbbyDevtoolProps, DevtoolsFactory } from \"@tryabby/devtools\";\nimport React, {\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  type PropsWithChildren,\n} from \"react\";\nimport {\n  FlagStorageService,\n  RemoteConfigStorageService,\n  TestStorageService,\n} from \"./StorageService\";\n\nexport type withDevtoolsFunction = (\n  factory: DevtoolsFactory,\n  props: Omit<AbbyDevtoolProps, \"abby\"> & {\n    dangerouslyForceShow?: boolean;\n  }\n) => () => JSX.Element | null;\n\nexport type ABTestReturnValue<Lookup, TestVariant> = Lookup extends undefined\n  ? TestVariant\n  : TestVariant extends keyof Lookup\n    ? Lookup[TestVariant]\n    : never;\n\nexport function createAbby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n  const User extends Record<string, ValidatorType> = Record<\n    string,\n    ValidatorType\n  >,\n>(\n  abbyConfig: AbbyConfig<\n    FlagName,\n    Tests,\n    string[],\n    RemoteConfigName,\n    RemoteConfig,\n    User\n  >\n) {\n  const abby = new Abby<\n    FlagName,\n    TestName,\n    Tests,\n    RemoteConfig,\n    RemoteConfigName,\n    string[],\n    User\n  >(\n    abbyConfig,\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return TestStorageService.get(abbyConfig.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\" || config.cookies?.disableByDefault)\n          return;\n        TestStorageService.set(abbyConfig.projectId, key, value);\n      },\n    },\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return FlagStorageService.get(abbyConfig.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\") return;\n        FlagStorageService.set(abbyConfig.projectId, key, value);\n      },\n    },\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return RemoteConfigStorageService.get(abbyConfig.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\") return;\n        RemoteConfigStorageService.set(abbyConfig.projectId, key, value);\n      },\n    }\n  );\n\n  type AbbyProjectData = ReturnType<typeof abby.getProjectData>;\n\n  const AbbyContext = React.createContext<AbbyProjectData | null>(null);\n\n  const useAbbyData = () => {\n    const data = React.useContext(AbbyContext);\n\n    if (!data) {\n      throw new Error(\n        \"useAbbyData must be used within an AbbyProvider. Wrap a parent component in <AbbyProvider> to fix this error.\"\n      );\n    }\n\n    return data;\n  };\n\n  // we need to return the config as a const so that the types are narrowed\n  const config = abbyConfig;\n\n  const useAbby = <\n    K extends keyof Tests,\n    TestVariant extends Tests[K][\"variants\"][number],\n    LookupValue,\n    const Lookup extends\n      | Record<TestVariant, LookupValue>\n      | undefined = undefined,\n  >(\n    name: K,\n    lookupObject?: Lookup\n  ): {\n    variant: ABTestReturnValue<Lookup, TestVariant>;\n    onAct: () => void;\n  } => {\n    const { tests } = useAbbyData();\n\n    // always render an empty string on the first render to avoid SSR mismatches\n    // because the server doesn't know which variant to render\n    const [selectedVariant, setSelectedVariant] = useState(\"\");\n\n    // listen to changes in for the current variant\n    // biome-ignore lint/correctness/useExhaustiveDependencies:>\n    useEffect(() => {\n      const newVariant = tests[name as unknown as TestName]?.selectedVariant;\n\n      // should never be undefined after mount\n      if (newVariant !== undefined) {\n        setSelectedVariant(newVariant);\n      }\n    }, [tests[name as unknown as TestName]?.selectedVariant]);\n\n    // lazily get the tests\n    useEffect(() => {\n      setSelectedVariant(\n        abby.getProjectData().tests[name as unknown as TestName]\n          ?.selectedVariant ?? \"\"\n      );\n    }, [name]);\n\n    useEffect(() => {\n      if (!name || !selectedVariant) return;\n\n      HttpService.sendData({\n        url: config.apiUrl,\n        type: AbbyEventType.PING,\n        data: {\n          projectId: config.projectId,\n          selectedVariant,\n          testName: name as string,\n        },\n      });\n    }, [name, selectedVariant]);\n\n    const onAct = useCallback(() => {\n      if (!selectedVariant) return;\n\n      HttpService.sendData({\n        url: config.apiUrl,\n        type: AbbyEventType.ACT,\n        data: {\n          projectId: config.projectId,\n          selectedVariant,\n          testName: name as string,\n        },\n      });\n    }, [name, selectedVariant]);\n\n    return {\n      /**\n       * This function can be called to indicate that something that\n       * uses the selected variant has been rendered.\n       * It will automatically send the selected variant to the server.\n       */\n      onAct: onAct,\n      variant: lookupObject\n        ? lookupObject[selectedVariant as TestVariant]\n        : // Typescript fails here. If we cast selectedVariant to TestVariant\n          // it still assumes that it is a string. So we cast it to any instead\n          (selectedVariant as any),\n    };\n  };\n\n  const useFeatureFlag = (name: FlagName) => {\n    const data = useAbbyData();\n    return data.flags[name].value;\n  };\n\n  /**\n   * Retruns an Array of all flags with their name and value\n   */\n  const useFeatureFlags = () => {\n    const data = useAbbyData();\n    return (Object.keys(data.flags) as Array<FlagName>).map((flagName) => ({\n      name: flagName,\n      value: data.flags[flagName].value,\n    }));\n  };\n\n  /**\n   * Retruns an Array of all rmeote config variables with their name and value\n   */\n  const useRemoteConfigVariables = () => {\n    const data = useAbbyData();\n    return (Object.keys(data.remoteConfig) as Array<RemoteConfigName>).map(\n      (configName) => ({\n        name: configName,\n        value: data.remoteConfig[configName].value,\n      })\n    ) as Array<{\n      name: RemoteConfigName;\n      value: RemoteConfigValueStringToType<RemoteConfig[RemoteConfigName]>;\n    }>;\n  };\n\n  const AbbyProvider = ({\n    children,\n    initialData,\n  }: PropsWithChildren<{ initialData?: AbbyDataResponse }>) => {\n    const isMountedRef = useRef(false);\n    const [data, setData] = useState<AbbyProjectData | null>(() => {\n      if (initialData) {\n        return abby.init(initialData);\n      }\n      return abby.getProjectData();\n    });\n\n    // load the project data if it hasn't been passed in\n    // biome-ignore lint/correctness/useExhaustiveDependencies:>\n    useEffect(() => {\n      if (initialData || isMountedRef.current) return;\n      isMountedRef.current = true;\n\n      // seed the data with the initial data\n      abby.loadProjectData().then((data) => {\n        if (!data) return;\n        setData(data);\n      });\n    }, []);\n\n    // subscribe to changes in the project data\n    useEffect(() => {\n      const unsubscribe = abby.subscribe((data) => {\n        setData(data);\n      });\n      return unsubscribe;\n    }, []);\n\n    return <AbbyContext.Provider value={data}>{children}</AbbyContext.Provider>;\n  };\n\n  const getFeatureFlagValue = (name: FlagName) => {\n    return abby.getFeatureFlag(name);\n  };\n\n  const useRemoteConfig = <\n    T extends RemoteConfigName,\n    Config extends RemoteConfig[T],\n  >(\n    remoteConfigName: T\n  ): RemoteConfigValueStringToType<Config> => {\n    const abby = useAbbyData();\n    return abby.remoteConfig[remoteConfigName]\n      .value as RemoteConfigValueStringToType<Config>;\n  };\n\n  const getRemoteConfig = <\n    T extends RemoteConfigName,\n    Config extends RemoteConfig[T],\n  >(\n    remoteConfigName: T\n  ): RemoteConfigValueStringToType<Config> => {\n    return abby.getRemoteConfig(remoteConfigName);\n  };\n\n  const getABTestValue = <\n    TestName extends keyof Tests,\n    TestVariant extends Tests[TestName][\"variants\"][number],\n    LookupValue,\n    const Lookup extends\n      | Record<TestVariant, LookupValue>\n      | undefined = undefined,\n  >(\n    testName: TestName,\n    lookupObject?: Lookup\n  ): ABTestReturnValue<Lookup, TestVariant> => {\n    const variant = abby.getTestVariant(testName);\n    // Typescript looses its typing here, so we cast as any in favor of having\n    // better type inference for the user\n    if (lookupObject === undefined) {\n      return variant as any;\n    }\n\n    return lookupObject[variant as TestVariant] as any;\n  };\n\n  const withDevtools: withDevtoolsFunction = (factory, props) => {\n    // hacky way to make sure SSR and Edge functions work\n    return () => {\n      const initedRef = useRef(false);\n\n      // biome-ignore lint/correctness/useExhaustiveDependencies:>\n      useEffect(() => {\n        if (initedRef.current) {\n          return;\n        }\n\n        if (\n          !props?.dangerouslyForceShow &&\n          process.env.NODE_ENV !== \"development\"\n        ) {\n          return;\n        }\n\n        initedRef.current = true;\n\n        const destroy = factory.create({ ...props, abby });\n\n        return () => {\n          initedRef.current = false;\n          destroy();\n        };\n      }, []);\n      return null;\n    };\n  };\n\n  /**\n   * Simple helper function create a function that resets an AB test\n   * @param name the name of the test\n   * @returns A function that can be called to reset the test\n   */\n  const getABResetFunction = <T extends keyof Tests>(name: T) => {\n    return () => {\n      TestStorageService.remove(config.projectId, name as string);\n    };\n  };\n\n  /**\n   * Simple helper function to get a list of all variants for a given test\n   * @param name the name of the test\n   * @returns an array of all variants\n   */\n  const getVariants = <T extends keyof Tests>(name: T) => {\n    return abby.getVariants(name);\n  };\n\n  const updateUserProperties = (\n    user: Partial<{\n      -readonly [K in keyof User]: Infer<User[K]>;\n    }>\n  ) => {\n    abby.updateUserProperties(user);\n  };\n\n  return {\n    useAbby,\n    AbbyProvider,\n    useFeatureFlag,\n    getFeatureFlagValue,\n    useRemoteConfig,\n    getRemoteConfig,\n    getABTestValue,\n    __abby__: abby,\n    withDevtools,\n    getABResetFunction,\n    getVariants,\n    useFeatureFlags,\n    useRemoteConfigVariables,\n    updateUserProperties,\n  };\n}\n"
  },
  {
    "path": "packages/react/src/helpers.ts",
    "content": "// taken from https://stackoverflow.com/questions/52489261/typescript-can-i-define-an-n-length-tuple-type\nexport type Tuple<T, N extends number> = N extends N\n  ? number extends N\n    ? T[]\n    : _TupleOf<T, N, []>\n  : never;\ntype _TupleOf<T, N extends number, R extends unknown[]> = R[\"length\"] extends N\n  ? R\n  : _TupleOf<T, N, [T, ...R]>;\n\n// taken from: https://stackoverflow.com/questions/18230217/javascript-generate-a-random-number-within-a-range-using-crypto-getrandomvalues\n// crypto.getRandomValues() is better than Math.random() because it's cryptographically secure\n// fallback to Math.random() if crypto.getRandomValues() is not available\nexport function getRandomDecimal() {\n  if (typeof window !== \"undefined\" && window.crypto) {\n    const randomBuffer = new Uint32Array(1);\n\n    window.crypto.getRandomValues(randomBuffer);\n\n    return randomBuffer[0] / (0xffffffff + 1);\n  }\n  return Math.random();\n}\n\nfunction weightedRand2<T extends Record<string, number>>(spec: T): keyof T {\n  let i: keyof T;\n  let sum = 0;\n  const r = getRandomDecimal();\n\n  for (i in spec) {\n    sum += spec[i];\n    if (r <= sum) break;\n  }\n  // biome-ignore lint/style/noNonNullAssertion:>\n  return i!;\n}\n\nexport function getWeightedRandomVariant<\n  Variants extends ReadonlyArray<string>,\n>(\n  variants: Variants,\n  weights?: Tuple<number, Variants[\"length\"]>\n): Variants[number] {\n  const validatedWeights = validateWeights(variants, weights);\n  return weightedRand2(\n    variants.reduce(\n      (acc, variant, index) => {\n        acc[variant as Variants[number]] = validatedWeights[index];\n        return acc;\n      },\n      {} as Record<Variants[number], number>\n    )\n  );\n}\n\nconst getDefaultWeights = <Variants extends ReadonlyArray<string>>(\n  variants: Variants\n) => {\n  return Array.from<number>({ length: variants.length }).fill(\n    1 / variants.length\n  );\n};\n\nexport function validateWeights<\n  Variants extends ReadonlyArray<string>,\n  Weights extends Tuple<number, Variants[\"length\"]>,\n>(variants: Variants, weights?: Weights): Weights {\n  const sum = weights?.reduce((acc, weight) => acc + weight, 0);\n  return weights != null && sum === 1 && variants.length === weights.length\n    ? weights\n    : (getDefaultWeights(variants) as Weights);\n}\n"
  },
  {
    "path": "packages/react/src/index.ts",
    "content": "export {\n  createAbby,\n  type withDevtoolsFunction,\n  type ABTestReturnValue,\n} from \"./context\";\nexport { type ABConfig, type AbbyConfig, defineConfig } from \"@tryabby/core\";\n"
  },
  {
    "path": "packages/react/tests/helpers.test.ts",
    "content": "import { getRandomDecimal, getWeightedRandomVariant } from \"../src/helpers\";\n\ndescribe(\"getWeightedRandomVariant\", () => {\n  it(\"should only return valid values\", () => {\n    const variants = [\"A\", \"B\", \"C\"] as const;\n\n    const variant = getWeightedRandomVariant(variants);\n\n    expect(variant).toBeDefined();\n  });\n\n  it(\"should work with weights\", () => {\n    const variants = [\"A\", \"B\", \"C\"] as const;\n\n    for (let i = 0; i < 100; i++) {\n      const variant = getWeightedRandomVariant(variants, [0, 0, 1]);\n\n      expect(variant).toBe<typeof variant>(\"C\");\n    }\n\n    for (let i = 0; i < 100; i++) {\n      const variant = getWeightedRandomVariant(variants, [0.5, 0.5, 0]);\n\n      expect([\"A\", \"B\"].includes(variant)).toBeTruthy();\n      expect(variant).not.toBe(\"C\");\n    }\n  });\n});\n\ndescribe(\"getRandomDecimal\", () => {\n  it(\"should return a number between 0 and 1\", () => {\n    for (let i = 0; i < 100; i++) {\n      const decimal = getRandomDecimal();\n      expect(decimal).toBeGreaterThanOrEqual(0);\n      expect(decimal).toBeLessThanOrEqual(1);\n    }\n  });\n});\n"
  },
  {
    "path": "packages/react/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL, type AbbyDataResponse } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n    {\n      name: \"flag2\",\n      value: false,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"remoteConfig1\",\n      value: \"FooBar\",\n    },\n  ],\n};\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/react/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/react/tests/setup.ts",
    "content": "/// @ts-ignore it doesn't have types\nimport matchers from \"@testing-library/jest-dom/matchers\";\nimport { cleanup } from \"@testing-library/react\";\nimport fetch from \"node-fetch\";\nimport { afterEach, expect } from \"vitest\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n\n// extends Vitest's expect method with methods from react-testing-library\nexpect.extend(matchers);\n\n// runs a cleanup after each test case (e.g. clearing jsdom)\nafterEach(() => {\n  // Reset any request handlers that we may add during the tests,\n  // so they don't affect other tests.\n  server.resetHandlers();\n  cleanup();\n});\n"
  },
  {
    "path": "packages/react/tests/ssr.test.tsx",
    "content": "import { renderToString } from \"react-dom/server\";\nimport { createAbby } from \"../src\";\n\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"useAbby\", () => {\n  it(\"doesn't render a variant on the server\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        showFooter: {\n          variants: [\"current\", \"new\"],\n        },\n      },\n    });\n\n    const ComponentWithFF = () => {\n      const { variant } = useAbby(\"showFooter\");\n      return (\n        <>\n          {\n            /* @ts-ignore this is just the types for SSR */\n            variant === \"\" && <span>SSR!</span>\n          }\n          {variant === \"current\" && <span data-testid=\"current\">Secret</span>}\n          {variant === \"new\" && <span data-testid=\"new\">Very Secret</span>}\n        </>\n      );\n    };\n\n    const serverSideDOM = renderToString(\n      <AbbyProvider\n        initialData={{\n          flags: [],\n          tests: [\n            {\n              name: \"showFooter\",\n              weights: [0.5, 0.5],\n            },\n          ],\n          remoteConfig: [],\n        }}\n      >\n        <ComponentWithFF />\n      </AbbyProvider>\n    );\n\n    expect(serverSideDOM).toContain(\"SSR!\");\n    expect(serverSideDOM).not.toContain(\"Secret\");\n    expect(serverSideDOM).not.toContain(\"Very Secret\");\n  });\n});\n\ndescribe(\"useFeatureFlag\", () => {\n  it(\"renders the correct feature flag on the server\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      flags: [\"test\", \"test2\"],\n    });\n\n    const ComponentWithFF = () => {\n      const test = useFeatureFlag(\"test\");\n      const test2 = useFeatureFlag(\"test2\");\n\n      return (\n        <>\n          {test && <span data-testid=\"test\">Secret</span>}\n          {test2 && <span data-testid=\"test2\">SUPER SECRET</span>}\n        </>\n      );\n    };\n\n    const serverSideDOM = renderToString(\n      <AbbyProvider\n        initialData={{\n          flags: [\n            {\n              value: true,\n              name: \"test\",\n            },\n            {\n              value: false,\n              name: \"test2\",\n            },\n          ],\n          tests: [],\n          remoteConfig: [],\n        }}\n      >\n        <ComponentWithFF />\n      </AbbyProvider>\n    );\n\n    expect(serverSideDOM).toContain(\"Secret\");\n    expect(serverSideDOM).not.toContain(\"SUPER SECRET\");\n  });\n});\n\ndescribe(\"getRemoteConfig\", () => {\n  it(\"renders the correct remoteConfig value on the server\", () => {\n    const { AbbyProvider, useRemoteConfig } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      remoteConfig: { remoteConfig1: \"String\" },\n    });\n\n    const ComponentWithRC = () => {\n      const remoteConfig1 = useRemoteConfig(\"remoteConfig1\");\n\n      return (\n        <>\n          <span data-testid=\"test\">{remoteConfig1}</span>\n        </>\n      );\n    };\n\n    const serverSideDOM = renderToString(\n      <AbbyProvider\n        initialData={{\n          flags: [\n            {\n              value: true,\n              name: \"test\",\n            },\n            {\n              value: false,\n              name: \"test2\",\n            },\n          ],\n          tests: [],\n          remoteConfig: [{ name: \"remoteConfig1\", value: \"FooBar\" }],\n        }}\n      >\n        <ComponentWithRC />\n      </AbbyProvider>\n    );\n\n    expect(serverSideDOM).toContain(\"FooBar\");\n  });\n});\n"
  },
  {
    "path": "packages/react/tests/types.test.tsx",
    "content": "import { renderHook } from \"@testing-library/react\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\n\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct types\", () => {\n    const test2Variants = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ] as const;\n\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"ONLY_ONE_VARIANT\"] },\n        test2: {\n          variants: test2Variants,\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: test1Result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    assertType<\"ONLY_ONE_VARIANT\">(test1Result.current.variant);\n\n    expect(test1Result.current.variant).toBeDefined();\n\n    const { result: test2Result } = renderHook(() => useAbby(\"test2\"), {\n      wrapper,\n    });\n\n    assertType<(typeof test2Variants)[number]>(test2Result.current.variant);\n\n    expect(test2Result.current.variant).toBeDefined();\n  });\n});\n\ndescribe(\"useFeatureFlag\", () => {\n  it(\"returns the correct types\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      flags: [\"test\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: testFlagResult } = renderHook(\n      () => useFeatureFlag(\"test\"),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(testFlagResult.current).toEqualTypeOf<boolean>();\n    expectTypeOf(useFeatureFlag).parameter(0).toEqualTypeOf<\"test\">();\n  });\n\n  // TODO: the types don't work for this yet\n  it.skip(\"has the correct type for devOverrides\", () => {\n    createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"test\",\n      flags: [\"test\"],\n      settings: {\n        flags: {\n          devOverrides: {\n            test: true,\n          },\n        },\n      },\n    });\n  });\n\n  describe(\"getVariants\", () => {\n    it(\"has the correct types\", () => {\n      const { getVariants } = createAbby({\n        environments: [],\n        projectId: \"123\",\n        currentEnvironment: \"test\",\n        tests: {\n          test: {\n            variants: [\"ONLY_ONE_VARIANT\"],\n          },\n        },\n        flags: [\"test\"],\n        settings: {\n          flags: {\n            devOverrides: {\n              test: true,\n            },\n          },\n        },\n      });\n      expectTypeOf(getVariants(\"test\")).toEqualTypeOf<\n        readonly [\"ONLY_ONE_VARIANT\"]\n      >();\n    });\n  });\n});\n\ndescribe(\"useRemoteConfig\", () => {\n  it(\"uses correct typings\", () => {\n    const { AbbyProvider, useRemoteConfig } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      remoteConfig: {\n        stringRc: \"String\",\n        numberRc: \"Number\",\n        jsonRc: \"JSON\",\n      },\n    });\n\n    expectTypeOf(useRemoteConfig)\n      .parameter(0)\n      .toEqualTypeOf<\"stringRc\" | \"numberRc\" | \"jsonRc\">();\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n    const { result: stringRcResult } = renderHook(\n      () => useRemoteConfig(\"stringRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: numberRcResult } = renderHook(\n      () => useRemoteConfig(\"numberRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: jsonRcResult } = renderHook(\n      () => useRemoteConfig(\"jsonRc\"),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(stringRcResult.current).toEqualTypeOf<string>();\n    expectTypeOf(numberRcResult.current).toEqualTypeOf<number>();\n    expectTypeOf(jsonRcResult.current).toEqualTypeOf<Record<string, unknown>>();\n  });\n});\n"
  },
  {
    "path": "packages/react/tests/useAbby.test.tsx",
    "content": "import { act, renderHook, waitFor } from \"@testing-library/react\";\nimport { AbbyEventType } from \"@tryabby/core\";\nimport { HttpService } from \"@tryabby/core\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\nimport { TestStorageService } from \"../src/StorageService\";\n\nconst OLD_ENV = process.env;\n\nbeforeEach(() => {\n  document.cookie = \"\";\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct amount of options\", () => {\n    const spy = vi.spyOn(TestStorageService, \"set\");\n\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    expect(spy).toHaveBeenCalled();\n    expect(result.current.variant).toBeDefined();\n  });\n\n  it(\"should use the persistedValue\", () => {\n    const persistedValue = \"SimonsText\";\n    const variants = [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"];\n\n    const getSpy = vi.spyOn(TestStorageService, \"get\");\n    const setSpy = vi.spyOn(TestStorageService, \"set\");\n\n    getSpy.mockReturnValue(persistedValue);\n\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    // the stored value should not be overwritten\n    expect(setSpy).not.toHaveBeenCalled();\n\n    // value set in localstorage\n    expect(result.current.variant).toEqual(persistedValue);\n  });\n\n  it(\"looks up the selected variant in the lookup object\", () => {\n    const persistedValue = \"SimonsText\";\n    const variants = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ] as const;\n\n    const getSpy = vi.spyOn(TestStorageService, \"get\");\n    getSpy.mockReturnValue(persistedValue);\n\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n    const { result } = renderHook(\n      () =>\n        useAbby(\"test\", {\n          SimonsText: \"a\",\n          MatthiasText: \"b\",\n          TomsText: \"c\",\n          TimsText: \"d\",\n        }),\n      {\n        wrapper,\n      }\n    );\n\n    // value set in localstorage\n    expect(result.current.variant).toEqual(\"a\");\n  });\n\n  it(\"should ping the current info on mount\", () => {\n    const spy = vi.spyOn(HttpService, \"sendData\");\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"A\", \"B\", \"C\"] },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    act(() => {\n      expect(spy).toHaveBeenCalledWith(\n        expect.objectContaining({ type: AbbyEventType.PING })\n      );\n    });\n  });\n\n  it(\"should notify the server with onAct\", () => {\n    const spy = vi.spyOn(HttpService, \"sendData\");\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"A\", \"B\", \"C\"] },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    act(() => {\n      result.current.onAct();\n    });\n\n    // first call is tested above\n    expect(spy).toHaveBeenNthCalledWith(\n      2,\n      expect.objectContaining({ type: AbbyEventType.ACT })\n    );\n  });\n\n  it(\"should return the correct feature flags\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      flags: [\"flag1\", \"flag2\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: flag1 } = renderHook(() => useFeatureFlag(\"flag1\"), {\n      wrapper,\n    });\n\n    // wait for the flag to be fetched\n    waitFor(() => expect(flag1.current).toEqual(true));\n\n    const { result: flag2 } = renderHook(() => useFeatureFlag(\"flag2\"), {\n      wrapper,\n    });\n\n    expect(flag2.current).toEqual(false);\n\n    // wait for the flag to be fetched\n    waitFor(() => expect(flag2.current).toEqual(false));\n  });\n\n  it(\"should respect the default values for feature flags\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\", \"flag2\"],\n      currentEnvironment: \"a\",\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: flag1 } = renderHook(() => useFeatureFlag(\"flag1\"), {\n      wrapper,\n    });\n    expect(flag1.current).toEqual(false);\n\n    // wait for the flag to be fetched\n    waitFor(() => expect(flag1.current).toEqual(false));\n  });\n\n  it(\"uses the devOverrides\", () => {\n    process.env.NODE_ENV = \"development\";\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\", \"flag2\"],\n      currentEnvironment: \"a\",\n      settings: {\n        flags: {\n          devOverrides: {\n            flag1: false,\n            flag2: true,\n          },\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: flag1 } = renderHook(() => useFeatureFlag(\"flag1\"), {\n      wrapper,\n    });\n\n    expect(flag1.current).toEqual(false);\n\n    // will stay false and won't be overwritten by a fetch\n    waitFor(() => expect(flag1.current).toEqual(false));\n\n    const { result: flag2 } = renderHook(() => useFeatureFlag(\"flag2\"), {\n      wrapper,\n    });\n\n    expect(flag2.current).toEqual(true);\n\n    // will stay true and won't be overwritten by a fetch\n    waitFor(() => expect(flag2.current).toEqual(true));\n  });\n\n  it(\"gets the stored feature flag value using a function properly\", () => {\n    const { getFeatureFlagValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\", \"flag2\"],\n      currentEnvironment: \"a\",\n    });\n\n    // await server fetch\n    waitFor(() => expect(getFeatureFlagValue(\"flag1\")).toEqual(true));\n    expect(getFeatureFlagValue(\"flag2\")).toEqual(false);\n  });\n\n  it(\"returns the correct possible variant values\", () => {\n    const { getVariants } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n    expect(getVariants(\"test\")).toEqual([\"A\", \"B\", \"C\"]);\n  });\n\n  it(\"uses the lookup object when retrieving a variant\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const activeVariant = getABTestValue(\"test\");\n    const lookupObject = {\n      A: 1,\n      B: 2,\n      C: 3,\n    };\n\n    expect(getABTestValue(\"test\", lookupObject)).toEqual(\n      lookupObject[activeVariant]\n    );\n  });\n\n  it(\"produces proper types with a lookup objects\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const activeVariant = getABTestValue(\"test\", {\n      A: \"Hello\",\n      B: \"Bonjour\",\n      C: \"Hola\",\n    });\n\n    expectTypeOf(activeVariant).toEqualTypeOf<\"Hello\" | \"Bonjour\" | \"Hola\">();\n  });\n\n  it(\"produces proper types with a a lookup object in the hook\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(\n      () =>\n        useAbby(\"test\", {\n          A: \"Hello\",\n          B: \"Bonjour\",\n          C: \"Hola\",\n        }),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(result.current.variant).toEqualTypeOf<\n      \"Hello\" | \"Bonjour\" | \"Hola\"\n    >();\n  });\n\n  it(\"returns correct remoteConfigValue\", () => {\n    const { useRemoteConfig } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      currentEnvironment: \"a\",\n    });\n\n    // await server fetch\n    waitFor(() => expect(useRemoteConfig(\"remoteConfig1\")).toEqual(\"FooBar\"));\n  });\n\n  it(\"uses defaultValues when remoteConfig is not set\", () => {\n    const { useRemoteConfig } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      remoteConfig: {\n        unsetRemoteConfig: \"String\",\n      },\n      settings: {\n        remoteConfig: {\n          defaultValues: {\n            String: \"defaultValue\",\n          },\n        },\n      },\n      currentEnvironment: \"a\",\n    });\n\n    // await server fetch\n    waitFor(() =>\n      expect(useRemoteConfig(\"unsetRemoteConfig\")).toEqual(\"defaultValue\")\n    );\n  });\n\n  it(\"uses devOverride for remoteConfig\", () => {\n    const { useRemoteConfig } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n      settings: {\n        remoteConfig: {\n          devOverrides: {\n            remoteConfig1: \"overwrittenValue\",\n          },\n        },\n      },\n      currentEnvironment: \"a\",\n    });\n\n    // await server fetch\n    waitFor(() =>\n      expect(useRemoteConfig(\"remoteConfig1\")).toEqual(\"overwrittenValue\")\n    );\n  });\n});\n\nit(\"has the correct types\", () => {\n  const { AbbyProvider, useAbby, useFeatureFlag } = createAbby({\n    environments: [\"\"],\n    currentEnvironment: \"\",\n    projectId: \"123\",\n    tests: {\n      test: { variants: [\"OldFooter\", \"NewFooter\"] },\n      test2: {\n        variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n      },\n    },\n    flags: [\"flag1\"],\n  });\n\n  const wrapper = ({ children }: PropsWithChildren) => (\n    <AbbyProvider>{children}</AbbyProvider>\n  );\n\n  expectTypeOf(useAbby).parameter(0).toEqualTypeOf<\"test\" | \"test2\">();\n\n  const { result } = renderHook(() => useAbby(\"test\"), {\n    wrapper,\n  });\n\n  expectTypeOf(result.current.variant).toEqualTypeOf<\n    \"OldFooter\" | \"NewFooter\"\n  >();\n\n  expectTypeOf(useFeatureFlag).parameters.toEqualTypeOf<[\"flag1\"]>();\n\n  const { result: ffResult } = renderHook(() => useFeatureFlag(\"flag1\"), {\n    wrapper,\n  });\n\n  expectTypeOf(ffResult.current).toEqualTypeOf<boolean>();\n});\n\ndescribe(\"useFeatureFlags()\", () => {\n  it(\"returns the correct list of feature flags\", () => {\n    const { AbbyProvider, useFeatureFlags } = createAbby({\n      environments: [],\n      currentEnvironment: \"test\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n      flags: [\"flag1\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n    expectTypeOf(useFeatureFlags).parameter(0).toEqualTypeOf<undefined>();\n\n    const { result } = renderHook(() => useFeatureFlags(), {\n      wrapper,\n    });\n\n    expectTypeOf(result.current).toEqualTypeOf<\n      Array<{\n        name: \"flag1\";\n        value: boolean;\n      }>\n    >();\n\n    expect(result.current).toHaveLength(1);\n    // wait for the fetch + render to go through\n    waitFor(() =>\n      expect(result.current.at(0)).toEqual({\n        name: \"flag1\",\n        value: true,\n      })\n    );\n  });\n});\ndescribe(\"useRemoteConfigVariables()\", () => {\n  it(\"returns the correct list of remote config variables\", () => {\n    const { AbbyProvider, useRemoteConfigVariables } = createAbby({\n      environments: [],\n      currentEnvironment: \"test\",\n      projectId: \"123\",\n      remoteConfig: {\n        remoteConfig1: \"String\",\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n    expectTypeOf(useRemoteConfigVariables)\n      .parameter(0)\n      .toEqualTypeOf<undefined>();\n\n    const { result } = renderHook(() => useRemoteConfigVariables(), {\n      wrapper,\n    });\n\n    expectTypeOf(result.current).toEqualTypeOf<\n      Array<{\n        name: \"remoteConfig1\";\n        value: string;\n      }>\n    >();\n\n    expect(result.current).toHaveLength(1);\n    // wait for the fetch + render to go through\n\n    expect(result.current.at(0)).toEqual({\n      name: \"remoteConfig1\",\n      value: expect.any(String),\n    });\n  });\n});\n"
  },
  {
    "path": "packages/react/tsconfig.json",
    "content": "{\n    \"extends\": \"tsconfig/react-library.json\",\n    \"compilerOptions\": {\n        \"lib\": [\"ESNext\", \"DOM\"],\n        \"types\": [\"vitest/globals\"]\n    }\n}"
  },
  {
    "path": "packages/react/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  // we want to bundle the shared package because it's not published to npm\n  // it's hacky :)\n  noExternal: [\"shared/src/types\"],\n  clean: true,\n  format: [\"cjs\", \"esm\"],\n  sourcemap: true,\n  treeshake: true,\n});\n"
  },
  {
    "path": "packages/react/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [react()],\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/remix/.gitignore",
    "content": "dist"
  },
  {
    "path": "packages/remix/CHANGELOG.md",
    "content": "# @tryabby/next\n\n## 3.0.1\n\n### Patch Changes\n\n- fix build\n- Updated dependencies\n  - @tryabby/react@7.0.1\n\n## 3.0.0\n\n### Major Changes\n\n- add rules and user segments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@7.0.0\n\n## 2.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@6.0.0\n\n## 1.0.4\n\n### Patch Changes\n\n- @tryabby/react@5.2.2\n\n## 1.0.3\n\n### Patch Changes\n\n- @tryabby/react@5.2.1\n\n## 1.0.2\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/react@5.2.0\n\n## 1.0.1\n\n### Patch Changes\n\n- create remix package\n\n## 5.1.0\n\n### Minor Changes\n\n- add helper to retrieve all flags/config variables\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@5.1.0\n\n## 5.0.6\n\n### Patch Changes\n\n- @tryabby/react@5.0.6\n\n## 5.0.5\n\n### Patch Changes\n\n- @tryabby/react@5.0.5\n\n## 5.0.4\n\n### Patch Changes\n\n- add esm packages\n- Updated dependencies\n  - @tryabby/react@5.0.4\n\n## 5.0.3\n\n### Patch Changes\n\n- @tryabby/react@5.0.3\n\n## 5.0.2\n\n### Patch Changes\n\n- @tryabby/react@5.0.2\n\n## 5.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n- Updated dependencies\n  - @tryabby/react@5.0.1\n\n## 5.0.0\n\n### Major Changes\n\n- add remote config\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@5.0.0\n\n## 4.1.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.2.0\n\n## 4.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.1.0\n\n## 4.0.1\n\n### Patch Changes\n\n- @tryabby/react@4.0.1\n\n## 4.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@4.0.0\n\n## 3.4.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.4.0\n\n## 3.3.1\n\n### Patch Changes\n\n- refactor shard package\n- Updated dependencies\n  - @tryabby/react@3.3.1\n\n## 3.3.0\n\n### Minor Changes\n\n- use new .com domain as abby url\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.3.0\n\n## 3.2.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.2.1\n\n## 3.2.0\n\n### Minor Changes\n\n- add option to force display the devtools even in non-dev environments\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.2.0\n\n## 3.1.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.2\n\n## 3.1.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.1\n\n## 3.1.0\n\n### Minor Changes\n\n- make devtools universal\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.1.0\n\n## 3.0.1\n\n### Patch Changes\n\n- add readme\n- Updated dependencies\n  - @tryabby/react@3.0.1\n\n## 3.0.0\n\n### Major Changes\n\n- add server side flag dev support\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@3.0.0\n\n## 2.4.3\n\n### Patch Changes\n\n- add getVariants to core\n- Updated dependencies\n  - @tryabby/react@2.3.3\n\n## 2.4.2\n\n### Patch Changes\n\n- add getVariants helper function\n- Updated dependencies\n  - @tryabby/react@2.3.2\n\n## 2.4.1\n\n### Patch Changes\n\n- add reset helper functions\n- Updated dependencies\n  - @tryabby/react@2.3.1\n\n## 2.4.0\n\n### Minor Changes\n\n- add edge/api function helpers and non-react a/b test function\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@2.3.0\n\n## 2.3.0\n\n### Minor Changes\n\n- add edge function compat\n\n## 2.2.2\n\n### Patch Changes\n\n- add request cache\n\n## 2.2.1\n\n### Patch Changes\n\n- @tryabby/react@2.2.1\n\n## 2.2.0\n\n### Minor Changes\n\n- extract DevTools\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@2.2.0\n\n## 1.9.0\n\n### Minor Changes\n\n- use \\_\\_abby to get featureFlagValues synchronously\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.12.0\n\n## 1.8.1\n\n### Patch Changes\n\n- make getFeatureFlagValue async\n- Updated dependencies\n  - @tryabby/react@1.11.1\n\n## 1.8.0\n\n### Minor Changes\n\n- revert AbbyProvider wrapping\n\n## 1.7.0\n\n### Minor Changes\n\n- add `getFeatureFlagValue` to next\n\n## 1.6.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.11.0\n\n## 1.6.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.10.0\n\n## 1.6.0\n\n### Minor Changes\n\n- disable events on localhost to prevent overflowing analytics\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.9.0\n\n## 1.5.0\n\n### Minor Changes\n\n- remove enviroments config options\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.8.0\n\n## 1.4.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.7.0\n\n## 1.4.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.6.0\n\n## 1.4.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.5.0\n\n## 1.4.1\n\n### Patch Changes\n\n- add devtools\n- Updated dependencies\n  - @tryabby/react@1.4.1\n\n## 1.4.0\n\n### Minor Changes\n\n- use core package\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.4.0\n\n## 1.3.10\n\n### Patch Changes\n\n- fix API calls\n- Updated dependencies\n  - @tryabby/react@1.3.6\n\n## 1.3.9\n\n### Patch Changes\n\n- fix API URL\n- Updated dependencies\n  - @tryabby/react@1.3.5\n\n## 1.3.8\n\n### Patch Changes\n\n- fix config types\n\n## 1.3.7\n\n### Patch Changes\n\n- fix types\n- Updated dependencies\n  - @tryabby/react@1.3.4\n\n## 1.3.6\n\n### Patch Changes\n\n- fix types\n\n## 1.3.5\n\n### Patch Changes\n\n- fix typings\n\n## 1.3.4\n\n### Patch Changes\n\n- fix types\n- Updated dependencies\n  - @tryabby/react@1.3.3\n\n## 1.3.3\n\n### Patch Changes\n\n- fix types\n\n## 1.3.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/react@1.3.2\n\n## 1.3.1\n\n### Patch Changes\n\n- fix base url\n- Updated dependencies\n  - @tryabby/react@1.3.1\n\n## 1.3.0\n\n### Minor Changes\n\n- 6df8a62: add feature flags\n\n### Patch Changes\n\n- fix typings\n- Updated dependencies\n- Updated dependencies [6df8a62]\n  - @tryabby/react@1.3.0\n"
  },
  {
    "path": "packages/remix/README.md",
    "content": "# @tryabby/remix\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                             | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                          | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application             | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests             | -                     |\n| flags              | `object` |          | An array containing your defined Feature Flags          | -                     |\n| settings           | `object` |          | An object with additional settings for Abby             | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: { \"test-flag\": \"Boolean\" },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValues`: Allows you to set a general default value for each flag type. The keys of the object represent the types of the flags.\n  The default value is the following:\n\n  ```json\n  {\n    \"Boolean\": false,\n    \"String\": \"\",\n    \"Number\": 0,\n    \"JSON\": {}\n  }\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the flag. This means if your flag is a `String` flag, this needs to be a `string`.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a react hook that used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `string`: The name of the test or flag, needs to be one of the defined tests.\n\n##### Return Values\n\n- `variant` : The variant of the test\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a react hook that used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nThe value of the flag _Type: `boolean`_\n\n#### AbbyProvider\n\nA react component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-react scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-react scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Return Values\n\nThe variant of the test.\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a higher order function to wrap the Devtools from [`@tryabby/devtools`](/devtools) for usage within Reacts.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### withAbby\n\nA higher-order component that enables Server Side Rendering within Next.js.\nIf you wrap your \\_app component with this, all occurances of `useFeatureFlag` will be SSR'd\n\n##### Example\n\n```jsx\n// _app.tsx (or _app.js)\nimport { withAbby } from \"lib/abby\";\n\nfunction MyApp({ Component, pageProps }) {\n  return <Component {...pageProps} />;\n}\n\nexport default withAbby(MyApp);\n```\n\n#### withAbbyEdge\n\nA higher-order function that can be wrapped around any vercel edge function (like the `middleware.ts`).\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour edge function\n\n##### Example\n\n```ts\n// middleware.ts\nimport { withAbbyEdge } from \"lib/abby\";\nimport { NextResponse } from \"next/server\";\n\nexport default withAbbyEdge((req) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    const res = NextResponse.redirect(\"/beta\");\n\n    // update the user's cookie\n    setCookie(res);\n    return res;\n  }\n\n  return NextResponse.next();\n});\n```\n\n#### withAbbyApiHandler\n\nA higher-order function that can be wrapped around any api route.\nIt will preload the data for the current user and pass it to the edge function.\n\n##### Parameters\n\nYour api route handler\n\n##### Example\n\n```ts\n// /api/test.ts\nimport { withAbbyApiHandler } from \"lib/abby\";\n\nexport default withAbbyApiHandler((req, res) => {\n  const myFlag = getFeatureFlagValue(\"test-flag\");\n\n  // make sure to use the req object here\n  const [currentVariant, setCookie] = getABTestValue(\"test-abtest\", req);\n\n  if (myFlag && currentVariant === \"beta-user\") {\n    // update the user's cookie\n    setCookie(res);\n    return res.status(200).end();\n  }\n\n  res.status(404).end();\n});\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n#### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n#### Example\n\n```tsx\nimport { getABResetFunction } from \"lib/abby\";\nimport { useRouter } from \"next/router\";\n\nexport default function SomePage() {\n  const router = useRouter();\n\n  const onReset = () => {\n    const resetCookie = getABResetFunction(\"SignupButton\");\n    resetCookie();\n    router.reload();\n  };\n\n  return (\n    <div>\n      <h1>Hello World</h1>\n      <button onClick={onReset}>Reset Cookie</button>\n    </div>\n  );\n}\n```\n"
  },
  {
    "path": "packages/remix/package.json",
    "content": "{\n  \"name\": \"@tryabby/remix\",\n  \"version\": \"3.0.1\",\n  \"description\": \"\",\n  \"main\": \"dist/index.js\",\n  \"files\": [\"dist\"],\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \".\": {\n    \"types\": \"./dist/index.d.ts\",\n    \"import\": \"./dist/index.mjs\",\n    \"require\": \"./dist/index.js\"\n  },\n  \"scripts\": {\n    \"build\": \"tsup src/index.tsx\",\n    \"dev\": \"pnpm run build --watch\",\n    \"test\": \"vitest\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"homepage\": \"https://docs.tryabby.com\",\n  \"devDependencies\": {\n    \"@remix-run/testing\": \"^2.9.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/react-hooks\": \"^8.0.1\",\n    \"@tryabby/core\": \"workspace:*\",\n    \"@types/react\": \"^18.0.26\",\n    \"@vitejs/plugin-react\": \"4.2.1\",\n    \"jsdom\": \"^20.0.3\",\n    \"msw\": \"^0.49.1\",\n    \"node-fetch\": \"^3.3.2\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"18.2.0\",\n    \"tsconfig\": \"workspace:*\",\n    \"tsup\": \"^6.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"peerDependencies\": {\n    \"@remix-run/node\": \">=2\",\n    \"@remix-run/react\": \">=2\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"dependencies\": {\n    \"@tryabby/react\": \"workspace:*\"\n  }\n}\n"
  },
  {
    "path": "packages/remix/src/cache.ts",
    "content": "export class PromiseCache<T> {\n  private ttl: number;\n  private cache: Map<string, { storedAt: number; value: Promise<T> }> =\n    new Map();\n\n  constructor(ttl = 1000 * 60) {\n    this.ttl = ttl;\n  }\n\n  public async get(key: string, fn: () => Promise<T>): Promise<T> {\n    const cached = this.cache.get(key);\n    if (cached && Date.now() - cached.storedAt < this.ttl) {\n      return cached.value;\n    }\n\n    const promise = fn();\n    this.cache.set(key, { value: promise, storedAt: Date.now() });\n    return promise;\n  }\n}\n"
  },
  {
    "path": "packages/remix/src/index.tsx",
    "content": "import { useMatches } from \"@remix-run/react\";\nimport {\n  type AbbyDataResponse,\n  HttpService,\n  type RemoteConfigValueString,\n  type ValidatorType,\n} from \"@tryabby/core\";\nimport {\n  type ABConfig,\n  type AbbyConfig,\n  createAbby as baseCreateAbby,\n  type withDevtoolsFunction,\n} from \"@tryabby/react\";\n\nconst ABBY_DATA_KEY = \"__ABBY_PROJECT_DATA__\";\n\nconst loaderCache = new PromiseCache<AbbyDataResponse | null>();\n\nimport type { PropsWithChildren } from \"react\";\nimport { PromiseCache } from \"./cache\";\n\nexport { defineConfig } from \"@tryabby/core\";\n\nexport function createAbby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n  const User extends Record<string, ValidatorType> = Record<\n    string,\n    ValidatorType\n  >,\n>(\n  config: AbbyConfig<\n    FlagName,\n    Tests,\n    string[],\n    RemoteConfigName,\n    RemoteConfig,\n    User\n  >\n) {\n  const {\n    AbbyProvider,\n    useAbby,\n    useFeatureFlag,\n    getFeatureFlagValue,\n    useRemoteConfig,\n    getRemoteConfig,\n    getABTestValue,\n    __abby__,\n    getVariants,\n    withDevtools,\n    useFeatureFlags,\n    useRemoteConfigVariables,\n    updateUserProperties,\n  } = baseCreateAbby<\n    FlagName,\n    TestName,\n    Tests,\n    RemoteConfig,\n    RemoteConfigName,\n    User\n  >(config);\n\n  const AbbyRemixProvider = ({ children }: PropsWithChildren) => {\n    const matches = useMatches();\n\n    let initialData: undefined | AbbyDataResponse = undefined;\n\n    matches.forEach((match) => {\n      if (\n        match.data &&\n        typeof match.data === \"object\" &&\n        ABBY_DATA_KEY in match.data &&\n        match.data[ABBY_DATA_KEY] != null\n      ) {\n        initialData = match.data[ABBY_DATA_KEY] as AbbyDataResponse;\n      }\n    });\n\n    return <AbbyProvider initialData={initialData}>{children}</AbbyProvider>;\n  };\n\n  /**\n   * Helper function to get Abby data from the server\n   * @param ctx - Remix context\n   * @returns - Abby data\n   */\n  const getAbbyData = async <C extends { request: Request }>(ctx: C) => {\n    const cookies = ctx.request.headers.get(\"Cookie\");\n\n    const data = await loaderCache.get(\n      [\n        config.projectId,\n        config.currentEnvironment,\n        config.__experimentalCdnUrl,\n        config.apiUrl,\n      ].join(\"-\"),\n      () =>\n        HttpService.getProjectData({\n          projectId: config.projectId,\n          environment: config.currentEnvironment,\n          __experimentalCdnUrl: config.__experimentalCdnUrl,\n          url: config.apiUrl,\n        })\n    );\n\n    if (data) {\n      __abby__.init(data);\n    }\n    if (cookies) {\n      __abby__.setLocalOverrides(cookies);\n    }\n\n    return {\n      [ABBY_DATA_KEY]: data,\n    };\n  };\n\n  return {\n    AbbyProvider: AbbyRemixProvider,\n    useAbby,\n    useFeatureFlag,\n    getFeatureFlagValue,\n    useRemoteConfig,\n    useFeatureFlags,\n    useRemoteConfigVariables,\n    getRemoteConfig,\n    __abby__,\n    getVariants,\n    withDevtools: withDevtools as withDevtoolsFunction,\n    getAbbyData,\n    getABTestValue,\n    updateUserProperties,\n  };\n}\n"
  },
  {
    "path": "packages/remix/tests/cache.test.ts",
    "content": "import { PromiseCache } from \"../src/cache\";\n\ndescribe(\"PromiseCache\", () => {\n  beforeEach(() => {\n    vi.useFakeTimers();\n  });\n  afterEach(() => {\n    vi.restoreAllMocks();\n  });\n\n  it(\"should cache the result of a function\", async () => {\n    const cache = new PromiseCache();\n    const fn = vi.fn(async () => 1);\n    let result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    // The function should not be called again\n    result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    expect(fn).toHaveBeenCalledTimes(1);\n  });\n\n  it(\"should not cache the result of a function if the ttl has expired\", async () => {\n    const cache = new PromiseCache(1000);\n    const fn = vi.fn(async () => 1);\n    let result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    // The function should not be called again\n    result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    // Fast forward 1 second\n    vi.advanceTimersByTime(1001);\n\n    result = await cache.get(\"test\", fn);\n    expect(result).toBe(1);\n\n    expect(fn).toHaveBeenCalledTimes(2);\n  });\n});\n"
  },
  {
    "path": "packages/remix/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL, type AbbyDataResponse } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n    {\n      name: \"flag2\",\n      value: false,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"remoteConfig1\",\n      value: \"FooBar\",\n    },\n  ],\n};\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/remix/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/remix/tests/setup.ts",
    "content": "/// @ts-ignore it doesn't have types\nimport matchers from \"@testing-library/jest-dom/matchers\";\nimport { cleanup } from \"@testing-library/react\";\nimport fetch from \"node-fetch\";\nimport { afterEach, expect } from \"vitest\";\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n// Reset any request handlers that we may add during the tests,\n// so they don't affect other tests.\nafterEach(() => server.resetHandlers());\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n\n// extends Vitest's expect method with methods from react-testing-library\nexpect.extend(matchers);\n\n// runs a cleanup after each test case (e.g. clearing jsdom)\nafterEach(() => {\n  cleanup();\n});\n"
  },
  {
    "path": "packages/remix/tests/ssr.test.tsx",
    "content": "import { json } from \"@remix-run/node\";\nimport { createRemixStub } from \"@remix-run/testing\";\nimport { render, screen, waitFor } from \"@testing-library/react\";\nimport { createAbby } from \"../src\";\n\ntest(\"renders loader data\", async () => {\n  const { AbbyProvider, useFeatureFlag, getAbbyData } = createAbby({\n    currentEnvironment: \"\",\n    environments: [],\n    projectId: \"123\",\n    flags: [\"flag1\", \"flag2\"],\n  });\n\n  function MyComponent() {\n    const flag1 = useFeatureFlag(\"flag1\");\n    const flag2 = useFeatureFlag(\"flag2\");\n    return (\n      <div>\n        <p>Flag 1 is {flag1 ? \"on\" : \"off\"}</p>\n        <p>Flag 2 is {flag2 ? \"on\" : \"off\"}</p>\n      </div>\n    );\n  }\n\n  const RemixStub = createRemixStub([\n    {\n      path: \"/\",\n      Component: () => (\n        <AbbyProvider>\n          <MyComponent />\n        </AbbyProvider>\n      ),\n      async loader(ctx) {\n        return json({ ...(await getAbbyData(ctx)) });\n      },\n    },\n  ]);\n\n  render(<RemixStub />);\n\n  await waitFor(() => screen.findByText(\"Flag 1 is on\"));\n  await waitFor(() => screen.findByText(\"Flag 2 is off\"));\n});\n"
  },
  {
    "path": "packages/remix/tests/types.test.tsx",
    "content": "import { renderHook } from \"@testing-library/react\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\n\nconst OLD_ENV = process.env;\n\nvi.mock(\"@remix-run/react\", () => ({\n  useMatches: () => [],\n}));\n\nbeforeEach(() => {\n  vi.resetModules(); // Most important - it clears the cache\n  process.env = { ...OLD_ENV }; // Make a copy\n});\n\nafterAll(() => {\n  process.env = OLD_ENV; // Restore old environment\n});\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct types\", () => {\n    const test2Variants = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ] as const;\n\n    const { AbbyProvider, useAbby } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"ONLY_ONE_VARIANT\"] },\n        test2: {\n          variants: test2Variants,\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: test1Result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    assertType<\"ONLY_ONE_VARIANT\">(test1Result.current.variant);\n\n    expect(test1Result.current.variant).toBeDefined();\n\n    const { result: test2Result } = renderHook(() => useAbby(\"test2\"), {\n      wrapper,\n    });\n\n    assertType<(typeof test2Variants)[number]>(test2Result.current.variant);\n\n    expect(test2Result.current.variant).toBeDefined();\n  });\n});\n\ndescribe(\"useFeatureFlag\", () => {\n  it(\"returns the correct types\", () => {\n    const { AbbyProvider, useFeatureFlag } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      flags: [\"test\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    renderHook(() => useFeatureFlag(\"test\"), {\n      wrapper,\n    });\n  });\n});\n\ndescribe(\"useRemoteConfig\", () => {\n  it(\"has the correct typings\", () => {\n    const { AbbyProvider, useRemoteConfig } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      remoteConfig: {\n        stringRc: \"String\",\n        numberRc: \"Number\",\n        jsonRc: \"JSON\",\n      },\n    });\n\n    expectTypeOf(useRemoteConfig)\n      .parameter(0)\n      .toEqualTypeOf<\"stringRc\" | \"numberRc\" | \"jsonRc\">();\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result: stringRcResult } = renderHook(\n      () => useRemoteConfig(\"stringRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: numberRcResult } = renderHook(\n      () => useRemoteConfig(\"numberRc\"),\n      {\n        wrapper,\n      }\n    );\n    const { result: jsonRcResult } = renderHook(\n      () => useRemoteConfig(\"jsonRc\"),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(stringRcResult.current).toEqualTypeOf<string>();\n    expectTypeOf(numberRcResult.current).toEqualTypeOf<number>();\n    expectTypeOf(jsonRcResult.current).toEqualTypeOf<Record<string, unknown>>();\n  });\n});\n"
  },
  {
    "path": "packages/remix/tests/useAbby.test.tsx",
    "content": "import { renderHook } from \"@testing-library/react\";\nimport type { PropsWithChildren } from \"react\";\nimport { createAbby } from \"../src\";\n\nvi.mock(\"@remix-run/react\", () => ({\n  useMatches: () => [],\n}));\n\ndescribe(\"useAbby\", () => {\n  it(\"returns the correct amount of options\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    expect(result.current.variant).toBeDefined();\n  });\n\n  it(\"has the correct types\", () => {\n    const { AbbyProvider, useAbby, useFeatureFlag } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n      flags: [\"flag1\"],\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    expectTypeOf(useAbby).parameter(0).toEqualTypeOf<\"test\" | \"test2\">();\n\n    const { result } = renderHook(() => useAbby(\"test\"), {\n      wrapper,\n    });\n\n    expectTypeOf(result.current.variant).toEqualTypeOf<\n      \"OldFooter\" | \"NewFooter\"\n    >();\n\n    expectTypeOf(useFeatureFlag).parameters.toEqualTypeOf<[\"flag1\"]>();\n\n    const { result: ffResult } = renderHook(() => useFeatureFlag(\"flag1\"), {\n      wrapper,\n    });\n\n    expectTypeOf(ffResult.current).toEqualTypeOf<boolean>();\n  });\n\n  it(\"uses lookup object when retrieving AB test variant\", () => {\n    const { getABTestValue } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      tests: {\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const lookupMap = {\n      SimonsText: \"a\",\n      MatthiasText: \"b\",\n      TomsText: \"c\",\n      TimsText: \"d\",\n    } as const;\n\n    const activeVariant = getABTestValue(\"test2\");\n    const value = getABTestValue(\"test2\", lookupMap);\n\n    expect(value).toBe(lookupMap[activeVariant]);\n  });\n\n  it(\"produces proper types with a lookup objects\", () => {\n    const { getABTestValue } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const activeVariant = getABTestValue(\"test\", {\n      A: \"Hello\",\n      B: \"Bonjour\",\n      C: \"Hola\",\n    } as const);\n\n    expectTypeOf(activeVariant).toEqualTypeOf<\"Hello\" | \"Bonjour\" | \"Hola\">();\n  });\n\n  it(\"produces proper types with a a lookup object in the hook\", () => {\n    const { AbbyProvider, useAbby } = createAbby({\n      currentEnvironment: \"\",\n      environments: [],\n      projectId: \"123\",\n      tests: {\n        test: {\n          variants: [\"A\", \"B\", \"C\"],\n        },\n      },\n    });\n\n    const wrapper = ({ children }: PropsWithChildren) => (\n      <AbbyProvider>{children}</AbbyProvider>\n    );\n\n    const { result } = renderHook(\n      () =>\n        useAbby(\"test\", {\n          A: \"Hello\",\n          B: \"Bonjour\",\n          C: \"Hola\",\n        }),\n      {\n        wrapper,\n      }\n    );\n\n    expectTypeOf(result.current.variant).toEqualTypeOf<\n      \"Hello\" | \"Bonjour\" | \"Hola\"\n    >();\n  });\n});\n"
  },
  {
    "path": "packages/remix/tsconfig.json",
    "content": "{\n    \"extends\": \"tsconfig/react-library.json\",\n    \"compilerOptions\": {\n        \"lib\": [\"ESNext\", \"DOM\"],\n        \"types\": [\"vitest/globals\"]\n    }\n}"
  },
  {
    "path": "packages/remix/tsup.config.ts",
    "content": "import { defineConfig } from \"tsup\";\n\nexport default defineConfig({\n  dts: true,\n  // we want to bundle the shared package because it's not published to npm\n  // it's hacky :)\n  noExternal: [\"shared/src/types\"],\n  clean: true,\n  format: [\"cjs\", \"esm\"],\n  sourcemap: true,\n  treeshake: true,\n});\n"
  },
  {
    "path": "packages/remix/vite.config.ts",
    "content": "/// <reference types=\"vitest\" />\n\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [react()],\n  test: {\n    globals: true,\n    environment: \"jsdom\",\n    setupFiles: \"./tests/setup.ts\",\n  },\n});\n"
  },
  {
    "path": "packages/svelte/.gitignore",
    "content": ".DS_Store\nnode_modules\n/build\n/dist\n/.svelte-kit\n/package\n.env\n.env.*\n!.env.example\nvite.config.js.timestamp-*\nvite.config.ts.timestamp-*\n"
  },
  {
    "path": "packages/svelte/CHANGELOG.md",
    "content": "# @tryabby/svelte\n\n## 3.0.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.1\n\n## 3.0.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@7.0.0\n\n## 3.0.0\n\n### Major Changes\n\n- use typescript 5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@6.0.0\n\n## 2.2.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.4.0\n\n## 2.2.1\n\n### Patch Changes\n\n- Updated dependencies [d05cb9a]\n  - @tryabby/core@5.3.1\n\n## 2.2.0\n\n### Minor Changes\n\n- 31d14b7: add cookie consent options\n\n### Patch Changes\n\n- Updated dependencies [31d14b7]\n  - @tryabby/core@5.3.0\n\n## 2.1.5\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.2.0\n\n## 2.1.4\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.4\n\n## 2.1.3\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.3\n\n## 2.1.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.2\n\n## 2.1.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.1\n\n## 2.1.0\n\n### Minor Changes\n\n- fix build\n\n## 2.0.2\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.1.0\n\n## 2.0.1\n\n### Patch Changes\n\n- add fallback values to remote config\n- Updated dependencies\n  - @tryabby/core@5.0.1\n\n## 2.0.0\n\n### Major Changes\n\n- add remote config\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@5.0.0\n\n## 1.2.0\n\n### Minor Changes\n\n- add lookup object to useAbby and ab test value function\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.2.0\n\n## 1.1.0\n\n### Minor Changes\n\n- add defineConfig helper to ease the usage with the cli\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.1.0\n\n## 1.0.1\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.1\n\n## 1.0.0\n\n### Major Changes\n\n- change feature flag behavior for multivariate flags\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@4.0.0\n\n## 0.2.0\n\n### Minor Changes\n\n- move shared package content to @tryabby/core\n\n### Patch Changes\n\n- Updated dependencies\n  - @tryabby/core@3.4.0\n\n## 0.1.1\n\n### Patch Changes\n\n- refactor shard package\n- Updated dependencies\n  - @tryabby/core@3.3.1\n\n## 0.1.0\n\n### Minor Changes\n\n- f2061e9:\n\n## 0.0.2\n\n### Patch Changes\n\n- init\n"
  },
  {
    "path": "packages/svelte/README.md",
    "content": "# @tryabby/svelte\n\n## createAbby\n\n### Parameters\n\nThe `createAbby` function takes an object as a parameter. The object can contain the following properties:\n\n| Name               | Type     | Required | Description                                             | details               |\n| ------------------ | -------- | :------: | ------------------------------------------------------- | --------------------- |\n| projectId          | `string` |    ✅    | The ID of your project in Abby                          | -                     |\n| apiUrl             | `string` |          | The URL of the Abby API. Defaults to the hosted version | -                     |\n| currentEnvironment | `string` |    ✅    | The current environment of your application             | [link](/environments) |\n| tests              | `object` |          | An object containing your defined A/B Tests             | -                     |\n| flags              | `object` |          | An array containing your defined Feature Flags          | -                     |\n| settings           | `object` |          | An object with additional settings for Abby             | -                     |\n\n#### tests\n\nThe tests property is an object containing your defined A/B Tests. You probably want to use the Copy Button in your dashboard to copy the tests object.\nThey keys of the object represent the names of your predefined A/B tests. The values are objects containing the following properties:\n\n| Name     | Type            | Required | Description                                             |\n| -------- | --------------- | :------: | ------------------------------------------------------- |\n| variants | `Array<string>` |    ✅    | An array of strings containing the variants of the test |\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  tests: {\n    \"test-abtest\": {\n      variants: [\"control\", \"variant-a\", \"variant-b\"],\n    },\n  },\n});\n```\n\n#### flags\n\nThe flags property is an array containing your defined Feature Flags. You probably want to use the Copy Button in your dashboard to copy the flags array.\n\n##### Example\n\n```ts\nconst abby = createAbby({\n  // ... your config\n  flags: { \"test-flag\": \"Boolean\" },\n});\n```\n\n#### settings\n\nThe settings property is an object containing additional settings for Abby. The following properties are available:\n\n- `flags.defaultValues`: Allows you to set a general default value for each flag type. The keys of the object represent the types of the flags.\n  The default value is the following:\n\n  ```json\n  {\n    \"Boolean\": false,\n    \"String\": \"\",\n    \"Number\": 0,\n    \"JSON\": {}\n  }\n  ```\n\n- `flags.devOverrides`: An object containing the values of feature flags in development mode. The keys of the object represent the names of the flags.\n  The values need to be of the type of the flag. This means if your flag is a `String` flag, this needs to be a `string`.\n\n### Return Values\n\n#### useAbby\n\n`useAbby` is a function providing acces to a store that is used to access the value of an A/B Test.\nRecurring users will always get the same value for a test.\nNew users will get a random value for a test depending on the defined weights\n\n##### Parameters\n\n- `string`: The name of the test or flag, needs to be one of the defined tests.\n\n##### Return Values\n\n- `variant` : Store providing the variant of the test\n\n- `onAct`: A function to call when the user performs an action associated with the test _Type: `function`_\n\n#### useFeatureFlag\n\n`useFeatureFlag` is a function providing acces to a store that is used to access the value of a Feature Flag.\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n##### Return Value\n\nA store providing the value of the flag _Type: `boolean`_\n\n#### AbbyProvider\n\nA svelte component to wrap your application.\n\n##### Props\n\n- `children`: The children of the component\n- `initialData (optional)`: The data (weights, tests, etc). If not provided, the data will be fetched on the client.\n\n#### getFeatureFlagValue\n\n`getFeatureFlagValue` is a function to access the value of a feature flag. This can be called in a non-svelte scope (Regular Typescript, Edge Functions and API Routes)\n\n##### Parameters\n\nThe name of the test or flag, needs to be one of the defined flags.\n\n#### getABTestValue\n\n`getABTestValue` is a function to access the users variant of an A/B Test. This can be called in a non-svelte scope.\nIf the user is new, a random variant will be generated based on the weights, persisted in a cookie and returned.\nOtherwise the variant will be read from the cookie and returned.\n\n##### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n\n##### Return Values\n\nThe variant of the test.\n\n#### \\_\\_abby\\_\\_\n\n`__abby__` is the Abby instance. It can be used to access the data of the current user.\nIn most cases you will not need to use this.\n\n#### withDevtools\n\n`withDevtools` is a function providing a svelte component to enable the Devtools. The Devtools need to be within the 'AbbyProvider'.\n\n##### Parameters\n\nThe Devtools component from `@tryabby/devtools`\n\n##### Example\n\n```jsx\nimport { AbbyDevTools } from \"@tryabby/devtools\";\nexport const AbbyDevtools = withDevtools(AbbyDevTools);\n```\n\n#### withAbby\n\nA function that enables Server Side Rendering within Sveltekit\nIf you use this in your layout.server.ts, all occurances of `useFeatureFlag` will be SSR'd.\n\n##### Example\n\n```ts\n// layout.server.ts\nimport { abby } from \"$lib/abby\";\n\nexport const load = abby.withAbby();\n```\n\n#### getABResetFunction\n\nThis is a function which returns a function that can be used to reset the stored variant for the current user.\nThis means the cookie will be deleted and the user will get a new variant on the next page load.\n\n#### Parameters\n\nThe name of the test, needs to be one of the defined tests.\n"
  },
  {
    "path": "packages/svelte/package.json",
    "content": "{\n  \"name\": \"@tryabby/svelte\",\n  \"version\": \"3.0.2\",\n  \"main\": \"dist/index.umd.cjs\",\n  \"homepage\": \"https://docs.tryabby.dev\",\n  \"type\": \"module\",\n  \"files\": [\"dist\"],\n  \"module\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"svelte\": \"./dist/index,js\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.umd.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\",\n    \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\",\n    \"check:watch\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch\",\n    \"test\": \"vitest\"\n  },\n  \"peerDependencies\": {\n    \"svelte\": \"^3.54.0\"\n  },\n  \"devDependencies\": {\n    \"@sveltejs/adapter-auto\": \"^2.0.1\",\n    \"@sveltejs/kit\": \"^1.15.8\",\n    \"@sveltejs/package\": \"^2.0.2\",\n    \"@sveltejs/vite-plugin-svelte\": \"^2.0.3\",\n    \"@testing-library/dom\": \"^9.2.0\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/svelte\": \"^3.2.2\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@tryabby/devtools\": \"workspace:*\",\n    \"@tsconfig/svelte\": \"^3.0.0\",\n    \"@types/jest\": \"^29.5.1\",\n    \"@types/js-cookie\": \"^3.0.3\",\n    \"@types/testing-library__jest-dom\": \"^5.14.5\",\n    \"@vitest/coverage-c8\": \"^0.33.0\",\n    \"jsdom\": \"^20.0.3\",\n    \"msw\": \"^0.49.3\",\n    \"node-fetch\": \"^3.3.1\",\n    \"prettier\": \"^2.8.8\",\n    \"prettier-plugin-svelte\": \"^2.10.0\",\n    \"publint\": \"^0.1.11\",\n    \"svelte\": \"^3.55.1\",\n    \"svelte-check\": \"^2.10.3\",\n    \"tslib\": \"^2.5.0\",\n    \"typescript\": \"5.5.4\",\n    \"vite\": \"5.4.0\",\n    \"vite-plugin-dts\": \"3.9.0\",\n    \"vitest\": \"2.0.5\"\n  },\n  \"dependencies\": {\n    \"@tryabby/core\": \"workspace:*\",\n    \"js-cookie\": \"^3.0.5\"\n  }\n}\n"
  },
  {
    "path": "packages/svelte/src/index.ts",
    "content": "// Reexport your entry components here\n\nexport { createAbby } from \"./lib/createAbby\";\nexport { type ABConfig, type AbbyConfig, defineConfig } from \"@tryabby/core\";\n"
  },
  {
    "path": "packages/svelte/src/lib/AbbyDevtools.svelte",
    "content": "<script lang=\"ts\">\n\timport { DevtoolsFactory, type AbbyDevtoolProps } from '@tryabby/devtools';\n\timport { onMount, tick } from 'svelte';\n\timport type { Abby } from '@tryabby/core';\n\texport let props: Omit<AbbyDevtoolProps, 'abby'>;\n\texport let abby: Abby<any, any, any>;\n\tonMount(async () => {\n\t\tawait tick();\n\t\tif (!props?.dangerouslyForceShow && process.env.NODE_ENV !== 'development') {\n\t\t\treturn;\n\t\t}\n\t\tconst factory = new DevtoolsFactory();\n\t\tfactory.create({ ...props, abby });\n\t});\n</script>\n"
  },
  {
    "path": "packages/svelte/src/lib/AbbyProvider.svelte",
    "content": "<script lang=\"ts\">\n\timport type { Abby } from '@tryabby/core';\n\n\texport let abby: Abby<any, any, any>;\n\timport type { AbbyDataResponse } from '@tryabby/core';\n\timport { onMount } from 'svelte';\n\n\texport let data: {\n\t\t__abby__data: AbbyDataResponse | null;\n\t\t__abby_cookie: string | null;\n\t} | null;\n\n\tonMount(async () => {\n\t\tif (data?.__abby__data) {\n\t\t\tabby.init(data.__abby__data);\n\t\t} else {\n\t\t\tawait abby.loadProjectData();\n\t\t}\n\t});\n\n\tif (typeof window === 'undefined' && data?.__abby__data !== undefined) {\n\t\tabby.init(data.__abby__data);\n\t\tabby.setLocalOverrides(data.__abby_cookie ?? '');\n\t}\n</script>\n\n<slot />\n"
  },
  {
    "path": "packages/svelte/src/lib/StorageService.ts",
    "content": "import {\n  type IStorageService,\n  getABStorageKey,\n  getFFStorageKey,\n  getRCStorageKey,\n} from \"@tryabby/core\";\nimport type { StorageServiceOptions } from \"@tryabby/core/dist/shared/interfaces\";\nimport Cookie from \"js-cookie\";\n\nclass ABStorageService implements IStorageService {\n  get(projectId: string, testName: string): string | null {\n    const retrievedValue = Cookie.get(getABStorageKey(projectId, testName));\n    if (!retrievedValue) return null;\n\n    return retrievedValue;\n  }\n\n  set(\n    projectId: string,\n    testName: string,\n    value: string,\n    options?: StorageServiceOptions\n  ): void {\n    Cookie.set(getABStorageKey(projectId, testName), value, {\n      expires: options?.expiresInDays ? options.expiresInDays : 365,\n    });\n  }\n  remove(projectId: string, testName: string): void {\n    Cookie.remove(getABStorageKey(projectId, testName));\n  }\n}\n\nclass FFStorageService implements IStorageService {\n  get(projectId: string, flagName: string): string | null {\n    const retrievedValue = Cookie.get(getFFStorageKey(projectId, flagName));\n    if (!retrievedValue) return null;\n\n    return retrievedValue;\n  }\n\n  set(projectId: string, flagName: string, value: string): void {\n    Cookie.set(getFFStorageKey(projectId, flagName), value);\n  }\n\n  remove(projectId: string, flagName: string): void {\n    Cookie.remove(getFFStorageKey(projectId, flagName));\n  }\n}\n\nclass RCStorageService implements IStorageService {\n  get(projectId: string, key: string): string {\n    const retrievedValue = Cookie.get(getRCStorageKey(projectId, key));\n    return retrievedValue ?? null;\n  }\n  set(projectId: string, key: string, value: string): void {\n    Cookie.set(getRCStorageKey(projectId, key), value);\n  }\n  remove(projectId: string, key: string): void {\n    Cookie.remove(getRCStorageKey(projectId, key));\n  }\n}\n\nexport const TestStorageService = new ABStorageService();\nexport const FlagStorageService = new FFStorageService();\nexport const RemoteConfigStorageService = new RCStorageService();\n"
  },
  {
    "path": "packages/svelte/src/lib/createAbby.ts",
    "content": "import {\n  type ABConfig,\n  Abby,\n  type AbbyConfig,\n  type RemoteConfigValueString,\n  type RemoteConfigValueStringToType,\n} from \"@tryabby/core\";\nimport { AbbyEventType, HttpService } from \"@tryabby/core\";\nimport { type Readable, derived } from \"svelte/store\";\nimport AbbyDevtools from \"./AbbyDevtools.svelte\";\nimport AbbyProvider from \"./AbbyProvider.svelte\";\n// import type { LayoutServerLoad, LayoutServerLoadEvent } from \"../routes/$types\"; TODO fix import\nimport {\n  FlagStorageService,\n  RemoteConfigStorageService,\n  TestStorageService,\n} from \"./StorageService\";\n\ntype ABTestReturnValue<Lookup, TestVariant> = Lookup extends undefined\n  ? TestVariant\n  : TestVariant extends keyof Lookup\n    ? Lookup[TestVariant]\n    : never;\n\nexport function createAbby<\n  const FlagName extends string,\n  const TestName extends string,\n  const Tests extends Record<TestName, ABConfig>,\n  const RemoteConfig extends Record<RemoteConfigName, RemoteConfigValueString>,\n  const RemoteConfigName extends Extract<keyof RemoteConfig, string>,\n>(\n  config: AbbyConfig<FlagName, Tests, string[], RemoteConfigName, RemoteConfig>\n) {\n  const abby = new Abby<\n    FlagName,\n    TestName,\n    Tests,\n    RemoteConfig,\n    RemoteConfigName\n  >(\n    config,\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return TestStorageService.get(config.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\") return;\n        TestStorageService.set(config.projectId, key, value);\n      },\n    },\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return FlagStorageService.get(config.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\") return;\n        FlagStorageService.set(config.projectId, key, value);\n      },\n    },\n    {\n      get: (key: string) => {\n        if (typeof window === \"undefined\") return null;\n        return RemoteConfigStorageService.get(config.projectId, key);\n      },\n      set: (key: string, value: any) => {\n        if (typeof window === \"undefined\") return;\n        RemoteConfigStorageService.set(config.projectId, key, value);\n      },\n    }\n  );\n\n  const abbyStore = derived(abby, (_$v) => {\n    return abby;\n  });\n\n  const notify = <N extends keyof Tests>(name: N, selectedVariant: string) => {\n    if (!name || !selectedVariant) return;\n    HttpService.sendData({\n      url: config.apiUrl,\n      type: AbbyEventType.PING,\n      data: {\n        projectId: config.projectId,\n        selectedVariant,\n        testName: name as string,\n      },\n    });\n  };\n\n  const useAbby = <\n    TestName extends keyof Tests,\n    TestVariant extends Tests[TestName][\"variants\"][number],\n    LookupValue,\n    const Lookup extends\n      | Record<TestVariant, LookupValue>\n      | undefined = undefined,\n  >(\n    testName: TestName,\n    lookupObject?: Lookup\n  ): {\n    variant: Readable<ABTestReturnValue<Lookup, TestVariant>>;\n    onAct: () => void;\n  } => {\n    let selectedVariant = \"\";\n    const variant = derived<any, ABTestReturnValue<Lookup, TestVariant>>(\n      abby,\n      (_$v) => {\n        selectedVariant = abby.getTestVariant(testName);\n        return lookupObject ? lookupObject[selectedVariant] : selectedVariant;\n      }\n    );\n\n    // ensure side effect is triggered\n    variant.subscribe(() => {});\n\n    const onAct = () => {\n      HttpService.sendData({\n        url: config.apiUrl,\n        type: AbbyEventType.ACT,\n        data: {\n          projectId: config.projectId,\n          selectedVariant,\n          testName: testName as string,\n        },\n      });\n    };\n    notify(testName, selectedVariant);\n\n    return { variant, onAct };\n  };\n\n  const getVariants = <T extends keyof Tests>(testName: T) => {\n    return derived<any, Readonly<string[]>>(abby, (_$v) => {\n      return abby.getVariants(testName);\n    });\n  };\n\n  /**\n   * helper function to reset an Ab Test\n   */\n  const getABResetFunction = <T extends keyof Tests>(testName: T) => {\n    return () => {\n      TestStorageService.remove(config.projectId, testName as string);\n    };\n  };\n\n  const getABTestValue = <\n    TestName extends keyof Tests,\n    TestVariant extends Tests[TestName][\"variants\"][number],\n    LookupValue,\n    const Lookup extends\n      | Record<TestVariant, LookupValue>\n      | undefined = undefined,\n  >(\n    testName: TestName,\n    lookupObject?: Lookup\n  ): ABTestReturnValue<Lookup, TestVariant> => {\n    const variant = abby.getTestVariant(testName);\n    // Typescript looses its typing here, so we cast as any in favor of having\n    // better type inference for the user\n    if (lookupObject === undefined) {\n      return variant as any;\n    }\n\n    return lookupObject[variant as keyof typeof lookupObject] as any;\n  };\n\n  const getFeatureFlagValue = (featureFlagName: FlagName) => {\n    return abby.getFeatureFlag(featureFlagName);\n  };\n\n  const useFeatureFlag = (flagName: FlagName) => {\n    return derived(abby, (_$v) => {\n      return abby.getFeatureFlag(flagName);\n    });\n  };\n\n  const getRemoteConfig = <\n    T extends RemoteConfigName,\n    Config extends RemoteConfig[T],\n  >(\n    remoteConfigName: T\n  ): RemoteConfigValueStringToType<Config> => {\n    return abby.getRemoteConfig(remoteConfigName);\n  };\n\n  const useRemoteConfig = <\n    T extends RemoteConfigName,\n    Config extends RemoteConfig[T],\n  >(\n    remoteConfigName: T\n  ): Readable<RemoteConfigValueStringToType<Config>> => {\n    return derived(abby, (_$v) => {\n      return abby.getRemoteConfig(remoteConfigName);\n    });\n  };\n\n  const withAbby = (handler?: any) => {\n    //TODO fix type import\n    return async (evt: any) => {\n      const data = await handler?.(evt);\n      const __abby__data = await HttpService.getProjectData({\n        url: config.apiUrl,\n        projectId: config.projectId,\n        environment: config.currentEnvironment,\n      });\n\n      return {\n        ...data,\n        __abby__data,\n        __abby_cookie: evt?.request.headers.get(\"cookie\"),\n      };\n    };\n  };\n\n  const withDevTools = () => {\n    return AbbyDevtools;\n  };\n\n  return {\n    useAbby,\n    useFeatureFlag,\n    getFeatureFlagValue,\n    getRemoteConfig,\n    useRemoteConfig,\n    getABTestValue,\n    __abby__: abby,\n    getABResetFunction,\n    getVariants,\n    abbyStore,\n    withAbby,\n    AbbyProvider,\n    withDevTools,\n  };\n}\n"
  },
  {
    "path": "packages/svelte/src/tests/abby.ts",
    "content": "import { createAbby } from \"../lib/createAbby\";\nexport const abby = createAbby({\n  environments: [],\n  projectId: \"123\",\n  currentEnvironment: process.env.NODE_ENV,\n  tests: {\n    \"New Test3\": {\n      variants: [\"A\", \"B\"],\n    },\n  },\n  flags: [\"flag1\"],\n  remoteConfig: {\n    remoteConfig1: \"String\",\n  },\n});\n"
  },
  {
    "path": "packages/svelte/src/tests/featureFlags.test.ts",
    "content": "import { get } from \"svelte/store\";\nimport { describe, expect, it } from \"vitest\";\nimport { createAbby } from \"../lib/createAbby\";\n\nconst _OLD_ENV = process.env;\n\ndescribe(\"featureFlags working\", () => {\n  it(\"should return the correct feature flags\", async () => {\n    const FLAG1 = \"flag1\";\n\n    const { useFeatureFlag, __abby__ } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      flags: [FLAG1],\n    });\n\n    // await server fetch\n    await __abby__.loadProjectData();\n\n    const recievedFlag1 = get(useFeatureFlag(FLAG1));\n    expect(recievedFlag1).toEqual(true);\n  });\n\n  it(\"should respect the default values for feature flags\", async () => {\n    const { useFeatureFlag, __abby__ } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\"],\n      currentEnvironment: \"a\",\n      settings: {\n        flags: {\n          defaultValue: false,\n        },\n      },\n    });\n    const flag1 = get(useFeatureFlag(\"flag1\"));\n    expect(flag1).toEqual(false);\n    // wait for the flag to be fetched\n    await __abby__.loadProjectData();\n    expect(get(useFeatureFlag(\"flag1\"))).toEqual(true);\n  });\n\n  it(\"uses the devOverrides\", () => {\n    process.env.NODE_ENV = \"development\";\n    const { useFeatureFlag } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\"],\n      currentEnvironment: \"a\",\n      settings: {\n        flags: {\n          devOverrides: {\n            flag1: false,\n          },\n        },\n      },\n    });\n    const flag1 = get(useFeatureFlag(\"flag1\"));\n    expect(flag1).toEqual(false);\n\n    // will stay false and won't be overwritten by a fetch\n    expect(get(useFeatureFlag(\"flag1\"))).toEqual(false);\n  });\n\n  it(\"gets the value for an enviroment\", async () => {\n    const { getFeatureFlagValue, __abby__ } = createAbby({\n      environments: [],\n      projectId: \"123\",\n      flags: [\"flag1\"],\n      currentEnvironment: \"a\",\n    });\n\n    // await server fetch\n    await __abby__.loadProjectData();\n\n    expect(getFeatureFlagValue(\"flag1\")).toEqual(true);\n  });\n});\n"
  },
  {
    "path": "packages/svelte/src/tests/mocks/handlers.ts",
    "content": "import { ABBY_BASE_URL, type AbbyDataResponse } from \"@tryabby/core\";\nimport { rest } from \"msw\";\n\nconst returnData: AbbyDataResponse = {\n  tests: [\n    {\n      name: \"test\",\n      weights: [1, 1, 1, 1],\n    },\n    {\n      name: \"test2\",\n      weights: [1, 0],\n    },\n  ],\n  flags: [\n    {\n      name: \"flag1\",\n      value: true,\n    },\n  ],\n  remoteConfig: [\n    {\n      name: \"remoteConfig1\",\n      value: \"FooBar\",\n    },\n  ],\n};\nexport const handlers = [\n  rest.get(\n    `${ABBY_BASE_URL}api/dashboard/:projectId/data`,\n    (_req, res, ctx) => {\n      return res(ctx.json(returnData));\n    }\n  ),\n  rest.get(`${ABBY_BASE_URL}api/v2/data/:projectId`, (_req, res, ctx) => {\n    return res(ctx.json(returnData));\n  }),\n];\n"
  },
  {
    "path": "packages/svelte/src/tests/mocks/server.ts",
    "content": "import { setupServer } from \"msw/node\";\nimport { handlers } from \"./handlers\";\n\n// This configures a request mocking server with the given request handlers.\nexport const server = setupServer(...handlers);\n"
  },
  {
    "path": "packages/svelte/src/tests/pages/+test.svelte",
    "content": "<script lang=\"ts\">\n  import { abby } from \"../abby\";\n  export let data: { __abby__data: any; __abby_cookie: any };\n  const { useFeatureFlag, AbbyProvider, useRemoteConfig } = abby;\n  const flag1 = useFeatureFlag(\"flag1\");\n  const remoteConfig1 = useRemoteConfig(\"remoteConfig1\");\n</script>\n\n<body>\n  <AbbyProvider abby={abby.__abby__} {data}>\n    {#if $flag1}\n      <div id=\"flag1Enabled\">my super secret feature 1</div>\n    {/if}\n\n    {#if $remoteConfig1 !== \"FooBar\"}\n      <div id=\"remoteConfig1\">my remoteConfig1 value</div>\n    {/if}\n  </AbbyProvider>\n</body>\n"
  },
  {
    "path": "packages/svelte/src/tests/remoteConfig.test.ts",
    "content": "import { get } from \"svelte/store\";\nimport { describe, expect, it } from \"vitest\";\nimport { createAbby } from \"../lib/createAbby\";\n\ndescribe(\"remoteConfig\", () => {\n  it(\"returns the correct remoteConfig value\", async () => {\n    const { useRemoteConfig, __abby__ } = createAbby({\n      projectId: \"123\",\n      remoteConfig: { remoteConfig1: \"String\" },\n      environments: [\"\"],\n      currentEnvironment: \"\",\n    });\n\n    await __abby__.loadProjectData();\n\n    const actual = get(useRemoteConfig(\"remoteConfig1\"));\n    expect(actual).toBe(\"FooBar\");\n  });\n\n  it(\"uses the default values for remoteConfig\", async () => {\n    const { useRemoteConfig, __abby__ } = createAbby({\n      projectId: \"123\",\n      remoteConfig: { remoteConfig1: \"String\" },\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      settings: {\n        remoteConfig: {\n          defaultValues: {\n            String: \"testDefaultValue\",\n          },\n        },\n      },\n    });\n\n    expect(get(useRemoteConfig(\"remoteConfig1\"))).toBe(\"testDefaultValue\");\n\n    await __abby__.loadProjectData();\n    expect(get(useRemoteConfig(\"remoteConfig1\"))).toBe(\"FooBar\");\n  });\n\n  it(\"uses the devOverrides\", async () => {\n    process.env.NODE_ENV = \"development\";\n    const { useRemoteConfig, __abby__ } = createAbby({\n      projectId: \"123\",\n      currentEnvironment: \"a\",\n      remoteConfig: { remoteConfig1: \"String\" },\n      environments: [],\n      settings: {\n        remoteConfig: {\n          devOverrides: {\n            remoteConfig1: \"devOverride\",\n          },\n        },\n      },\n    });\n\n    await __abby__.loadProjectData();\n    expect(get(useRemoteConfig(\"remoteConfig1\"))).toBe(\"devOverride\");\n  });\n});\n"
  },
  {
    "path": "packages/svelte/src/tests/setupTest.ts",
    "content": "import fetch from \"node-fetch\";\nimport { afterEach } from \"vitest\";\n/// @ts-ignore it doesn't have types\nimport { server } from \"./mocks/server\";\n\n/// @ts-ignore\nglobal.fetch = fetch;\n\n// Establish API mocking before all tests.\nbeforeAll(() => server.listen());\n\n// Clean up after the tests are finished.\nafterAll(() => server.close());\n\n// runs a cleanup after each test case (e.g. clearing jsdom)\nafterEach(() => {\n  // Reset any request handlers that we may add during the tests,\n  // so they don't affect other tests.\n  server.resetHandlers();\n});\n"
  },
  {
    "path": "packages/svelte/src/tests/useAbby.test.ts",
    "content": "import { AbbyEventType, HttpService } from \"@tryabby/core\";\n/// @ts-ignore it doesn't have types\nimport { get } from \"svelte/store\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { TestStorageService } from \"../lib/StorageService\";\nimport { createAbby } from \"../lib/createAbby\";\n\nconst _OLD_ENV = process.env;\n\ndescribe(\"useAbby working\", () => {\n  it(\"returns a valid variant\", () => {\n    const { useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"OldFooter\", \"NewFooter\"] },\n        test2: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n    const result = useAbby(\"test\");\n    expect(result.variant).toBeDefined();\n    expect(result.onAct).toBeDefined();\n  });\n\n  it(\"should use the persistedValue\", () => {\n    const persistedValue = \"SimonsText\";\n    const variants = [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"];\n\n    const getSpy = vi.spyOn(TestStorageService, \"get\");\n    const setSpy = vi.spyOn(TestStorageService, \"set\");\n\n    getSpy.mockReturnValue(persistedValue);\n    const { useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants },\n      },\n    });\n\n    const { variant } = useAbby(\"test\");\n    const result = get(variant);\n    // the stored value should not be overwritten\n    expect(setSpy).not.toHaveBeenCalled();\n    //the stored value should be accessed\n    expect(getSpy).toBeCalled();\n    // value set in localstorage\n    expect(result).toEqual(persistedValue);\n  });\n\n  it(\"should look up the return value\", () => {\n    const persistedValue = \"SimonsText\";\n    const variants = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ] as const;\n\n    const getSpy = vi.spyOn(TestStorageService, \"get\");\n\n    getSpy.mockReturnValue(persistedValue);\n    const { useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants },\n      },\n    });\n\n    const { variant } = useAbby(\"test\", {\n      SimonsText: \"a\",\n      MatthiasText: \"b\",\n      TomsText: \"c\",\n      TimsText: \"d\",\n    });\n    const result = get(variant);\n    expect(result).toBe(\"a\");\n  });\n\n  it(\"should ping the current info on mount\", () => {\n    const spy = vi.spyOn(HttpService, \"sendData\");\n    const { useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"A\", \"B\", \"C\"] },\n      },\n    });\n\n    useAbby(\"test\");\n\n    //onAct();\n    expect(spy).toHaveBeenCalledWith(\n      expect.objectContaining({ type: AbbyEventType.PING })\n    );\n  });\n\n  it(\"should notify the server with onAct\", () => {\n    const spy = vi.spyOn(HttpService, \"sendData\");\n    const { useAbby } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: { variants: [\"A\", \"B\", \"C\"] },\n      },\n    });\n\n    const { onAct } = useAbby(\"test\");\n\n    onAct();\n    expect(spy).toHaveBeenCalledWith(\n      expect.objectContaining({ type: AbbyEventType.PING })\n    );\n  });\n\n  it(\"returns the correct possible variant values\", async () => {\n    const expectedVariants: readonly string[] = [\n      \"SimonsText\",\n      \"MatthiasText\",\n      \"TomsText\",\n      \"TimsText\",\n    ];\n    const { getVariants } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        test: {\n          variants: expectedVariants,\n        },\n      },\n    });\n    const recievedVariants = get(getVariants(\"test\"));\n    expect(recievedVariants).toEqual(expectedVariants);\n  });\n\n  it(\"uses lookup object when retrieving variant\", async () => {\n    const { getABTestValue } = createAbby({\n      environments: [\"\"],\n      currentEnvironment: \"\",\n      projectId: \"123\",\n      tests: {\n        lookupTest: {\n          variants: [\"SimonsText\", \"MatthiasText\", \"TomsText\", \"TimsText\"],\n        },\n      },\n    });\n\n    const pickedVariant = getABTestValue(\"lookupTest\");\n    const lookupMap = {\n      SimonsText: 1,\n      MatthiasText: 2,\n      TomsText: 3,\n      TimsText: 4,\n    };\n\n    const value = getABTestValue(\"lookupTest\", lookupMap);\n    expect(value).toBe(lookupMap[pickedVariant]);\n  });\n});\n"
  },
  {
    "path": "packages/svelte/src/tests/withAbby.test.ts",
    "content": "import \"@testing-library/jest-dom\";\nimport { render, waitFor } from \"@testing-library/svelte\";\nimport { abby } from \"./abby\";\nimport testPage from \"./pages/+test.svelte\";\n\nimport { HttpService } from \"@tryabby/core\";\n\ndescribe(\"withabby working\", () => {\n  it(\"works properly\", async () => {\n    const data = await HttpService.getProjectData({\n      projectId: \"123\",\n    });\n    if (!data) throw new Error(\"\");\n    abby.__abby__.init(data);\n\n    const { getByText, queryByText } = render(testPage, {\n      props: {\n        data: {\n          __abby__data: data,\n          __abby_cookie: \"\",\n        },\n      },\n    });\n    const flag1 = await waitFor(() => getByText(\"my super secret feature 1\"));\n    expect(flag1).toBeInTheDocument();\n    const remoteConfig1 = queryByText(\"my remoteConfig1 value\");\n    expect(remoteConfig1).not.toBeInTheDocument();\n  });\n});\n"
  },
  {
    "path": "packages/svelte/svelte.config.js",
    "content": "import adapter from \"@sveltejs/adapter-auto\";\nimport { vitePreprocess } from \"@sveltejs/kit/vite\";\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n  // Consult https://kit.svelte.dev/docs/integrations#preprocessors\n  // for more information about preprocessors\n  preprocess: vitePreprocess(),\n\n  kit: {\n    // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.\n    // If your environment is not supported or you settled on a specific environment, switch out the adapter.\n    // See https://kit.svelte.dev/docs/adapters for more information about adapters.\n    adapter: adapter(),\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/svelte/tsconfig.json",
    "content": "{\n\t\"extends\": \"@tsconfig/svelte/tsconfig.json\",\n\t\"compilerOptions\": {\n\t\t\"target\": \"ESNext\",\n\t\t\"useDefineForClassFields\": true,\n\t\t\"module\": \"ESNext\",\n\t\t\"resolveJsonModule\": true,\n\t\t/**\n\t   * Typecheck JS in `.svelte` and `.js` files by default.\n\t   * Disable checkJs if you'd like to use dynamic types in JS.\n\t   * Note that setting allowJs false does not prevent the use\n\t   * of JS in `.svelte` files.\n\t   */\n\t\t\"allowJs\": true,\n\t\t\"checkJs\": true,\n\t\t\"isolatedModules\": true\n\t},\n\t\"include\": [\n\t\t\"src/**/*.d.ts\",\n\t\t\"src/**/*.ts\",\n\t\t\"src/**/*.js\",\n\t\t\"src/**/*.svelte\"\n\t],\n\t\"references\": [\n\t\t{\n\t\t\t\"path\": \"./tsconfig.node.json\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "packages/svelte/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/svelte/vite.config.ts",
    "content": "import { resolve } from \"node:path\";\n// vite.config.ts\nimport { svelte } from \"@sveltejs/vite-plugin-svelte\";\nimport type { UserConfig } from \"vite\";\nimport dts from \"vite-plugin-dts\";\nimport { type UserConfig as VitestConfig, configDefaults } from \"vitest/config\";\n\nconst config: UserConfig & { test: VitestConfig[\"test\"] } = {\n  build: {\n    lib: {\n      entry: [resolve(__dirname, \"src/index.ts\")],\n      name: \"abbySvelte\",\n      fileName: \"index\",\n    },\n    rollupOptions: {\n      external: [\"@tryabby/core\"],\n    },\n  },\n  plugins: [\n    svelte({\n      include: [\"src/**/*.svelte\"],\n      emitCss: false,\n    }),\n    dts({\n      entryRoot: resolve(__dirname, \"src\"),\n    }),\n  ],\n  define: {\n    // Eliminate in-source test code\n    \"import.meta.vitest\": \"undefined\",\n  },\n  test: {\n    // jest like globals\n    globals: true,\n    environment: \"jsdom\",\n    // in-source testing\n    includeSource: [\"src/**/*.{js,ts,svelte}\"],\n    // Add @testing-library/jest-dom matchers & mocks of SvelteKit modules\n    setupFiles: [\"./src/tests/setupTest.ts\"],\n    // Exclude files in c8\n    coverage: {\n      exclude: [\"setupTest.ts\"],\n    },\n    // Exclude playwright tests folder\n    exclude: [...configDefaults.exclude, \"tests\"],\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/tsconfig/README.md",
    "content": "# `tsconfig`\n\nThese are base shared `tsconfig.json`s from which all other `tsconfig.json`'s inherit from.\n"
  },
  {
    "path": "packages/tsconfig/angular-library.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Angular Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"lib\": [\"ES2022\", \"dom\"],\n    \"module\": \"ES2022\",\n    \"target\": \"ES2022\",\n    \"strictPropertyInitialization\": false,\n    \"experimentalDecorators\": true,\n    \"baseUrl\": \"./\",\n    \"outDir\": \"./dist/out-tsc\",\n    \"forceConsistentCasingInFileNames\": true,\n    \"strict\": true,\n    \"noImplicitOverride\": true,\n    \"noPropertyAccessFromIndexSignature\": true,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"downlevelIteration\": true,\n    \"moduleResolution\": \"node\",\n    \"importHelpers\": true,\n    \"useDefineForClassFields\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  },\n  \"types\": [\"node\"],\n  \"scripts\": {\n    \"postinstall\": \"ngcc\"\n  }\n}\n"
  },
  {
    "path": "packages/tsconfig/base.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Default\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true\n  },\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/tsconfig/nextjs.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"incremental\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\"\n  },\n  \"include\": [\"src\", \"next-env.d.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/tsconfig/package.json",
    "content": "{\n  \"name\": \"tsconfig\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"files\": [\n    \"base.json\",\n    \"nextjs.json\",\n    \"react-library.json\",\n    \"angular-library.json\"\n  ]\n}\n"
  },
  {
    "path": "packages/tsconfig/react-library.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"React Library\",\n  \"extends\": \"./base.json\",\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"ES2015\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"target\": \"es6\"\n  }\n}\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\n  - \"apps/*\"\n  - \"packages/*\"\n"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\", \"^db:generate\"],\n      \"outputs\": [\"dist/**\", \".next/**\"]\n    },\n    \"build:prod\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\".next/**\"]\n    },\n    \"test\": {\n      \"outputs\": [\"coverage/**\"]\n    },\n    \"lint\": {\n      \"outputs\": []\n    },\n    \"dev\": {\n      \"cache\": false\n    },\n    \"db:migrate\": {\n      \"cache\": false\n    },\n    \"db:generate\": {\n      \"cache\": false\n    }\n  },\n  \"globalEnv\": [\n    \"VERCEL_URL\",\n    \"PORT\",\n    \"NODE_ENV\",\n    \"VERCEL\",\n    \"VERCEL_ENV\",\n    \"NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY\",\n    \"ANALYZE\",\n    \"SKIP_ENV_VALIDATION\",\n    \"DATABASE_URL\",\n    \"NEXT_PUBLIC_STRIPE_STARTER_PLAN_PRICE_ID\",\n    \"NEXT_PUBLIC_STRIPE_PRO_PLAN_PRICE_ID\",\n    \"NEXT_PUBLIC_DISABLE_ANALYTICS\",\n    \"NEXT_PUBLIC_ABBY_PROJECT_ID\",\n    \"NEXT_PUBLIC_PLAUSIBLE_DOMAIN\",\n    \"DATABASE_URL\",\n    \"NODE_ENV\",\n    \"NEXTAUTH_SECRET\",\n    \"NEXTAUTH_URL\",\n    \"GITHUB_ID\",\n    \"GITHUB_SECRET\",\n    \"STRIPE_WEBHOOK_SECRET\",\n    \"STRIPE_SECRET_KEY\",\n    \"EMAIL_SERVER\",\n    \"LOGSNAG_API_KEY\",\n    \"REDIS_URL\",\n    \"ABBY_FROM_EMAIL\",\n    \"GITHUB_OAUTH_TOKEN\",\n    \"GOOGLE_CLIENT_ID\",\n    \"GOOGLE_CLIENT_SECRET\",\n    \"HASHING_SECRET\",\n    \"NEXT_RUNTIME\"\n  ]\n}\n"
  }
]